Argumenter fra kommandolinjen



Like dokumenter
2 Om statiske variable/konstanter og statiske metoder.

UNIVERSITETET I OSLO

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

Java fra Eclipse til Evalanche

Enkle generiske klasser i Java

EKSAMENSFORSIDE SKRIFTLIG EKSAMEN

TDT4100 Objektorientert programmering

Logo med FXML. Introduksjon. Skrevet av: Hallvard Trætteberg

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

INF1010 Sortering. Marit Nybakken 1. mars 2004

UNIVERSITETET I OSLO

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

Bruk av kildeavskrifter som er merket med grønn kule

Debugging. Tore Berg Hansen, TISIP

2 Om statiske variable/konstanter og statiske metoder.

Jentetreff INF1000 Debugging i Java

UNIVERSITETET I OSLO

INF1000 Behandling av tekster

Oblig 4Hybelhus litt mer tips enn i oppgaven

Eksamen. Objektorientert Programmering IGR 1372

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

Forelesning inf Java 4

Side 1 av 11, prosesser, tråder, synkronisering, V. Holmstedt, HiO 2006

UNIVERSITETET I OSLO

Eksport og innsending

UNIVERSITETET I OSLO

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

Programmering i C++ Løsningsforslag Eksamen høsten 2005

1. NetBeans IDE: Lage en enkel mobilapplikasjon

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

Manual til Excel. For mellomtrinnet. Inger Nygjelten Bakke ELEKTRONISK UNDERVISNINGSFORLAG AS

Fra Python til Java, del 2

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

UNIVERSITETET I OSLO

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

INF Uke 10. Ukesoppgaver oktober 2012

Klasser, objekter, pekere og UML. INF gruppe 13

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

UNIVERSITETET I OSLO

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000

Steg 1: Opprette app-pakke, app-klasse og FXML-fil

Zelio Soft grunnkurs. Zelio Logic reléerstatter programmering

Dette eksemplet forutsetter at du allerede har gjennomgått Kom i gang med tavler 1.

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Linglyder 2.0 Brukerveiledning

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

MS Word. Del 1. AVkurs

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

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen.

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

Løsningsforslag til eksamen i INF1000 våren 2006

AUTOCAD Artikkelserie. Fra Color til Named og omvendt

ToPlayer. Introduksjon: Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide

UNIVERSITETET I OSLO

TOD063 Datastrukturer og algoritmer

TDT4100 Objektorientert programmering

INF1010 Tråder J. Marit Nybakken Motivasjon. Å lage en tråd

Socket og ServerSocket

Hvis du gjenkjenner ett av disse to bildene over så er dere på vår ASP-server.

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; }

. Ved sensur vl1 ahe bokstaverte deloppgaver (a, b, c,...) telle like mye.

og Java

Læringsmål for forelesningen

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

Installere JBuilder Foundation i Mandrake Linux 10.0

Kodetime for Nordstrand barneskole

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

INF1000: noen avsluttende ord

notater Gule lapper Mine Et praktisk eksempel med objekter IT2 Læreplansmål Gløer Olav Langslet Sandvika VGS

HØGSKOLEN I SØR-TRØNDELAG

Kanter, kanter, mange mangekanter

GUI («Graphical User Interface») del 2

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Avinstallere Java: Windows 7 og eldre versjoner

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

IN våren 2019 Onsdag 16. januar

IN våren 2018 Tirsdag 16. januar

Installasjonsveiledning. Phonzoadapter

UNIVERSITETET I OSLO

INF1000-SIKT - Notat om I/O i Java

HØGSKOLEN I SØR-TRØNDELAG

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

Forelesning inf Java 5

INF1000 Metoder. Marit Nybakken 16. februar 2004

Kort veiledning for avsendere og hentesteder

Forelesning inf Java 5

UNIVERSITETET I OSLO

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

NIO 1. runde eksempeloppgaver

Manual til Excel. For ungdomstrinnet ELEKTRONISK UNDERVISNINGSFORLAG AS

GUI («Graphical User Interface») del 2

Hvordan installere Java og easyio på Windows

HØGSKOLEN I SØR-TRØNDELAG

Transkript:

Argumenter fra kommandolinjen Denne veiledningen er laget for å vise hvordan man kan overføre argumenter fra kommandolinjen til et program. Hvordan transportere data fra en kommandolinje slik at dataene kommer inn i programmet, og kan behandles der? Veiledningen er laget for studenter som bruker boken Objektorientert programmering med Java, ISBN 82-7674-748-5. Noen av oppgavene og løsningsforslagene er laget slik at det skal transporteres data fra kommandolinjen og inn til programmet. Dataene skal være på kommandolinjen i det øyeblikket programmet starter. Det er altså for sent å hente inn dataene etterpå ved å bruke read-setninger for tastaturet. Ett av problemene for studenter på dette trinnet er altså å forstå at i dette tilfellet skal det ikke brukes Konsoll.readLine-setninger eller tilsvarende. Denne veiledningen beskriver to miljøer som brukes for å håndtere kommandolinjen. CMD Det ene miljøet er kommandolinjevinduet i Windows. Dette startes som regel fra Start-menyen. Avhengig av om man bruker Vista, XP eller Windows 7, startes kommandovinduet på litt ulike måter. Men alle måtene ender med at du før eller senere skriver cmd og trykker enter. Dermed kommer et lignende bilde fram: Den rette streken helt sist i dette vinduet pleier å blinke for å tiltrekke seg oppmerksomhet. Streken kalles for skrivemerke, fordi det er meningen å skrive noe der. Vanligvis skriver man navnet på et

program. Når man har gjort det, og trykket enter, starter programmet dersom alle forutsetninger er tilstede. Eclipse Det andre miljøet er Eclipse. Dersom man er vant til CMD, kan man oppleve at Eclipse gjør det enklere å bruke argumenter, fordi man ikke trenger å forlate det grafiske miljøet i Eclipse. Men dersom man ikke fra før vet noe om kommandolinjemiljøer som CMD, vil man kanskje i stedet tenke at verktøyet for å simulere kommandolinje i Eclipse er vanskelig. Verktøyet for å simulere CMD i Eclipse er avansert. I denne veiledningne skal vi kun se på det som er helt nødvendig for å forstå hvordan det skal brukes i oppgavesammenheng. Fordi verktøyet er avansert, ser det litt forskjellig ut avhengig av hva man vil gjøre. Verktøyet ser for eksempel slik ut: For å åpne denne dialogen med omtrent dette utseendet, må man først kjøre Teststakk en gang. Deretter kan man kjøre run configurations, enten ved å klikke på verktøyknappen, eller ved å velge det fra run-menyen. Ordet run er i dette tilfellet et substantiv, ikke et verb. Det er altså kjøretilpasninger dette handler om.

Bruk av argumenter på kommandolinjen Hvis man bruker argumenter på kommandolinjen, er det ofte for å stille inn et program. Dette er det samme som å påvirke programmet slik at det kjører på en bestemt måte. I oppgavene i boka kan du for eksempel oppleve lignende ting som at du må skrive java Gangetabell 5 for å skrevet ut fem-gangen, eller java Gangetabell 7 for å få skrevet sju-gangen. Disse to eksemplene viser bruk av henholdsvis 5 og 7 som argumenter. Med programmet Teststakk kan det hende du vil skrive java Teststakk mandag tirsdag onsdag torsdag. I dette tilfellet er det mandag tirsdag onsdag torsdag som er argumenter. Du skal løse oppgaven slik at programmet kjører, og slik at det svarer med å skrive ut torsdag onsdag tirsdag mandag Det er slik dette programmet skal virke når du har løst oppgaven med å skrive klassen Stakk. Etter denne omvendte utskriften stopper programmet av seg selv. Argumenter og kjøring med cmd Dersom du bruker cmd vil dette se slik ut: Her er det ikke vist hva som skjer etter at du trykker på enter-tasten. Forhåpentligvis er det likevel klart nok hva som vil skje, ut fra det som er beskrevet ovenfor. Det krever ofte en del tålmodighet og innsikt å tilrettelegge for å kjøre programmer fra kommandolinjen. Derfor bruker vi som regel Eclipse i sammenheng med kurs og opplæring.

Argumenter og kjøring med Eclipse Du vil vanligvis bruke Eclipse i stedet for cmd, men kan ha godt av å vite hvordan det ville sett ut i cmd. I boken er det tatt utgangspunkt i cmd, eller tilsvarende kommandolinje, siden dette er mindre avhengig av spesielle verktøy. I dette avsnittet skal vi se på hvordan du kunne lagt inn argumenter ved hjelp av Eclipse. For å finne ut hva som er gjort, må du studere dialogen ovenfor, Run Configurations. I kolonnen til venstre er klassen Teststakk i fokus. Grunnen er at Teststakk er entry point. Klassen som er entry point, er den klassen som inneholder metoden main. I dialogen Run Configurations er det forholdene ved entrypoint og igangkjøring som tilpasses. I det store panelet til høyre er det øverst presisert at navnet på denne konfigurasjonen er Teststakk. Dette navnet er valgt fordi det er lett å huske. Navnet på konfigurasjonen er altså blitt det samme som navnet på klassen med entrypoint, fordi det er lett å huske.

Rett under er det en rekke med såkalte fliker eller faner. Ved å åpne fanen med (x) Arguments kan du skrive inn argumenter som du ellers måtte åpnet kommandolinjen for å skrive inn. Som du ser, er det her skrevet inn argumentene mandag trisdag onsdag torsdag, akkurat slik du ville gjort det på kommandolinjen. Men du trenger ikke sette java Teststakk foran, fordi dette allerede er konfigurert et annet sted i denne dialogen. Når du er ferdig med å konfigurere (i dette tilfellet, med å skrive inn argumenter) kan du klikke på apply eller run. I begge tilfeller blir konfigurasjonen lagret, og virker som default neste gang du klikker på den grønne run knappen. Ordet default betyr i denne sammenhengen den vanlige. Fange argumentene Hvordan fanges argumentene i programmet? Med andre ord: hvordan får programmet tak i argumentene? Argumenter fra kommandolinja fanges i entry point. Du har sikkert lagt merke til at alle entrypoint skrives slik: static public void main(string[] args) { } // forskjellig slags kode som starter opp eller kjører selve programmet Ordene static og public har tilfeldig rekkefølge. Ordet args er et ord vi kan finne på selv. Resten av teksten i den første linjen må stå akkurat som det står for at dette skal være et gyldig entrypoint. Det at det må stå på nøyaktig en bestemt måte, kalles for en signatur. Som du ser er args av typen String[]. Det betyr altså at argumentene kommer inn gjennom parentesen i entrypoint under det navnet vi selv velger å sette på dem. Men typen kan vi ikke bestemme selv. Den er alltid av typen typen String[] (altså et array fylt med strenger). Eksemplet Teststakk I oppgaven der du må bruke klassen Teststakk er argumentobjektet ikke kalt args. Det er i stedet kalt s. Vi kan altså kalle dette objektet hva vi selv vil. Selv om objektet s inneholder for eksempel fire argumenter fra kommandolinja, kalles selve objektet s også for et argument. Grunnen er at det er argument for konstruktøren. Setningen Stakk stakk = new Stakk(s);

er altså en setning som instansierer objektet stakk, og bruker argumentet s i selve instansieringen. Meningen må være at objektet stakk skal bruke argumentene fra kommandolinja til noe. I koden kan du også lese at objektet stakk skal forstå meldingen next. Meningen skal være enkel å tolke ut fra navnet på meldingen, nemlig at objektet skal komme med neste argument. I eksemplet vårt med ukedager, er det slik at den aller første gangen next brukes, er det argumentet torsdag som kommer. Grunnen til at det er det siste argumentet som kommer først, er at objektet er av typen Stakk. Meningen med ordet stakk er jo at elementer tas ut i omvendt rekkefølge, som fra en tallerkenstabel. Begrepet stack er et ekte teknisk uttrykk. Prinsippet stammer fra et annet teknisk begrep, nemlig last-in-first-out. Dette forkortes som regel til LIFO, og er et kjent begrep både i databehandling og digital elektronikk. Slutt på dokumentet