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

Relevanta dokument
Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

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

Omdirigering. Omdirigering

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

Input. Programmering. Andra källor

Typkonvertering. Java versus C

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

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

Recap Mera om nya typer Kort Fält. Programmering. Sommarkurs Verónica Gaspes. IDE-sektionen.

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

Påminnelse: en datatyp för bilder. Programmering. En datatyp för bilder. Spegelbild. hh.se/db2004

Tentamen , Introduktion till Java, dtaa98, dtea53

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

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

TDDC77 Objektorienterad Programmering

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

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

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

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

Tentamen FYTA11 Javaprogrammering

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

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

Den som bara har en hammare tror att alla problem är spikar

SMD 134 Objektorienterad programmering

Chapter 3: Using Classes and Objects

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

Objektorienterad Programmering (TDDC77)

Tentamen , Grundläggande programmering i Java

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

(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

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

OOP Objekt-orienterad programmering

Föreläsning REPETITION & EXTENTA

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

Del A (obligatorisk för alla)

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)

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Instuderingsfrågor, del D

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Algoritmer. Två gränssnitt

Objektorienterad Programmering (TDDC77)

OOP Objekt-orienterad programmering

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

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

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

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

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

OOP Objekt-orienterad programmering

Anteckningar 1: Grundläggande saker

Tentamen OOP

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

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

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION

D0010E. Hello world! Nedräkning. Sågtand. Övningsuppgifter i Eclipse. Skapa ett program som skriver ut "Hello world" på skärmen.

TENTAMEN OOP

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

OOP Objekt-orienterad programmering

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

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

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

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

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

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

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

OOP Objekt-orienterad programmering

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

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

JAVAUTVECKLING LEKTION 8

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

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.

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Mattias Enervall (Övningsassistent) Examination. 1 Skriftlig tentamen (betyg)

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

F4. programmeringsteknik och Matlab

Modern Programmering (2546) Tentamen lördag

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

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

Föreläsnings 9 - Exceptions, I/O

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Daniel Petersson (Labassistent) Examination. 1 Skriftlig tentamen (betyg)

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

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

Tentamen i Algoritmer & Datastrukturer i Java

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Tentamen, EDAA10 Programmering i Java

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

Undervisning. Examination

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

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

TENTAMEN OOP

Transkript:

Programmering hh.se/db2004 Föreläsning 5: Fält samt Input/Output Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Lite mer om Javas stöd för fält Hur många element har ett fält? Till exempel cmdln i main(string[] cmdln){... cmdln.length ger svaret! Center for Research on Embedded Systems IDE-sektionen 1 / 1 2 / 1 Exempel: vad är det största talet? Kodfragment Vi måste titta på alla element i kommandoraden men vi vill inte ändra programmet för olika antal värden! public static void main(string[] cmdln){ int max; for(int i = 0 ; i< cmdln.length ; i++){? System.out.println(max); Exempel: vad är det största talet? Hur kan vi tänka? Om vi hela tiden ser mer och mer av fältet kan vi komma ihåg det största talet vi har sett hittills! Det vi vet (antecknar, kommer ihåg) är maxvärdet av den delen av fältet vi redan har sett! När vi ser ett element till måste vi vara beredda att uppdatera maxvärdet! När vi har sett hela fältet har vi maxvärdet av hela fältet! Vad är startvärdet? Här finns det olika alternativ! Om vi bara tillåter positiva tal, är alla större än 0, så vi kan börja med 0! Om vi tillåter godtyckliga heltal, är alla större än Integer.MIN VALUE. Vi kan även börja med första elementet! 3 / 1 4 / 1

Exempel: vad är det största talet? Att ommöblera ett fält Kodfragment public static void main(string[] cmdln){ int max = Integer.MIN_VALUE; int val; for(int i = 0 ; i<cmdln.length; i++){ val = Integer.parseInt(cmdLn[i]); if(max<val){ max = val; System.out.println(max); Byt plats mellan fältelement på ett slumpartat sätt. Kodfragment for (int i = 0; i < a.length; i++){ r = i + (int) (Math.random() * (a.length-i)); t = a[i]; a[i] = a[r]; a[r] = t; 5 / 1 6 / 1 Ett användbart bibliotek Input/Output Arrays Ett bibliotek med standardfunktioner som hanterar fält. Arrays är som Math var för reella tal. Ett utdrag ur Arrays Arrays.binarySearch(int[] a, int x) Arrays.binarySearch(double[] a, double x) Arrays.sort(int[] a) Arrays.sort(double[] a) Programmet och datorn (Nu) Vi kan generera massvis med utdata! Programmet och datorn Vi vill även använda massvis med indata och använda andra möjligheter hos datorn. 7 / 1 8 / 1

Kommandoraden Standard output Sammanfattning Alla klasser har en metod main() som tar ett fält av strängar som argument. Fältet består av de kommandoradsargument vi skriver. Dessa förmedlas till Java av operativsystemet. Det är en konvention att både OS och Java hanterar dessa argument som strängar. Om vi vill betrakta ett argument som ett tal måste vi använda metoder som Integer.parseInt() för att konvertera argumentet. Sammanfattning För att skriva ut värden från Java-program använder vi System.out.println() och System.out.print(). Java skickar dessa värden till en ström av tecken känd som standard output. Operativsystemet brukar koppla standard output till terminalen. I Unix kan vi dirigera om standard output till en fil med >. 9 / 1 10 / 1 Ett exempel Flera möjligheter Experiment med tärningkast public class Dice{ public static void main(string[] cmdln){ int samplesize = Integer.parseInt(cmdLn[0]); int dice; for(int i = 0;i<sampleSize; i++){ dice = (int)(math.random()*6)+1; System.out.print(dice+" "); Standard input kommer att låta oss skriva program som interagerar med användaren genom tangentbordet. Man kan även dirigera om standard input så att programmet läser in från en fil. Program kan då hantera större mängder data. Små experiment % java Dice 10 6 2 3 4 2 4 5 6 3 4 Stora experiment % java Dice 10000 > dice10000 11 / 1 12 / 1

Flera möjligheter Flera möjligheter Standard audio kan användas för att spela upp och manipulera ljudfiler. Vi kommer att kunna spela.wav-filer, kunna skriva program som hanterar fält av double samt läsa och skriva dem i.wav-filer. Standard draw kan användas för att presentera utdata i grafisk form och även för enkla animeringar. 13 / 1 14 / 1 Standard Input StdIn I Java finns ett bibliotek som heter Scanner. Vi börjar med bokens anpassning av denna som heter StdIn som är lättare att använda. Vi tar Javas om ett par veckor när vi talar om objekt och ickestatiska metoder. 1 Standard input tas, by default, från tangentbordet (som ekas i terminalen) 2 Från standard input kan man ge input till programmet medan den exekverar. 3 I unix (linux, mac, solaris) är det möjligt att dirigera om standard input så att man kan använda en fil. Kort beskrivning av StdIn Biblioteket stödjer en abstrakt ström av data som kan vara tom eller kan innehålla en följd av värden åtskilda med mellanslag. Varje värde kan vara en sträng eller ett värde av en av Javas primitiva typer. Programmet konsumerar värdena när det läser in dem. När programmet har läst ett värde kan det inte backa och läsa det igen. 15 / 1 16 / 1

StdIn Exempel I API (Application Programming Interface) boolean isempty() true om inga fler värden, false annars int readint() läs ett värde av typ int double readdouble() läs ett värde av typ double long readlong() läs ett värde av typ long boolean readboolean() läs ett värde av typ boolean char readchar() läs ett värde av typ char String readstring() läs ett värde av typ String String readline() läs resten av raden String readall() läs resten av texten Läs N från kommandoraden och sedan läs N heltalsvärden från standard input och skriv ut deras summa. Kod public class AddInts { public static void main(string[] cmdln) { int n = Integer.parseInt(cmdLn[0]); int sum = 0; for (int i = 0; i < n; i++){ sum = sum + StdIn.readInt(); System.out.println("Sum is " + sum); 17 / 1 18 / 1 Om dataströmmen standard in När man anropar java gör man tre saker 1 begär att programmet skall börja köra 2 anger värden för kommandoradsargumenten 3 börjar definiera dataströmmen standard in Den följd av tecken man anger i terminalen efter kommandoraden är standardinputströmmen. Man interagerar med programmet som väntar på att man skall ge strömmen av tal. 19 / 1 Exempel II Interagera med programanvändaren för att hon skall gissa vilket tal datorn har tänkt på. public static void main(string[] cmdln) { int n = 1 + (int) (Math.random() * 1000000); System.out.print("I m thinking of a number "); System.out.println("between 1 and 1,000,000"); int m = 0; while (m!= n) { System.out.print("What s your guess? "); m = StdIn.readInt(); if (m == n) System.out.println("You win!"); if (m < n) System.out.println("Too low "); if (m > n) System.out.println("Too high"); 20 / 1

Quiz Omdirigering Hur många gissningar behöver Du? Hur skulle Du skriva programmet för att gissa det tal som användaren har tänkt på? I unix kan man dirigera om standard input på samma sätt som man kunde dirigera om standard output. Medelvärdet av slumptal Vi har 2 program: en som genererar slumptal till standard output och en som räknar medelvärdet av värden inmatade via standard input. Vi kan kombinera dem genom stray.hh.se% java RandomNumbers 10000 > manynumbers stray.hh.se% java Average < manynumbers 21 / 1 22 / 1