Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

Relaterede dokumenter
JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007

Serialization i Java

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

Test af It-komponent

Hvad er Objekter - Programmering

Forelæsning Uge 2 Torsdag

Greenfoot En kort introduktion til Programmering og Objekt-Orientering

Fable Kom godt i gang

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

Fable Kom godt i gang

Kom godt i gang med Fable-robotten

Forelæsning Uge 2 Torsdag

Java Klasse nedarvninger

Anvendelse af metoder - Programmering

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Kom godt i gang med I-bogen

Lav din egen forside i webtrees

Pia Schiermer, Underviser ved UNI-C og Vestsjællands Amtscenter 2/19

Servlets, Tomcat & BlueJ

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU semester 05.januar 2007

Programmering I Java/C#

Løsning af møntproblemet

Forelæsning Uge 2 Torsdag

Forelæsning Uge 4 Torsdag

Python 3 kursus lektion 1:

DRONNINGER (QUEENS) Opgave 1

Introduktion til ActionScript

Viditronic NDVR Quick Guide. Ver. 2.0

Elevvejledning til SkoleKomNet - Min egen hjemmeside

Hvis udskrifter ser ud som vist her skal du klikke på + ud for Faste udskrifter for at de forskellige udskrifter bliver vist.

IT Support Guide. Installation af netværksprinter (direkte IP print)

Generelt Windows tidligere versioner... 1 Windows Apple Mac Log på... 2 Rediger dokumentet Tilføj et tillægsdokument...

Sådan laver du en animationsfilm

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

ViKoSys. Virksomheds Kontakt System

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

Hold kontakten med dit netværk!

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.

Eksempel: Skat i år 2000

Du har nu en genvej på dit skrivebord hen til den mappe hvor dine filer med bøgerne kommer til at ligge, den virkelige sti = c:\bøger.

Sådan opdaterer og vedligeholder du din hjemmeside i Wordpress.

IsenTekst Indhold til Internettet. Manual til Wordpress.

Vejledning i brug af dli dokumenthåndteringssystemet til virksomheder

Opgave: Digitalisering af et dokument

Kontrol-strukturer i PHP

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Virkefeltsregler i Java

SIGIL Sådan opretter du en e- bog Step by Step

PC - installation af Maple 18 med GYM-pakken

Guide til Condes. Indhold:

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

02101 Indledende Programmering Introduktion til Eclipse

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag

LEJERBO.DK INDSÆT BILLEDER, GALLERI OG VIDEO

Vejledning til CD-ORD 10

Manual til Wordpress. 1. Log ind på din Wordpress-side. Indhold: Sådan opdaterer du din hjemmeside i Wordpress.

Genvejstaster til Windows

Lav en hjemme side der kan sælge fly billetter til en stor i Europa.

AgroSoft A/S AgroSync

Gå tilbage til Windows startsiden

Arduino Programmering

Oktober Dokumentpakker

Tag smarte skærmskud

Vi anbefaler, at du lader boksen med træffetider blive liggende på din afdelingsforside. Hvad der ellers skal være af indhold er op til jer.

Microcontroller, Arduino

Manual til Wordpress. 1. Log ind på din Wordpress-side. Indhold:

Velkommen til Electro Energy s Prisprogram

Dokumentation af programmering i Python 2.75

Skrifttype og størrelse

Større skriftlige opgaver i Microsoft Word 2007 Indhold

Overbelastning af processor i Windows XP og i Ubuntu

I Windows fil struktur er der følgende ting Drev, Mapper, Filer og Genveje.

Sektornet VPN Installationsvejledning Windows Vista/7

Det nye opgaveværktøj i itslearning september 2017

VEJLEDNING TIL LUDUS, WORD og ONLINE ORDBØGER

6. Udskrifter og eksport

Programmering for begyndere Lektion 2. Opsamling mm

Vistemmernu. Et webbaseret værktøj udviklet af Programdatateket i Skive. programdatateket@viauc.dk Web:

At lave en kommunikationsbog med Phrase-it -

Edb-tekstbehandling, præsentation mm

Web sider. Introduktion: Har du nogensinde spekuleret over, hvordan det verdesomspændende internet virker og hvordan man snakker med det?

Abstrakte datatyper C#-version

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

IntoWords Mac Tjekliste

Picasa Brugerflade Den øverste linie kaldes for menulinien eller kommandolinien. Alle menuer kan man finde her

Kapitel 4 Løkker i C#

BRUGERMANUAL FOR KLUBKOORDINATORER. Version 2.0

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

Vejledning til Kilometer Registrering

I denne manual kan du finde en hurtig introduktion til hvordan du:

Sådan bruger du Office365 Online Office pakke og mail.

Tree klassen fra sidste forelæsning

Få det bedste fra Windows 10

Velkommen til IT for let øvede

Oversættelse af LibreOffice. Adressen er

Forelæsning Uge 2 Torsdag

Modul 8: Clouds (Lagring af filer)

Transkript:

Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19 Nogel eksempler på metoder:...21 Globale Variabler...22 Samlinger (Array)...25 Gemme i et array...25 Hente fra et array...26 Længden af Arrayet...28 Indsæt Dynamisk i Arrayet...29 Samlet kode...29 IF sætninger...30 WHILE loops...31 Hvordan laver vi et RIGTIGT program...34 BlueJ eksempel...35 Koden kommer her...36 Nu laver vi JAR filen...37 Så kører vi programmet...38 1 af 38

Indledning Denne bog er lavet til undervisning af nybegyndere i programmering. Der undervises i Java, men på en sådan måde at det kunne være et hvert programmeringssprog. Alle eksemplerne i bogen bør kunne kopieres direkte ind i BlueJ (et værktøj til at programmere med), og køre. På denne måde får du hurtigt prøvet alle eksempler selv, samtidig med at du læser. Programmering er svært at lære og det er min egen opfattelse, at det specielt er LOOP som volder problemer for de svage elever. Det er mange som ikke kommer over denne her LOOP, og dermed bliver stående der. Hvis du forstår og kan bruge LOOP, så er jeg rimelig sikker på at du har gode egenskaber for at programmere. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen. Mvh. Jákup Wenningstedt Hansen. 2 af 38

BlueJ Der findes mange programmeringsværktøjer, og det er lidt ligemeget hvad du bruger. Jeg kan godt li BlueJ til opstart. Download og Installering af BlueJ Gå ind på www.bluej.org. Inde på forsiden kan du vælge 2 veje. Jeg vælger den nyeste version. Her bliver det lidt kompliseret. Det er nemmest om du fikser JDK en først. Så vælg JDK linket. Det er nemmere fordi, når du har installeret JDK først, og så installerer bluej, så finder BlueJ automatisk JDK en, og så er alt klart. 3 af 38

JDK har en masse forskellige muligheder. Vælg den som jeg har markeret på billedet. Så kommer der igen en del valgmuligheder. Jeg har windows operativsystemet på min PC, og derfor har jeg 2 muligheder. Du vælger den som passer til dig, og så installerer du den. 4 af 38

Så er JDK installerert. Så går du tilbage til næste side, hvor du nu kan downloade selve BlueJ. Det er nemt, og så installerer du den. 5 af 38

Hvordan kører jeg BlueJ første gang. Hvis alt er installerert korrekt, så vil BlueJ se sådan ud når du starter den. Ellers vil den helst spørge dig efter JDK en. Så kan du manult pege på den, hvis den findes på din komputer. Ellers kan du prøve at installere JDK igen. 6 af 38

Oppe i menuen skal du nu lave et nyt projekt. Jeg har lavet et her og det har fået navnet testprojekt. Så trykker du på New Class.. knappen, og laver en klasse. Jeg har givet min klasse navnet testklasse. Du kan se, at kassen er markeret med linjer som går tværs. Det betyder at klasse endnu ikke er Kompileret, og derfor ikke tjekket for fejl, og kan heller ikke køre. 7 af 38

Tryk så på Compile knappen. Nu skulle boxen helst miste sine linjer, som betyder at den er kompileret og er klar til at køre. 8 af 38

Vi skal nu til at køre den kompilerede klasse. Det gør vi ved at højreklikke på klassen og vælge new testklasse(), som er navnet. Det betyder faktisk at vi laver et nyt objekt af denne klasse. Nu kører programmet. Det kan vi se ved at der nu er et Objekt af klassen nederst i billedet. Objektet har fået navnet testklas1 og er af typen testklasse. Nu har du kompileret og kørt dit første program. Tillykke. 9 af 38

10 af 38

Vi kører vores kode i BlueJ Eksemplet ovenover, var måske ikke spændende. Så lad os skrive vores egen kode, og så køre den. Her er et stykke kode som er lidt mere interessant: public class testklasse public testklasse() System.out.println( Hej med dig ); Du skal nu indsætte den ind i din klasse. Det gør du ved at Dobbeltrykke på klassen, og så fjerner du alt hvad der står nu, og indsætter den nye kode. Det ser sådan ud hos mig: Her kan du se, at jeg har dobbelttrykt på klassen og så åbner vinduet sig, og så har jeg indsat koden. 11 af 38

1. har jeg Kompleret koden. 2. Så har jeg valt at køre den (lave et objekt). Og så får jeg resultatet ud som en tekst i Terminal vinduet. 12 af 38

Variabler Eksempel: 1 Hvad er en variabel? Det er bare et sted hvor vi gemmer noget i. Vi kan ændre det vi gemmer, derfor er det variabelt. Når vi ønsker at gemme noget, som f.eks. et tal, så SKAL vi give stedet hvor vi gemmer tallet, et navn. Det siger sig selv om man tænker over det, fordi hvis vi ikke har et navn til gemmestedet, så kan vi ikke finde det igen. Sådan laver man en variabel som kan gemme tal: int gemmer; Nu har vi lavet et gemmested som har navnet gemmer. Men der er ikke gemt noget i det. Efter som vi har lavet dette gemmested kan vi nu gemme tal i det. Det gøre man sådan. gemmer = 4; Nu har vi gemt tallet 4 i gemmer variablen. Nu kan jeg printe værdien som er gemt i gemmer på denne måde: System.out.println(gemmer); Nu vil der bliver printet 4 ud på skærmen. Se samlet kode her: Samlet kode public class variabler int gemmer; public void Udskriv() gemmer = 4; System.out.println(gemmer); Eksempel 2: Som sagt ovenover, så kan man ændre i værdien som er gemt, derfor kaldes det en variabel. Jeg laver lige en ny variabel: int gemmer; 13 af 38

gemmer = 4; System.out.println(gemmer); Igen vil der blive udstrevet 4 her. Men om jeg nu efterfølgenden ændrer variablens indehold sådan: gemmer = 9; System.out.println(gemmer); Så vil der nu bliver udskrevet 9 og ikke 4. Jeg har således ændret i indeholdet hos variablen gemmer fra 4 til 9. Se koden her: Samlet kode public class variabler int gemmer; public void Udskriv() gemmer = 4; System.out.println(gemmer); gemmer = 9; System.out.println(gemmer); 14 af 38

Eksempel 3: Man kan lave mange mærkelige ting med variabler. Her kommer sådan en. Først laver jeg en ny variabel: int gemmer; gemmer = 4; Og så kommer det mærkelige... gemmer = gemmer + gemmer; Hvad tror du der bliver udskrevet nu? System.out.println(gemmer); Faktisk bliver der udskrevet 8 her. Og gemmer variablen har nu en fået en ny tilstand, som er tallet 8. Se koden her: Samlet kode public class variabler int gemmer; public void Udskriv() gemmer = 4; System.out.println(gemmer); gemmer = gemmer + gemmer; System.out.println(gemmer); 15 af 38

Eksempel 4: Nu skal vi se på en anden TYPE variabel, som ikke er tal. Vi skal se på TEKST variabler. Groft sagt er der 2 typer variabler TAL & TEKST. Så er der en masse andre ind i mellem, men man kan klare sig langt med disse to. Først laver jeg en ny variabel, og denne her skal ikke holde tal, men tekst. Det gør man sådan: String gemmer; Ved at skrive String fåran, i stedet for int, har vi sagt at variablen gemmer holder tekst og ikke tal. Så skal jeg til at give gemmer en tekst. Det gør jeg sådan: gemmer = Hej med dig ; Ved at bruge gåseøjne fåran og bagved, har vi sagt at det er en tekst. Det betyder at en tekst altid skal starte med et og slutte med et. Så udskriver vi gemmer: System.out.println(gemmer); Og her vil der blive udskrevet: Hej med dig. Læg mærke til at gåseøjnene forsvinder fra udskriften. De er jo kun for at sige til programmet, at nu kommer der en tekst, de er altså ikke med i selve teksten. Se koden her: Samlet kode public class variabler String gemmer; public void Udskriv() gemmer = "Hej med dig"; System.out.println(gemmer); 16 af 38

Metoder Vi skal arbejde med denne her klasse og udbygge den med vores egen metode. Koden kommer her, og du kan kopiere den ind i dit eget projekt. class KlasseTilMetoder Så indsætter vi vores nye metode. Metode (intet ind og intet ud) class KlasseTilMetoder void plus() System.out.println("hej med dig"); Sådan ser det ud i BlueJ Når du aktiverer metoden plus() udskrives teksten hej med dig. Du kan kalde metoden så ofte som du vil. Læg mærke til at objektet lever hele tiden (ses som en rød kasse nede i bunden) 17 af 38

Metode (tekst ind) Vi har ovenover prøvet at kalde en simpel metode, som hverken modtager noget ind ejheller svarer noget ud. Vi skal nu først kikke på en metode som tager indput. Vi bygger videre på forige eksempel. Hvordan sender man noget ind til en metode? det gør man via parranteserne (). Lad os udbygge metoden til at modtage en tekst: class KlasseTilMetoder void plus(string teksten) System.out.println("hej med dig " + teksten); Sådan ser det ud i BlueJ Når jeg kalder metoden og skrive Jens i mellem parrenteserne, skriver programmet hej med dig Jens. Vi kan kalde metoden så ofte vi vil, og med forskellige tekster som indput. 18 af 38

Metode (tekst ind og tekst ud) Lige som man SKAL beskrive hvad kommer ind, skal man også beskrive hvad kommer ud. Det gør man ved at erstatte void ordet med den type man ønsker at svare med, f.eks. String eller int. Vi bygger videre på samme eksempel. class KlasseTilMetoder String plus(string teksten) return "Hej med dig " + teksten; Igen skriver jeg Jens som parrameter til metoden, men nu skriver den ikke ud, men kommer med en ny box, hvor svaret står. Det er sådan bluej viser os en metodes svar. Nu har du set hvordan en metoden kan have flere tilstande. Den kan kaldes uden at svare, den kan modtage data (String, int) igen uden at svare, og den kan svare. Faktisk kan du sende flere ting ind på engang. Du kan sagens sende f.eks. (String s, String a, int b), her er der 3 ting som kommer ind, to tekster og et tal. Man kan dog KUN svare 19 af 38

med én ting, men det kan godt være en tekst eller et tal. Hvis man ønsker at svare med mange tekster, så findes der en løsning på det, men det er lidt mere indviklet, og vi kikker på det senere. 20 af 38

Nogel eksempler på metoder: Metode (tal ind intet ud) class KlasseTilMetoder void plus(int mittal) System.out.println("Tal som kom ind: " + mittal); Metode (intet ind og tal ud) class KlasseTilMetoder int plus() return 21; Metode (tal ind og tal ud) class KlasseTilMetoder int plus(int mittal) return mittal; 21 af 38

Globale Variabler Variabler er et ret indviklet begreb, fordi deres placering i koden er afgørende for hvad man kan gøre med dem. Hvad er problemet? Det er at metoder/if/while IKKE husker noget som helst. Hver gang vi kalder en metode eller kommer ind i en IF sætning, så kører disse som om det er første gang den kører, altså den husker intet. Det er det samme som med et objekt, når vi laver et nyt objekt (ved at bruge: new) så kører dette objekt for første gang og husker intet fra de andre gange et andet objekt blev lavet. Løsningen på problemet: Et objekt bliver lavet (new) og efterfølgende kan vi så kalde på metoder og bruge While/IF inde i disse. Det vil sige at når vi har ét objekt, kan vi kalde u-endelig mange gange på metoder. Og som sagt, metoderne de starter på nyt hver gang, så hvordan kan vi så huske noget som helst. Jo det kan vi ved at lade OBJEKTET (og ikke metoderne) holde variablerne. De variabler vi laver i objektet, og ikke inde i en metode, er levende hele tiden, så længe objektet lever, og det husker alt. Hvordan gør vi det i praksis:: De ting vi ønsker at Huske, skal vi placere i objektet, men hvor er det? Det er ude i roden, eller sagt på en anden måde, IKKE inde i en metode. Hvis en variabel (f.eks: int a eller String b) bliver lavet lige efter den første tuborg i klassen, så er det ude i roden. Man kalder disse variabler for objekt variabler eller instance variabler (instance er engelsk for objekt). Eksemplet neden for her har 2 objekt variabler, int penge og String kontoejer. Disse lever og husker så længe objektet lever. De 2 andre variabler som er inde i metoderne (int tal og String tekst) bliver lavet når man kalder metoden og DØR når metoden er færdig. class GlobaleVariabler int penge = 100; String kontoejer = "Jens"; void metodea() int tal = 4; void metodeb()38 String tekst = "hej"; 22 af 38

Hvor mange variabler har vi her? vi har 4 variabler. Hvilke variabler er tilgængelige for metodea? det er de tre penge, kontoejer og tal, og ikke variablen tekst. MetodeB kan bruge penge, kontoejer og tekst variablerne og ikke variablen tal. Hvorfor er det sådan? Svaret ligger i det vi kalder scope. Man kunne også kalde det for strukturen. Om du kikker på koden så er den faktisk opdelt i kasser. For at vise tydeliggøre det kan vi faktisk fjerne tuborg parranteserne og erstatte det med kasser. Jeg fjerner også klasse og metode definitionerne for at gøre det endnu simplere, så får vi følgende kode billede: int penge = 100; String kontoejer = "Jens"; int tal = 4; String tekst = "hej"; Den største kasse er klassen GlobaleVariabler, hvor alt er inde i. Du kan se at de 2 variabler penge og kontoejer faktisk ligger inde i denne kasse. De tilhører således klassen og ikke nogen bestemt metode. Man kalder disse for klassevariabler eller globale variabler. Så er der 2 andre kasser inde i denne hoved kasse. Den første har tal, og den anden har tekst. 23 af 38

MetodeA kan se penge og kontoejer variablerne, og selvfølgelig sin egen tal, man kan ikke se tekst varibalen som er inden i metodeb. Forklaringe på dette er at, en metode starter altid på nyt, og den DØR altså når den er færdig med sit arbejde, og derfor eksisterer de variabler man laver inde i en metode ikke når metoden er færdig. MetodeA laver tal variablen hver gang den kører. BlueJ prøver at gøre dette tydeligt for os når vi programmerer. Her ses den samme kode i BlueJ: 24 af 38

Samlinger (Array) Vi har allerede arbejdet med variabler, både lokale og globale variabler. Nu skal vi igen snakke om variabler, men en lidt speciel type at variabler. Gemme i et array Til nu har vores variabler kunne holde én ting, som f.eks en tekst, et tal. Men nu skal vi kikke på noget meget smart, og uundgåeligt når man skal lave programmer. Vi skal nemlig kikke på en variabel som kan holde/gemme FLERE variabler. Følgende array eksempel har 2 variabler, men man kan fylde så mange variabler i som man vil. en almindelig variabel: public class stringtest String a1 = "Hej"; en Array variabel: public class arraytest String[ ] a2 = "Hej", "Farvel"; en Array variabel: public class arraytest String[ ] a2 = new String [2] ; Læg mærke til at her laver vi array et først og siger hvor stort det er (2 i dette tilfælde), og siden putter vi data ind i det. Derfor må vi lave en metode. Om vi indsætter data med det samme, behøver vi ikke at lave en metode. public void enmetode() a2[0]= "Hej"; a2[1]= "Farvel"; Prøv og kopier Array koden ind i BlueJ og lav så et objekt og Inspekter det. Så kan du se at der er 2 variabler. Se min løsning i BlueJ løsning: 25 af 38

Hente fra et array Vi har nu gemt 2 variabler i vores array variabel. Hvordan får man nu fat på disse igen, så vi kan bruge dem? Hente fra Array public class arraytest String[ ] a2 = "Hej", "Farvel"; public String hentfraarray(int pos) return a2[pos]; Prøv og leg med metoden henfraarray. Prøv med forskellige værdier, du vil se at indsætter du et tal som er større end 1 så går det galt. Grunden er at der ikke findes nogen variabel her. 26 af 38

Se hvordan det ser ud hos mig i BlueJ: 27 af 38

Længden af Arrayet Om du ønsker at udskrive hele array et med en loop, eller du ønsker at søge i et array, er det smart at bruge længden af array et. Længden kan vi få sådan. Længden af Array et public class arraytest String[ ] a2 = "Hej", "Farvel"; public int laengdenafarrayet() return a2.length; 28 af 38

Indsæt Dynamisk i Arrayet Vi mangler nu kun at kunne indsætte NYE variabler ind i arrayet. Det ligner til forveksling når vi trækker ud. Indsæt Dynamisk i Arrayet public class arraytest String[ ] a2 = "Hej", "Farvel"; public void indsaettilarray(string ord, int pos) a2[pos] = ord; Samlet kode Samlet kode public class arraytest String[ ] a2 = "Hej", "Farvel"; public String hentfraarray(int pos) return a2[pos]; public int laengdenafarrayet() return a2.length; public void indsaettilarray(string ord, int pos) a2[pos] = ord; 29 af 38

IF sætninger Indtil nu har vi ikke rigtig kunne kikke på den data som f.eks kommer ind i metoden. Vi ønsker at kunne evaluer det som kommer ind, og så lave noget ud fra det. Lad os bare kaste os ud i et eksempel. Vi ønsker at en tjekke om en bruger kan få lov til at bruge vores metode. Klasse starter med at have 100 kroner. public class ifsetninger int penge = 100; Der er kun én metode, som tager 2 variabler ind. Inde i metoden er der én variabel som er vores svar. Hvis nu kode variablen som kommer ind er 3142, så kommer vi ind i IF sætningen og vi trækker pengene og laver et nyt svar. public String udbetaling(int pengeud, int kode) String svar = "forkert kode"; if( kode == 3142 ) penge = penge - pengeud; svar = "Pengene er trukket"; return svar; Til sidst returneres vores lokale variabel, svar. 30 af 38

WHILE loops Loops er MEGET svært at håndtere og bruge. Det er min overbevisning, at det er her de fleste falder fra. Derfor ønsker jeg at forklare det så godt som jeg kan, i det håb, at alle kommer med på vognen. While er faktisk akkurat det samme som IF med den lille forskel at WHILE kører rundt lige ind til det som står i parranteserne bliver FALSE. En loop har altid 3 ting. Punkt 1: en teller skal laves før loopen begynder. Punkt 2: denne teller bruges til at sammenligne med et andet tal, i parranteserne. Hvis svaret er TRUE så går vi ind i loop en, ellers går ned til bunden af loop en. public class whileloop public void enmetode() int i = 0; // punkt 1 while(i < 3) // punkt 2 System.out.println("i er nu: " + i); i = i + 1; // punkt 3 Punkt 3: telleren tælles op inden i loop en. Resultat når vi kalder metoden enmetode() i er nu: 0 i er nu: 1 i er nu: 2 Det er meget vigtigt at du tager koden og prøver den. Og om resultatet er det samme som mit, så må du prøve at forstå det som sker. Hvorfor er resultatet som det er. 31 af 38

Her kommer en gennemgang af loop en skridt for skridt. (1) (2) int i = 0; i variablen får værdien 0 while(i < 3) System.out.println("i er nu: " + i); i = i + 1; (3) print int i = 0; while(i < 3) tjekker om 0 < 3. Det er det System.out.println("i er nu: " + i); i = i + 1; (4) int i = 0; while(i < 3) System.out.println("i er nu: " + i); i=0 i = i + 1; (5) int i = 0; while(i < 3) System.out.println("i er nu: " + i); i = i + 1; i variablen får værdien 1 (6) int i = 0; while(i < 3) tjekker om 1 < 3. Det er det System.out.println("i er nu: " + i); i = i + 1; (7) print (8) int i = 0; while(i < 3) System.out.println("i er nu: " + i); i = i + 1; i variablen får værdien 2 (9) print int i = 0; while(i < 3) System.out.println("i er nu: " + i); i=1 i = i + 1; int i = 0; while(i < 3) tjekker om 2< 3. Det er det System.out.println("i er nu: " + i); i = i + 1; (10) int i = 0; while(i < 3) System.out.println("i er nu: " + i); i=2 i = i + 1; int i = 0; while(i < 3) System.out.println("i er nu: " + i); i = i + 1; i variablen får værdien 3 32 af 38

(11) (12) int i = 0; while(i < 3) tjekker om 3 < 3. FALSE System.out.println("i er nu: " + i); i = i + 1; int i = 0; while(i < 3) System.out.println("i er nu: " + i); i = i + 1; Så er vi ude af Loop en Kommentar til billede 5 Kommentar til billede 12 Læg mærke til at vi kun går op til while og ikke int i = 0. Nu er loop en FALSE, derfor må vi ikke komme ind i koden som er i de to Tuborg parrenteser. While holder sig til sig selv og indrager ikke anden kode. Det er kun når det som står inden i de normale parrenteser ( ) er TRUE at vi kan komme ind i de to Tuborg parrenteser. int i = 0 kører dermed kun en gang når metoden kaldes, mens koden inden i while kører flere gange, faktisk 3 gange. Når loop en er færdig, så rykker kontrollen ned under den sidste og så kører programmet videre derfra. 33 af 38

Hvordan laver vi et RIGTIGT program BlueJ er ret smart, det har indbygget en funktionalitet som vi kan bruge til at lave et rigtigt program, som vi kan lægge på f.eks. skrivbordet og starte ved at dobbelt trykke på ikonet. For at vi skal kunne gøre dette, er der 2 ting som SKAL være i orden først. 1. Vi skal lave en speciel metode, som kaldes main metoden. 2. Siden skal vi Pakke vores kode til en JAR fil, men det er ikke svært fordi BlueJ har dette indbygget til os at bruge. Main metoden: Java er lidt mærkelig, fordi der SKAL laves denne her main metode for at kunne køre. Og main metoden er defineret på en lidt speciel måde, men ligner dog ret meget de normale metoder vi selv laver. Main metoden SKAL også være inde i én klasse, den kan ikke ligge udenfor, som måske kan være lidt underligt, når det nu ikke er en almindelig metode, men sådan er det nu engang. Metoden ser sådan ud: public static void main(string [ ] bla) Main metodens formål: Det er programmets start sted. Når man dobbelt trykker på ikonet for at starte programmet, er det denne her main metode som bliver kaldt. Et program har derfor kun én main metode. Hvis der ingen kode er inde i main metoden (som den vi ser ovenover), så starter programmet metoden, men der er intet arbejde som der skal laves her, og så stopper programmet bare når det kommer ned til slut tuborgen ( )., og for os vil det opleves som om programmet aldrig startede, men det gjorde det, men vi ser ikke noget fordi vi ikke har bedt om at vise noget. Hvis vi ønsker at køre et program som laver noget som helst, må vi placere - som minimum - nogen kode ind i main metoden. Det behøver ikke at være ret meget koden, men bare nok til at komme i gang. Lad os kikke på et eksempel. 34 af 38

BlueJ eksempel Her har vi et BlueJ projekt med 2 klasser. Main metoden er placeret inde i StartKlassen. Det betyder at programmet starter her. Og det første som programmet gør, er at lave et nyt objekt af typen MetodeKlassen, og dette objekt bliver gemt i variablen mk. Siden kaldes metoden visid hos mk objektet. Det første som visid metoden gør er at vise en box hvor man kan skrive i. Når man skrive ind i boksen, og trykker OK, går vi vider til næste linje i koden, som er et kald på metoden vismd(navn) og vi sender variablen navn med. Navn variablen indeholder nemlig det som man skrev i box en. vismd metoden har en linje kode, og den viser det som blev skrevet i Box en i en ny Box. Og så slutter programmet. 35 af 38

Koden kommer her Du kan nemt kopiere koden og sætte den ind i dit BlueJ projekt. Husk at kompilere koden også. import javax.swing.*; public class StartKlassen public static void main(string[]asr) MetodeKlassen mk = new MetodeKlassen(); mk.visid(); import javax.swing.*; public class MetodeKlassen public void visid() String navn = JOptionPane.showInputDialog(null, "Skriv"); vismd(navn); private void vismd(string s) JOptionPane.showMessageDialog(null, s); 36 af 38

Nu laver vi JAR filen Så kommer vi til det sidst punkt, hvor vi laver selve programmet som skal køre. Under menuen Projekt finder du Create Jar File...Den skal du trykke på. Siden kommer et vindue frem hvor der er 3 valgmuligheder. None, MetoderKlasse og StartClassen, hvor du skal vælge StartKlassen fordi det er her vi har placeret main metoden. På denne her måde forteller vi hvor main metoden er henne, så at programmet kan starte. Kommer du til at vælge en af de to andre, så sker der intet når man starter programmet, fordi der ikke er nogen main metode at kalde. Siden skal du gemme jar file og give den et navn. Jeg har lagt min på Desktopen og givet den navnet DobbeltKlik. 37 af 38

Så kører vi programmet Ude på Desktoppen ligger der nu en jar fil med navnet DobbeltKlik. Når jeg nu dobbelt klikker på den dukker der et vindue op, hvor der er en text box jeg kan skrive i. Jeg skriver Jens i box en og trykker så på OK knappen. Boxen bliver væk, og en ny kommer frem, og der står Jens skrevet i den. 38 af 38