IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Like dokumenter
Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Fra Python til Java, del 2

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

Forelesning inf Java 4

UNIVERSITETET I OSLO

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

INF1000 (Uke 4) Mer om forgreninger, While-løkker

INF Løsning på seminaropppgaver til uke 8

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker

Eksempel 1 Eksempel 2 Dramatisering. INF1000 uke 3. Sundvollen 7. september 2015 Dag Langmyhr. INF1000 Sundvollen

INF1000 : Forelesning 4

Eksempel: Body Mass Index (BMI)

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Tre måter å lese fra terminal.

Praktisk informasjon. I dag. Repetisjon: While-løkker. INF1000 (Uke 5) Mer om løkker, arrayer og metoder

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag

UNIVERSITETET I OSLO

INF2100. Oppgaver 26. september til 1. oktober 2007

Programmeringsspråket C

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

Blokker og metoder INF1000 (Uke 6) Metoder

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Velkommen til. INF våren 2016

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

INF1000 : Forelesning 1 (del 2)

Eksempel: Body Mass Index (BMI) Forelesning inf Java 3. Ferdig program (første del) Ferdig program (siste del)

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator

UNIVERSITETET I OSLO

Praktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut

Seminaroppgaver IN1010, uke 2

Forelesning inf Java 5

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Forelesning inf Java 5

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Java-kurs. Andreas Knudsen Nils Grimsmo 9th October 2003

Forelesning inf Java 3

Løse reelle problemer

Læreboken på 45 minutter

Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder

Java 4. Mer om easyio Mer om forgreninger Løkker. 7. september 2004

Innhold. INF1000 Høst Klasser og objekter. Uke 7: Mer objektorientert programmering Siri Moe Jensen

som jobbet nærmest døgnet rundt i 18 måneder i Menlo Park i California for å forberede den neste bølgen innen computing.

Litt Java-historikk. Litt Java-historikk. Ulike varianter for ulike behov. Litt Java-historikk. The Green Team

IN 211 Programmeringsspråk. Java. på 20 enkle ark. spesielt for de som kan. Simula. (og gjerne litt C) Ark 1 av 20

INF våren 2017

INF1000: Forelesning 4. Mer om arrayer Metoder

UNIVERSITETET I OSLO

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

Jentetreff INF1000 Debugging i Java

Feilmeldinger, brukerinput og kontrollflyt

IN våren 2019 Onsdag 16. januar

INF1000 : Forelesning 3

IN våren 2018 Tirsdag 16. januar

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Tuva Kristine Thoresen

INF Notat om I/O i Java

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Blokker. Uke 4, INF 1000, 13 sept Løkker og arrayer. Eksempel. Deklarasjoner inne i blokker. Institutt for Informatikk Universitet i Oslo

Body Mass Index (BMI) INF1000 : Forelesning 3. Ferdig program (forts.) Ferdig program

Enkel lesing og skriving i Java

Løsningsforslag ukeoppg. 2: 31. aug - 6. sep (INF Høst 2011)

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

INF1000 oppgaver til uke 38 (17 sep 23 sep)

for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print(i*j); System.out.println();

Mer objektorientert programmering

INF1000 Uke 4. Innlesning fra terminal. Uttrykk og presedens. Oversikt

AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1

Forelesning inf Java 1

Programmering Høst 2017

Forelesning inf Java 3

Innlesning fra tastatur med easyio. INF1000 høst Vi må først skrive i toppen av programmet: import easyio.*;

INF 1010, vår 2005 Løsningsforslag uke 11

INF1010 våren 2018 tirsdag 23. januar

I dag. Rep: Oppsummering - variabler. Rep: Datatyper. INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger

INF1000: noen avsluttende ord

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

Oversikt. INF1000 Uke 3. Repetisjon Program. Repetisjon Program. Litt repetisjon Program Variabler og Uttrykk Presedens Matematiske funksjoner

Leksjon 7. Filer og unntak

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Teste om to tekster er like. Inf1000 uke 6 26.sept Alfabetisk ordning. Inneholder en tekst en annen? Litt om tekster Metoder

UNIVERSITETET I OSLO

INF1000 (Uke 6) Mer om metoder, tekster

UNIVERSITETET I OSLO

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Transkript:

IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no

Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler Klasser (i morgen ved Stein Gjessing)

Det finnes ikke bare ett programmeringsspråk 10 000-er av programmeringsspråk Hvorfor finnes det så mange? Det finnes mange ulike behov; f eks Nye behov oppstår Python bash Excel SQL I dag kan vi lage bedre programmeringsspråk enn for 50 år siden

Hver mann sitt programmeringsspråk Ikke veldig vanskelig Om dere programmerer en del og tar emnene INF2100 Prosjektoppgave i programmering INF3110 Programmeringsspråk INF5110 Kompilatorteknikk kan dere lage deres eget programmeringsspråk. Mitt forsøk: Knod Syntax_expression: { parts: [1]; width: { w: 0.max( @ #.parts:.width() ); #.parts.n().>(1): w. +(.h_sep. (2))?; w; ; height: { #.parts[1].height() ; depth: { #.parts.n().=(1): #.parts[1].depth() True: #.parts[1].depth(). +( @ #.parts[2..]:.height().+(.depth()) ). +(#.parts.n().--(). (2,.v_sep))? ;

Hvorfor lager man et programmeringsspråk? Hvorfor finnes Python? Python ble opprinnelig laget i 1989 som et hobbyprosjekt av Guido van Rossum med denne filosofien: Beautiful is better than ugly Explicit is better than implicit Simple is better than complex Complex is better than complicated Readability counts Hvorfor ble Java laget? Java ble laget i 1996 av James Gosling og andre i SUN Microsystems (nå kjøpt av Oracle) med følgende mål: It must be simple, object-oriented, and familiar. It must be robust and secure. It must be architecture-neutral and portable. It must execute with high performance. It must be interpreted, threaded, and dynamic.

Hvis noen er interessert i hva jeg mener... Min personlige mening Python er best til nybegynneropplæring korte, enkle programmer jeg trenger nå kopling mot nyttige programpakker i kjemi, fysikk, matematikk,... Java er best til objektorientert programmering store programmer trygge programmer raske programmer

Tilordning og uttrykk Noe er helt likt Uttrykk Uttrykk er svært like i de to språkene: Python Java 2 + v*(t+1) 2 * 3.1416 * r 2 + v*(t+1) 2 * 3.1416 * r Tilordning Tilordning (dvs gi en variabel en verdi) er også likt: Python Java n = 2 + v*(t+1) omkr = 2 * 3.1416 * r n = 2 + v*(t+1) omkr = 2 * 3.1416 * r

Innrykk vs krøllparenteser Noe ser anderledes ut men er egentlig likt I Java brukes krøllparenteser ({) i stedet for innrykk. Alle Java-setninger avsluttes med semikolon (;). Python if-tester Java if v < 0: v = -v if (v < 0) { v = -v; Linjeskift og innrykk betyr altså ikke noe i et Java-program: if (v < 0) { v = -v; if ( v< 0) { v = - v;

Innrykk vs krøllparenteser Python If-tester kan ha flere alternativer: if x < 0: f = -1 elif x == 0: f = 0 else: f = 1 Legg merke til: Java if (x < 0) { f = -1; else if (x == 0) { f = 0; else { f = 1; Java har parenteser rundt if-testen (i stedet for kolon etter) Java har ingen elif men i stedet er det mulig å skrive else if

Innrykk vs krøllparenteser Krøllparenteser brukes alle steder der Python krever innrykk, også i while- og for-løkker: Python Java while x <= 255: total = total + x x = 2 * x for i in range(1,10): sum = sum + i Legg også merke til: while (x <= 255) { total = total + x; x = 2 * x; for (int i = 1; i < 10; i++) { sum = sum + i; For-løkkene skrives ganske anderledes i Java enn i Python

Hvordan man kan skrive ut noe Utskrift I java finnes to metoder for utskrift: System.out.print skriver ut parameteren; hvis det er flere elementer, må de skjøtes sammen med +. System.out.println gjør det samme, men setter på et linjeskift. Python r = 2.0 v = 3.1416 * r * r print("r = "+str(r),end="") print(" gir areal "+str(v)) Java double r = 2.0; double v = 3.1416 * r * r; System.out.print("r = " + r); System.out.println(" gir areal " + v);

Java er gjennomført objektorientert Innpakning I Java må alt ligge i klasser class MinKlasse { : Metoden main starter det hele, og den må alltid deklareres som public static void main(string[] arg) class Hei { public static void main(string[] arg) { System.out.println("Hei!");

Hvordan får vi det hele i gang? Kjøring I Java brukes to programmer: javac oversetter.java-filen til én eller flere.class-filer. java utfører.class-filen(e) $ javac Hei.java $ java Hei Hei! $ class Hei { public static void main(string[] arg) { System.out.println("Hei!");

Dynamisk vs statisk typing Angivelse av variabeltype Python har dynamisk typing der verdiene har en gitt type; derfor kan variblene tilordnes verdier av ulike typer. Java har statisk typing der både variablene og verdiene har type; variabler kan bare få verdier av den riktige typen. Derfor: I Java må alle variabler deklareres. Python Java i = 5 v = 2.5 v = v + i s = "Svaret er " print(s+str(v)) int i = 5; double v = 2.5; v = v + i; String s = "Svaret er"; System.out.println(s + " " + v);

Java har mange typer å velge blant Javas typer De viktigste typene i Java er: int heltall (dvs 0, 1, 2, 3,... ) double flyt-tall (dvs 0.0, 1.5, 22.7, 3.14,... ) boolean logisk verdi (dvs true og false) char enkelttegn (dvs a, b,?, 5,... ) I tillegg finnes klassen String tekst (dvs "x", "abcd", "Hei!",... )

Finn medianen (dvs det midterste) av tre tall def finnmedian(a): return sorted(a)[1] data = [0] * 3 leser = open("tall.data") for i in range(3): data[i] = int(leser.readline()) print("medianen er " + str(finnmedian(data))) import java.io.file; import java.util.arrays; import java.util.scanner; class Median { private static int finnmedian(int[] a) { Arrays.sort(a); return a[1]; public static void main(string[] arg) throws Exception { int[] data = new int[3]; Scanner leser = new Scanner(new File("tall.data")); for (int i = 0; i < 3; i++) { data[i] = Integer.parseInt(leser.nextLine()); System.out.println("Medianen er " + finnmedian(data));

Det er litt jobb å lære seg et nytt programmeringsspråk Konklusjon Det finnes ikke noe beste språk for alle formål! Det er en styrke å kunne flere språk Alle informatikere må regne med å lære flere språk Det er egentlig bare én måte å lære et nytt programmeringsspråk: 1 les dokumentasjonen 2 prøv selv med mange eksempler 3 om ikke alt fungerer som forventet, gjenta.