Omprov 11/11. på förmiddagen.

Relevanta dokument
Skillnader mellan Python och Java

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

(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

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

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

F4. programmeringsteknik och Matlab

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

OOP Objekt-orienterad programmering

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

SMD 134 Objektorienterad programmering

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 8: Exempel och problemlösning

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

OOP Objekt-orienterad programmering

TDIU01 - Programmering i C++, grundkurs

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

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

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

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Objektorienterad Programmering (TDDC77)

Programmering A. Johan Eliasson

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

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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering

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

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

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

Objektorienterad Programmering (TDDC77)

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.

Typkonvertering. Java versus C

Erfarenheter från labben

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

Föreläsning REPETITION & EXTENTA

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

Objektorienterad Programmering (TDDC77)

Instuderingsfrågor, del D

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

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

Föreläsning 6: Metoder och fält (arrays)

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

Tentamen , Introduktion till Java, dtaa98, dtea53

OOP Objekt-orienterad programmering

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Föreläsning 1 & 2 INTRODUKTION

TDDC77 Objektorienterad Programmering

tentaplugg.nu av studenter för studenter

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

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

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

Föreläsning 10. Pekare (Pointers)

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

Övning2. Variabler. Data typer

Föreläsning 3-4 Innehåll

Funktioner. Linda Mannila

TDDE10 TDDE11, 725G90. Gemensam kurswebsida på:

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

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

Tentamen ID1004 Objektorienterad programmering April 7, 2015

F7 - Arrayer. ID1004 Objektorienterad programmering Fredrik Kilander

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

Parameteröverföring. Exempel. Exempel. Metodkropp

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Anteckningar 1: Grundläggande saker

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Java, klasser, objekt (Skansholm: Kapitel 2)

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

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

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

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

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Föreläsning 2, vecka 8: Repetition

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

OOP Objekt-orienterad programmering

Objektorienterad programmering i Java

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

Classes och Interfaces, Objects och References, Initialization

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

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

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

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Transkript:

Omprov 11/11 på förmiddagen

Vad kommer sedan?

Översättning Du har ätit upp Vill du ha godis nu? Nej, tack Jag är mätt Nej, tack Jag är full

Översättning Du har ätit upp Vill du ha godis nu? Nej, tack Jag är mätt Nej, tack Jag är full

Översättning Du har ätit upp Vill du ha godis nu? Nej, tack Jag är mätt Nej, tack Jag är full

Nästa labb Ganska mycket inläsning Detaljerade sidhänvisningar Labbuppgifterna ganska enkla Enskilt!

Java Utvecklat på SUN Microsystems (nu köpta av Oracle), på mitten av 1990-talet Slog ursprungligen igenom för Webprogram Är nu mycket spritt Massor med läroböcker Vi använder Horstmann Finns som öppen källkod

Java ett språk Imperativt Ett program specificerar hur något ska utföras Precis som i Python! Objektorienterat Program byggs upp av objekt (tillstånd + beteende) och deras klasser (typdefinitioner av objekt) Också som i Python! (Men mer strikt) Statiskt typat Variabler och metoder har av programmeraren statiskt definierade typer (int, double, String etc) Python är istället dynamiskt typat

Java ett språk Imperativt (Det här kan ni!) Ett program specificerar hur något ska utföras Precis som i Python! Objektorienterat Program byggs upp av objekt (tillstånd + beteende) och deras klasser (typdefinitioner av objekt) Också som i Python! (Men mer strikt) Statiskt typat Variabler och metoder har av programmeraren statiskt definierade typer (int, double, String etc) Python är istället dynamiskt typat

Java ett språk Imperativt (Det här kan ni!) Ett program specificerar hur något ska utföras Precis som i Python! Objektorienterat (Främst nästa vecka och senare) Program byggs upp av objekt (tillstånd + beteende) och deras klasser (typdefinitioner av objekt) Också som i Python! (Men mer strikt) Statiskt typat Variabler och metoder har av programmeraren statiskt definierade typer (int, double, String etc) Python är istället dynamiskt typat

Java ett språk Imperativt (Det här kan ni!) Ett program specificerar hur något ska utföras Precis som i Python! Objektorienterat (Främst nästa föreläsning och senare) Program byggs upp av objekt (tillstånd + beteende) och deras klasser (typdefinitioner av objekt) Också som i Python! (Men mer strikt) Statiskt typat (Denna vecka) Variabler och metoder har av programmeraren statiskt definierade typer (int, double, String etc) Python är istället dynamiskt typat

Java en miljö Java översätts (i regel) inte direkt till maskinkod, utan till en mellanform som körs på en virtuell maskin, en Java Virtual Machine (JVM)

Java en miljö Java översätts (i regel) inte direkt till maskinkod, utan till en mellanform som körs på en virtuell maskin, en Java Virtual Machine (JVM) http://docsoraclecom/javase/6/docs/api/

In In get t kö era stö rn kt d in iv fö g r Java en miljö Vi använder Java SE 6 via IDEn Netbeans

Output

Output Python print Hello world

Output Python print Hello world Java Systemoutprintln( Hello world );

Output Python print Hello world Java Systemoutprintln( Hello world ); Finns också utan radbryte: Systemoutprint()

Output Python print Hello world Java Systemoutprintln( Hello world ); Finns också utan radbryte: Systemoutprint() Tips: Skriv sout<tab> för att få Netbeans att generera Systemoutprintln( );

Java ett språk Imperativt Ett program specificerar hur något ska utföras Precis som i Python! Objektorienterat Program byggs upp av objekt (tillstånd + beteende) och deras klasser (typdefinitioner av objekt) Också som i Python! (Men mer strikt) Statiskt typat Variabler och metoder har av programmeraren statiskt definierade typer (int, double, String etc) Python är istället dynamiskt typat

Kort om objekt och klasser (i Pythonsyntax) Exempel på objekt: Varje objekt har en klass: [1,2,3] hejsan list str

Kort om objekt och klasser (i Pythonsyntax) Exempel på objekt: [1,2,3] hejsan Varje objekt har en klass: list str Varje objekt har ett tillstånd (tex innehåller 1,2,3) Klassen anger de möjliga tillstånden

Kort om objekt och klasser (i Pythonsyntax) Exempel på objekt: [1,2,3] hejsan Varje objekt har en klass: list str Varje objekt har ett tillstånd (tex innehåller 1,2,3) Klassen anger de möjliga tillstånden Varje objekt har beteenden, implementerade i metoder Klassen anger metoderna Ex alla listor har sort() och insert()

Objektorientering (mer nästa vecka!) I objektorienterade språk (tex Python och Java) finns inbyggt stöd för att skriva egna klasser I Python görs det när programmeraren vill I Java måste all kod ligga i klasser Varje Javaprogram måste ha minst en klass

Programstruktur Python Java def f(): def g(): huvudprogram class A metod f() metod g() metod main() class B metod h

Programstruktur Python Pythonprogrammet börjar på första raden def f(): def g(): huvudprogram Java class A metod f() metod g() metod main() class B metod h

Programstruktur Python Pythonprogrammet börjar på första raden def f(): def g(): huvudprogram Java class A metod f() Javaprogrammet börjar i metoden main() i metod g() den klass (A) som angetts som huvudklass metod main() class B metod h

Java ett språk Imperativt Ett program specificerar hur något ska utföras Precis som i Python! Objektorienterat Program byggs upp av objekt (tillstånd + beteende) och deras klasser (typdefinitioner av objekt) Också som i Python! (Men mer strikt) Statiskt typat Variabler och metoder har av programmeraren statiskt definierade typer (int, double, String etc) Python är istället dynamiskt typat

Typer Alla värden har en typ, tex (med Javatyper): 42 314 hej int double String

Typer Alla värden har en typ, tex (med Javatyper): 42 314 hej int double String En variabel har samma typ som sitt värde: x = 42 s = hej x har typen int s har typen String

Dynamisk vs statisk typning Python har dynamisk typning: Variablers typ bestäms vid körning x = 15 y = 271828 x = ny typ! Java har statisk typning: Variablers typ bestäms när de deklareras int x; double y; x och y deklareras och ges typerna int och double x = 15; y = 271828; x = ny typ! ; Typfel!

Dynamisk vs statisk typning Python har dynamisk typning: Variablers typ bestäms vid körning x har nu typen int x = 15 y = 271828 x = ny typ! Java har statisk typning: Variablers typ bestäms när de deklareras int x; double y; x och y deklareras och ges typerna int och double x = 15; y = 271828; x = ny typ! ; Typfel!

Dynamisk vs statisk typning Python har dynamisk typning: Variablers typ bestäms vid körning x har nu typen int x = 15 y = 271828 x = ny typ! y har nu typen float Java har statisk typning: Variablers typ bestäms när de deklareras int x; double y; x och y deklareras och ges typerna int och double x = 15; y = 271828; x = ny typ! ; Typfel!

Dynamisk vs statisk typning Python har dynamisk typning: Variablers typ bestäms vid körning x har nu typen int x = 15 y = 271828 x = ny typ! y har nu typen float x har nu typen str Java har statisk typning: Variablers typ bestäms när de deklareras int x; double y; x och y deklareras och ges typerna int och double x = 15; y = 271828; x = ny typ! ; Typfel!

Dynamisk vs statisk typning Python har dynamisk typning: Variablers typ bestäms vid körning x har nu typen int x = 15 y = 271828 x = ny typ! y har nu typen float x har nu typen str Java har statisk typning: Variablers typ bestäms när de deklareras int x; double y; x och y deklareras och ges typerna int och double x = 15; y = 271828; x = ny typ! ; Typfel!

Dynamisk vs statisk typning Python har dynamisk typning: Variablers typ bestäms vid körning x har nu typen int x = 15 y = 271828 x = ny typ! y har nu typen float x har nu typen str Java har statisk typning: Variablers typ bestäms när de deklareras int x; double y; x och y deklareras och ges typerna int och double x = 15; y = 271828; x = ny typ! ; Typfel!

Typcheckning def sum_and_square(a, b): return (a+b) ** 2 When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck x = 42 y = 13 z = sum_and_square(x, y) print z z = sum_and_square(04, y) print z z = sum_and_square(x, hej ) print z

Typcheckning def sum_and_square(a, b): return (a+b) ** 2 >>> 3025 17956 Traceback (most recent call last): File "<input>", line 1, in <module> File "<input>", line 2, in sum_and_square TypeError: unsupported operand type(s) for +: 'int' and 'str' x = 42 y = 13 z = sum_and_square(x, y) print z z = sum_and_square(04, y) print z z = sum_and_square(x, hej ) print z

Typcheckning def sum_and_square(a, b): return (a+b) ** 2 >>> 3025 17956 Traceback (most recent call last): File "<input>", line 1, in <module> File "<input>", line 2, in sum_and_square TypeError: unsupported operand type(s) for +: 'int' and 'str' x = 42 y = 13 z = sum_and_square(x, y) print z z = sum_and_square(04, y) print z z = sum_and_square(x, hej ) print z

Typcheckning def sum_and_square(a, b): return (a+b) ** 2 >>> 3025 17956 Traceback (most recent call last): File "<input>", line 1, in <module> File "<input>", line 2, in sum_and_square TypeError: unsupported operand type(s) for +: 'int' and 'str' x = 42 y = 13 z = sum_and_square(x, y) print z z = sum_and_square(04, y) print z z = sum_and_square(x, hej ) print z

Typcheckning public class MyClassName { static int sumandsquare(int a, int b) { return (a+b) * (a+b); } public static void main(string[] args) { int x = 42; int y = 13; int z = sumandsquare(x, y); Systemoutprintln(z); z = sumandsquare(04, y); Systemoutprintln(z); } } z = sumandsquare(x, hej ); Systemoutprintln(z);

Typcheckning public class MyClassName { static int sumandsquare(int a, int b) { return (a+b) * (a+b); } public static void main(string[] args) { int x = 42; int y = 13; int z = sumandsquare(x, y); Systemoutprintln(z); z = sumandsquare(04, y); Systemoutprintln(z); } } z = sumandsquare(x, hej ); Systemoutprintln(z);

Vad finns det för typer? Primitiva typer Namn på en klasser int boolean float char byte double short long String (mer nästa vecka)

Vad finns det för typer? Array av ovanstående int[] String[] Javas arrayer är ganska lika Matlabs men ganska olika Pythonlistorna Metoder som append() etc finns inte En Javas array har en fix längd Alla element måste ha samma typ

Variabeldeklaration Typens namn följt av variabelns namn int height; String message; OBS! ; avslutar alla satser, liksom i Matlab int height = 1; String message = Welcome! ; Med ett initialvärde height = 3; Tilldelning skapar ingen ny variabel Kräver att variabeln redan är deklarerad

Arraydeklaration int[] a; a = new int[5]; Variabeln a är av typen array of int, ännu inte bestämt hur lång a blir ett arrayobjekt som innehåller 5 stycken int, a[0]a[4] (inledningsvis är värdet på alla elementen 0) int[] a = new int[5]; Kombinerar ovanstående på en rad

Arraydeklaration int[] a = {5,18,22,0,3}; int[][] c; Deklarerar, skapar och initierar i ett drag! c är en tvådimensionell array (En array av int arrayer) Elementet på plats i,j noteras c[i][j]

Översättning IF and

Python if a>b and b>0: d = 2 elif a<b: d = 1 e = 0 else: d = 0 if Java if (a>b && b>0) d = 2; else if (a<b) { d = 1; e = 0; } else d = 0;

Python if if a>b and b>0: d = 2 elif a<b: elif heter else d = 1 e = 0 else: d = 0 Java Parenteser runt villkor obligatoriska if if (a>b && b>0) d = 2; else if (a<b) { d = 1; e = 0; } else d = 0; Krullparenteser valfria vid enkel rad (Men använd dem ändå!) and och or heter && och (Varning! Inte & och )

while Python Java while a>b: d = 2+a a += 1 while (a>b) { d = 2+a; a++; } Tips: x+=1 och x-=1 skrivs smidigt som x++ (eller ++x) och x-- (eller --x) i Java

do-while Python Java Finns inte! do { d = 2+a; a--; } while (a<b); Som while, men kollar loopvillkoret i slutet av loopkroppen

for Python Java for elem in balls: for (Ball elem : balls) { } for i in range(20): for (int i=0; i<20; i++) { }

for Python Java for elem in balls: for (Ball elem : balls) { } for i in range(20): for (int i=0; i<20; i++) { } Java har två olika for-loopar!

for (initiering; villkor; update) { loopkropp } är bara ett smidigt sätt att skriva initiering; while (villkor) { loopkropp update; }

Ok, nu kodar jag! Nästan där! I Java måste koden vara i en metod Hur kan man skriva metoder?

Metoddeklaration 1) Resultattypen 2) Metodnamnet 3) (parameterns_typ parameterns_namn) Python: def matches(pattern, word) Java: boolean matches(string pattern, String word)

Metoddeklaration Resultattypen => Metod inte returnerar något? Metodnamnet (parameterns_typ parameterns_namn) Python: def printfile() Java: Vi skriver void void printfile()

Vilken får ett annorlunda resultat? if (a>b) { c = 0; a += 1; } b = a; if (a>b) {c =0; a += 1;} b = a; if (a>b) { c = 0; a += 1; } b = a; Alla dessa har Samma betydelse if (a>b) {c=0;a += 1;}b = a;

Vilken får ett annorlunda resultat? if (a>b) { c = 0; a += 1; } b = a; if (a>b) {c =0; a += 1;} b = a; if (a>b) { c = 0; a += 1; } b = a; Alla dessa har Samma betydelse if (a>b) {c=0;a += 1;}b = a;

Vilken får ett annorlunda resultat? if (a>b) { c = 0; a += 1; } b = a; if (a>b) {c =0; a += 1;} b = a; if (a>b) { c = 0; a += 1; } b = a; Alla dessa har Samma betydelse if (a>b) {c=0;a += 1;}b = a; Fortsätt att använda indragningar och radbrott för att öka läsbarheten!

Let's code! A botanist plants a number of seeds in 6 different fields, to analyze the flowers each plant will have This kind of seed can grow any number of flowers, including none However, there is a bug plague: some plants die because of this, and no flowers grow Given the results of flowers per planted field, how do we calculate 1) how many alive plants are in total 2) how many plants died?

Scope För varje deklaration är det väldefinierat för vilket område av koden den gäller Ex: Deklaration av en variabel har räckvidden resten av det kodblocket, alltså det som avgränsas av { } if (c>b) { int a; Här inne kan a användas } Här ute kan a inte användas

Modifiers Extra egenskaper kan anges i samband med en deklaration Skrivs före typen Exempelvis: public static Detta kan användas även utanför den fil där deklarationen står Detta förknippas enbart med klassen och inte med klassens objekt

References https://wwwflickrcom/photos/oskay/47209 7903 By Windell Oskay, licence https://creativecommonsorg/licenses/by/20 /legalcode http://wwwgeographorguk/photo/2485390 Copyright Richard Smith, reuse under this Creative Commons Licence ( http://creativecommonsorg/licenses/by-sa/2 0/ )