Skillnader mellan Python och Java

Relevanta dokument
Omprov 11/11. på förmiddagen.

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad Programmering (TDDC77)

Föreläsning 3-4 Innehåll

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

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

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

F4. programmeringsteknik och Matlab

Tentamen , Introduktion till Java, dtaa98, dtea53

Föreläsning 1 & 2 INTRODUKTION

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

OOP Objekt-orienterad programmering

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

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

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

SMD 134 Objektorienterad programmering

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

OOP Objekt-orienterad programmering

Klassdeklaration. Metoddeklaration. Parameteröverföring

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

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

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

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

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

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

TENTAMEN OOP

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 3: Booleans, if, switch

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

Objektorienterad Programmering (TDDC77)

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

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

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

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

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

Del A (obligatorisk för alla)

(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

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

Typkonvertering. Java versus C

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

Tentamen OOP

Objektorienterad programmering i Java

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 2, vecka 8: Repetition

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.

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

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 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

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

Objektorienterad Programmering (TDDC77)

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

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

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

Föreläsning REPETITION & EXTENTA

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

Föreläsning 1 & 2 INTRODUKTION

TDDC77 Objektorienterad Programmering

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

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

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

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

TDIU01 - Programmering i C++, grundkurs

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

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

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

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

OOP Objekt-orienterad programmering

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

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

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

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

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

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?

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

OOP Objekt-orienterad programmering

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Instuderingsfrågor, del D

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.

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

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

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

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

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

Erfarenheter från labben

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Tentamen , Grundläggande programmering i Java

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

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

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

PROGRAMMERING-Java Omtentamina

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Arrayer. results

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

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

Transkript:

Java Utvecklat på SUN Microsystems mitten 1990-talet Ursprungligen för Webprogram Nu mycket spritt Massor med läroböcker Vi använder Lewis&Loftus http://javasuncom/javase/6/docs/api/

Skillnader mellan Python och Java Viktigast: Java har statisk typning Alla variabler, metoder etc ska deklareras och ges en fix typ Typen får inte ändras under programmets gång Python Java - int a; def siffersum(n) int siffersum(int n)

En typ kan vara: inbyggd typ namn på en klass int boolean float char String Ball array av ovanstående int[] String[]

fallgropar true och false med små bokstäver char har enstaka tecken omslutn av String har textsträngar omslutna av Javas arrayer påminner om Matlabs, och är mycket olika Pythons listor Pythons listor och dictionaries saknas helt i Java

Allt har en typ Typ ska anges: Varje gång en variabel introduceras För varje attribut till en klass För varje metod: resultattyp och parametrars typer

variabel/attribut: Deklareras genom att skriva typens namn följt av variabelns namn int a; Ball b; Obs! semikolon avslutar alla satser, liksom i Matlab int a = 1; float b = 253; Får i samband med deklarationen ges ett initialvärde

Arraydeklarationer int[] a; a = new int[5]; int[] a = new int[5]; a ska vara av typ array of int, ännu inte bestämt hur lång a blir ett arrayobjekt som tar 5 stycken int, a[0]a[4] (inledningsvis är elementen odefinierade) kombinerar ovanstående int [] a = {5,18,22,0,3; Deklarerar, skapar och initierar i ett drag! int [] [] c; c är en tvådimensionell array Elementet på plats i,j noteras c[i][j]

Metoddeklaration Resultattypen skrivs före metodnamnet För varje formell parameter skrivs dess typ före parameterns namn Inget self! Python: def checkpos(self,ball,pos) boolean checkpos(ball ball, Position pos) En metod som inte returnerar något får void istället för en typ: void runsimulation()

Allt i Java är klasser med sina metoder Det finns inget huvudprogram Det finns inga funktioner - alla sådana måste vara metoder till någon klass Python Java def move(self, pos): <metodkropp> void move(position pos) { <metodkropp> Typdeklarera resultat och parametrar Inget kolon metodkroppen inom krullparanteser {

Blockstruktur Python Kommandon avslutas med ny rad Block av kommandon anges genom indragning Viktiga inledningar av block följs av kolon Java Kommandon avslutas med semikolon, ; Block av kommandon anges genom att innesluta dem i krullparanteser, { Java använder inte kolon alls

Python if a>b: c = 0 a += 1 b = a Java if (a>b) { c = 0; a += 1; b = a;

Indragningar och radbrott är betydelselösa if (a>b) { c = 0; a += 1; b = a; if (a>b) { c = 0; a += 1; b = a; Alla dessa är samma! if (a>b) {c =0; a += 1; b = a; if (a>b) {c=0;a += 1;b = a; Fortsätt att använda indragningar och radbrott för att öka läsbarheten!

Statiskt 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 (a>b) { int a; Här inne kan a användas Här ute kan a inte användas

Tilldelning Python Java a = 0 b = c/(d+1) c += 2 a = 0; b = c/(d+1); c += 2; I Java finns dessutom a++; kortform för a+=1;

if Python if a>b: d = 2 elif a<b: d = 1 e = 0 else: d = 0 Java if (a>b) d = 2; else if (a<b) { d = 1; e = 0; else d = 0; Paranteser runt villkor obligatoriska elif heter else if Inga kolon Glöm inte semikolon efter kommandon

while Python while a>b: d = 2+a a -= 1 Java while (a>b) { d = 2+a; a--; Paranteser runt villkor obligatoriska Inga kolon Glöm inte krullparanteser om loopen består av flera kommandon, och semikolon efter kommandon

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

while (villkor) { loopkropp do { loopkropp while (villkor); loopkropp loopvillkor loopvillkor loopkropp

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

for i Java for (initiering; villkor; update) { loopkropp 1 initiering görs en gång Den innehåller ofta deklaration av loopräknare 2 Så länge villkor är sant, gör loopkropp 3 Efter varje gång loopkropp gjorts, gör också update

for (initiering; villkor; update) { loopkropp initiering update villkor loopkropp

int sum = 0; for (int i=0; i<10; i++) { sum += i*i

Klassdeklaration Python Java class Ball(): class Ball { def init (self,x): Ball(x) { Inga paranteser eller kolon Glöm inte krullparanteser! Konstruktormetoden heter samma som klassnamnet och ges aldrig någon typ

Instansiering Python Java theball = Ball(25) theball = new Ball(25); Det speciella ordet new signalerar att ett nytt objekt ska konstrueras Att använda attribut och metoder sker exakt likadant, med punktnotation

import Python import Tkinter from Tkinter import Frame from Tkinter import * Java import javaxswing import javaxswingjframe import javaxswing* Inget from, utan använd punktnotation istället

Modifiers Extra egenskaper kan anges i samband med en deklaration Skrivs före typen public Detta kan användas även utanför den fil där deklarationen står static final Detta förknippas med klassen och inte med klassens objekt Detta är en konstant som inte får tilldelas nytt värde

final int SIZE = 600; public static float arcsin(float x) {

Output Python print Hej Java Systemoutprintln ( Hej ); finns också: Systemoutprint() (utan radbyte)

Input import javautilscanner; Scanner scan = new Scanner(Systemin); Python: a = scannextline(); i = scannextint(); a = raw_input() i = input()

Ett fullständigt program Fil Prog: public class Prog class klass1 class klass2 En serie klassdefinitioner varav precis en är public Denna kallas programmets huvudklass och måste ha samma namn som filen den ligger i Obs! inget huvudprogram som i Python

main När ett program körs börjar det alltid med metoden main() i huvudklassen Huvudklassen måste alltså ha en sådan metod För main() gäller: Den ska kunna anropas utifrån, dvs vara public Den ska höra till själva huvudklassen och inte till något av dess objekt, dvs vara static Den ska inte returnera något värde, dvs i stället för resultattyp har den void Den ska som parameter ha en array av String

public class MyMainProg { public static void main(string[] args) { Det som står här kommer att köras när MyMainProg körs

Exempel //******************************************************************** // GasMileagejava Author: Lewis/Loftus // // Demonstrates the use of the Scanner class to read numeric data //******************************************************************** import javautilscanner; 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 (Systemin); Python: Systemoutprint ("Enter the number of miles: "); miles = scannextint(); miles = input( Enter the number of miles ) Systemoutprint ("Enter the gallons of fuel used: "); gallons = scannextdouble(); gallons = input( Enter the gallons of fuel used ) mpg = miles / gallons; mpg = miles / gallons Systemoutprintln ("Miles Per Gallon: " + mpg); print Miles Per Gallon, mpg

import javatextdecimalformat; import javautilscanner; public class Average { //----------------------------------------------------------------- // Computes the average of a set of values entered by the user // The running sum is printed as the numbers are entered //----------------------------------------------------------------- public static void main (String[] args) { int sum = 0, value, count = 0; double average; sum = count = 0 Scanner scan = new Scanner (Systemin); Systemoutprint ("Enter an integer (0 to quit): "); value = scannextint(); while (value!= 0) // sentinel value of 0 to terminate loop { count++; sum += value; Systemoutprintln ("The sum so far is " + sum); value = input ( Enter an integer (0) to quit ) while value!= 0: count += 1 sum += value print The sum so far is, sum Systemoutprint ("Enter an integer (0 to quit): "); value = scannextint(); value = input ( Enter an integer ) Systemoutprintln (); if (count == 0) Systemoutprintln ("No values were entered"); else { average = (double)sum / count; Systemoutprintln ("The average is " + average); if count == 0: print No values were entered ) else: average = float(sum) / count print The average is, average

mport javautilscanner; ublic class PalindromeTester //----------------------------------------------------------------- // Tests strings to see if they are palindromes //----------------------------------------------------------------- public static void main (String[] args) { String str, another = "y"; another = y int left, right; Scanner scan = new Scanner (Systemin); while (anotherequalsignorecase("y")) // allows y or Y { Systemoutprintln ("Enter a potential palindrome:"); str = scannextline(); left = 0; right = strlength() - 1; while (strcharat(left) == strcharat(right) && left < right) { left++; right--; while another == y or another == Y : str = raw_input( Enter a potential palindrome ) left = 0 right = len(str)-1 while str[left] == str[right] and left < right: left += 1 right -= 1 Systemoutprintln(); if (left < right) Systemoutprintln ("That string is NOT a palindrome"); else Systemoutprintln ("That string IS a palindrome"); if left < right: print That string is NOT a palindrome else: print That string IS a palindrome Systemoutprintln(); Systemoutprint ("Test another palindrome (y/n)? "); another = scannextline(); another = raw_input( Test another palindrome (y/n?

NetBeans http://wwwnetbeansorg/

Inför labben Ny partner, som alltid Läs L&L 21 26, 31-36, 51-58, 71-72 Provkör netbeans med något enkelt, tex http://testwwwnetbeansorg/kb/docs/java/quickstarthtml