Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft



Relaterede dokumenter
Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. "10") til heltal (10). if (udtryk) else

Kursus 02199: Programmering. Lidt om forelæseren. Velkommen til. Praktisk information: kursusaktiviteter. Praktisk information: forelæsninger

Grundlæggende Programmering ITU, Efterår Skriftlig eksamen i Grundlæggende Programmering

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

Eksempel på en database: studenter, kurser, eksamener

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.

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

Tree klassen fra sidste forelæsning

DM502. Peter Schneider-Kamp

Programmering I Java/C#

Kursus 02199: Programmering. Kontrol af programudførelsen. afsnit if (indkomst > ) topskat = (indkomst ) * 0.

Videregående programmering i Java

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

Løsning af møntproblemet

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

Test af It-komponent

Kapitel 3 Betinget logik i C#

Introduktion til ActionScript

SWC eksamens-spørgsmål. Oversigt

Hvad er et distribueret objekt? Plan Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation

Virkefeltsregler i Java

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner

BRP Kursusintroduktion og Java-oversigt

Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i)

MS Visual Studio Basic En kort vejledning

Bits, bit operationer, integers og floating point

Hvad er Objekter - Programmering

Python 3 kursus lektion 1:

IDAP manual Emission

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september (Tak til Jakob Bardram for nogle slides) Dagens begreber

Introduktion til ActionScript, fortsat

Abstrakte datatyper C#-version

Kapitel 4 Løkker i C#

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Databaseadgang fra Java

02101 Indledende Programmering Introduktion til Eclipse

Forelæsning Uge 2 Mandag

Ugeseddel 4 1. marts - 8. marts

Dag 10 Flertrådet programmering

DM507 Algoritmer og datastrukturer

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004

Crash Course i Programmering. HumTek, RUC

Introduktion til C programmering

Indledning. På de følgende sider vises, primært i tegneserieform, lidt om mulighederne i PC-AXIS for Windows.

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

Kort om indlæsning af excel filer til budgetkladder i Navision

DM507 Algoritmer og datastrukturer

Adobe Acrobat Professional 11. ISBN nr.:

#AlleKanKode. Lektion 2 - Konstanter og Variabler

Lonbox PCM2001 betjeningsenhed

Transkript:

Kurserne Kurset: programmering i sproget Java Programmering og Udvidet Programmering Lærerne: Morten Larsen og Peter Sestoft Kursusmål: I skal lære at skrive interessante programmer i Java Forudsætninger: I skal kunne bruge Windows, tekstbehandling og WWW Kurset Programmering = 2 point Kurset Udvidet Programmering = Programmering + 1 point Kursusforløb (forelæsningsplan) Interaktion: stil endelig spørgsmål til forelæsningen Kursets hjemmeside er http://www.dina.kvl.dk/ sestoft/programmering.html Hjemmesiden indeholder udleverede materialer, sidste nyt,... Hjemmesidens forelæsningsplan indeholder resuméer af forelæsningerne Programmering 1999 KVL Side 1-1 Programmering 1999 KVL Side 1-3 Programmering 1999 Forelæsning 1, tirsdag 31. august 1999 Om kurset, lærerne og forelæsningerne Om øvelserne Om nødvendige anskaffelser Om jer Om programmeringssprog Ifår brug for Lærebog: Lewis & Loftus: Java Software Solutions Noter (udleveres efterhånden; kan også udskrives fra nettet) Ringbind til udleverede løbesedler, noter, forelæsningsresumeer, mv. Disketter eller en epost-konto hos DSR Om programmeringssprog Java Eksempler på Java-programmer og deres bestanddele Programmering 1999 KVL Side 1-2 Programmering 1999 KVL Side 1-4

Hvad er et program? Et program er interne instrukser til en datamaskine. Øvelser Det er vanskeligt (eller umuligt) at lære bare ved at lytte. Man lærer kun ved at prøve selv. Øvelser: mindst 2 timer pr. uge pr. studerende, fra torsdag den 9. september Ugentlige opgaver til aflevering Interne instrukser kan medføre eksterne, synlige resultater. F.eks. beregning og visning af en saldo, tegning af en graf,... Sammenhængen intern/ekstern er 100 % logisk og mekanisk. Programmer er generelle; kan løse uendelig mange problemer af en bestemt slags. Programmer er stupide; kan ikke improvisere eller forstå. Datamaskiner er hurtige; derfor kan programmer alligevel virke smarte. Øvelsestidspunkter: torsdag 13 15 og 15 17 (og måske fredag 13 15) Instruktor: Jakob Diness Skriv jer på øvelsestilmeldingen (rundsendes) Man kan køre Java-programmer derhjemme: se Generelle Oplysninger Hvad er et programmeringssprog? Et programmeringssprog er en notation for instrukser, dvs. programmer. Man skal være meget omhyggelig med programmeringssprog. Eksempel. Korrekt: add(knap); Øvelseslokale: F117 på 1. sal i bygningen mod Thorvaldsensvej Helt forkert: Add(knap). Programmering 1999 KVL Side 1-5 Programmering 1999 KVL Side 1-7 Specielle programmeringssprog: Excel, HTML, SAS Hvorfor lære programmering? Fordi man kun på den måde virkelig forstår muligheder og begrænsninger i databehandling Fordi man bedre kan forestille sig nye typer af løsninger og produkter Fordi man bliver i stand til at løse specialopgaver selv Fordi det er sjovt! Meget velegnede til særlige anvendelser, f.eks. opstilling af budgetter Meget uegnede til andre anvendelser, f.eks. samkøring af datasæt Excel: Finans/økonomi, regulære datasæt, simpel (men flot) grafik HTML: Beskriv hyperteksters struktur og (til dels) layout SAS: Manipulation af datasæt, beregning af statistiske størrelser, grafik Hvad kan Java bruges til? Nogle eksempler Simulering af udviklingen i en blandet bøge/aske skov Simulering af dynamikken i en malkekvægsbesætning Generering af optimal hugststrategi ud fra bevoksningsliste Matchning og sammenkædning af DNA-sekvenser Simulering af transportprocesser (af glyphosat/roundup) i jord Genkendelse af bakterier på mikroskopbilleder Generelle programmeringssprog: Java, Pascal, C, C++,... Man kan løse et hvilket som helst problem ved at skrive et program. Men man skal selv forstå løsningen. Ingen indbygget intelligens som i Excel men det er ofte en fordel. Særlige fordele ved Java Relativt simpel programmering af vinduesorienterede brugergrænseflader Indsættelse af appletter (vinduesorienterede småprogrammer) på websider Moderne teknologi (sammenlignet med Pascal, C og C++) Programmering 1999 KVL Side 1-6 Programmering 1999 KVL Side 1-8

Et simpelt Java program public class Hello { public static void main(string[] args) { System.out.println("Det virker sandelig!"); Bemærk: Programmets (klassens) navn er Hello; filens navn skal være Hello.java. Programteksten i metoden main udføres når programmet startes. Redigering af Java programmer med Javaedit Javaedit er en simpel, gratis Java editor. Den startes ved dobbeltklik på U:\java\bin\javaedit.exe. Eller ved at man skriver javaedit i en DOS boks. Rediger programmer (*.java filer), og oversæt dem ved klik på kaffekop-ikonen. Programmer skal stadig udføres i MS-DOS boksen ved brug af java fortolkeren. Javaedit skal (muligvis) konfigureres før brug; se Løbeseddel 1. Metodekaldet System.out.println udskriver til skærmen. Betydningen af public static void og String[] args vil blive forklaret senere. Programmering 1999 KVL Side 1-9 Programmering 1999 KVL Side 1-11 Eksempel: Variable og beregninger i Java Redigering, oversættelse og udførelse af et Java program Rediger et Java program og gem det i filen Hello.java Start en MS-DOS boks (under MS Windows) Oversæt programmet til Java bytecode, ved brug af javac oversætteren: javac Hello.java Derved dannes en fil Hello.class med den oversatte udgave af programmet. Udfør det oversatte program, ved brug af java fortolkeren: java Hello Dette udfører programmet, som udskriver på skærmen. public class Skat1 { public static void main(string[] args) { int indkomst = 120000; double ambi, bundskat; ambi = indkomst * 8.0 / 100; indkomst = indkomst - (int)ambi; bundskat = (indkomst - 32300) * 7.5 / 100; System.out.print("Arbejdsmarkedsbidrag: "); System.out.println(ambi); System.out.print("Bundskat: "); System.out.println(bundskat); Uddata på skærmen Arbejdsmarkedsbidrag: 9600.0 Bundskat: 5857.5 Programmering 1999 KVL Side 1-10 Programmering 1999 KVL Side 1-12

Grundbegreber: værdi og type, heltal og flydende-kommatal En værdi er et tal (120000) eller en tegnstreng ("Bundskat: ") eller en sandhedsværdi (false) eller... En type er en familie af værdier: int er typen af heltal: 3, 4, 10, 117, -2, 0,... double er typen af flydende-kommatal: 2.5, 117.1, 8, -2.5, 3E8,... String er typen af tegnstrenge: "Bundskat: ", "Ole-Johan", "",... boolean er typen af sandhedsværdier: true, false I datamater er beregninger med flydende-kommatal kun omtrentlige, men beregninger med heltal er eksakte. Derfor skelnes mellem flydende-kommatal (double) og heltal (int) i programmer. Trunkeringen (int)ambi omdanner flydende-kommatallet ambi til et heltal ved at smide decimalerne væk. Grundbegreber: Udtryk og ordrer Tilstanden består af datamatens lagerindhold, uddata (på skærmen), osv. Et udtryk beregner en værdi (og ændrer måske på tilstanden): indkomst * 8.0 / 100 En ordre ændrer tilstanden. For eksempel kan den ændre en variabels værdi: indkomst = indkomst - (int)ambi; eller den kan skrive uddata på skærmen: System.out.print("Arbejdsmarkedsbidrag: "); Flere erklæringer og ordrer kan samles i en blok: { int indkomst = 120000;... System.out.println(bundskat); En blok kan bruges hvor som helst en ordre kan bruges. Programmering 1999 KVL Side 1-13 Programmering 1999 KVL Side 1-15 Programmer skal kunne vælge Grundbegreber: Variable, erklæringer og tildeling Eksempel: Vi ønsker at løse andengradsligninger af formen En variabel kan indeholde en værdi af en given type. En variabel svarer til et sted i datamatens lager. Ü ¾ Ü ¼ En erklæring indfører type og navn(e) for en eller flere variable: double ambi, bundskat; Erklæringen afsætter også plads til variablene i datamatens lager. Givet koefficienterne,, beregner vi diskriminanten : Hvis ¼ har ligningen ingen løsninger. ¾ En variabelerklæring kan indeholde en initialisering: Hvis ¼ har ligningen én løsning: int indkomst = 120000; Ü ¾ En tildeling ændrer en variabels værdi ved at skrive i datamatens lager: ambi = indkomst * 8.0 / 100; Hvis ¼ har ligningen to løsninger: Ô Ü Ü Ô Ó ¾ ¾ For at kunne vælge mellem de tre tilfælde skal vi bruge betingede ordrer (if). Programmering 1999 KVL Side 1-14 Programmering 1999 KVL Side 1-16

Eksempel: løsning af andengradsligningen ¾Ü ¾ Ü Eksempel: løsning af vilkårlige andengradsligninger public class Quadratic1 { public static void main(string[] args) { double a, b, c; a = 2; b = 3; c = -2; double d = b * b - 4 * a * c; if (d < 0) System.out.println("No solutions"); else if (d == 0) { System.out.print("One solution: "); System.out.println(-b / (2 * a)); else { System.out.print("Two solutions: "); System.out.print((-b - Math.sqrt(d)) / (2 * a)); System.out.print(" and "); System.out.println((-b + Math.sqrt(d)) / (2 * a)); public class Quadratic2 { public static void main(string[] args) { double a, b, c; a = new Double(args[0]).doubleValue(); b = new Double(args[1]).doubleValue(); c = new Double(args[2]).doubleValue(); double d = b * b - 4 * a * c; if (d < 0) System.out.println("No solutions"); else if (d == 0) { System.out.print("One solution: "); System.out.println(-b / (2 * a)); else { System.out.print("Two solutions: "); System.out.print((-b - Math.sqrt(d)) / (2 * a)); System.out.print(" and "); System.out.println((-b + Math.sqrt(d)) / (2 * a)); ¾ ¼ Programmering 1999 KVL Side 1-17 Programmering 1999 KVL Side 1-19 Betingede ordrer: if-else ordrer Generelt format: if (udtryk) ordre1 else ordre2 Virkning: (1) beregn værdien af udtryk (2) hvis true så udfør ordre1, ellers udfør ordre2 Dvs. at if-else ordren vælger mellem to ordrer, afhængig af udtryk. Kommandolinie-argumenter Det første argument på kommandolinien er args[0], det andet er args[1], osv. Fra tegnstreng til tal Et kommandolinieargument args[0] er en tegnstreng, f.eks. "234". Det er noget andet end et tal, f.eks. 234. For at kunne regne på det skal tegnstrengen "234" konverteres til et tal. Dette kan gøres med en indbygget metode (dvs. funktion): new Double("234").doubleValue() Værdien af dette udtryk er tallet 234. (I f.eks. Excel er der ingen klar skelnen mellem tal og tegnstrenge). Programmering 1999 KVL Side 1-18 Programmering 1999 KVL Side 1-20

To slags Java-programmer Appletter: vinduesorienterede programmer med visse begrænsninger Egentlige programmer: ingen begrænsninger Kurset underviser i begge dele. Appletter dog for alvor først til oktober. Særlige metoder i en applet Appletter vinduesorienterede programmer Sprogligt: fra engelsk application = program der gør noget nyttigt Deraf applet = småprogram (jævnfør engelsk: pig = gris, piglet = grisling) Metoden init() Kaldes når appletten startes. Sætter komponenterne (knapper, tekstfelter, osv.) op på skærmen. Simple eksempler: Klik1, Mandelbrot, Minestrygerspil,... Eksempler fra den virkelige verden: Byens puls (DSB S-tog), mange chat-systemer, Københavns Fondsbørs,... Appletter køres typisk som en del af en webside. Udvendigt viser appletten nogle komponenter: etiketter, knapper, tekstfelter,... Metoden actionperformed(event e) Metoden er en del af en ActionListener, knyttet til en bestemt komponent (knap). Kaldes hver gang brugeren har fremkaldt en hændelse vedrørende knappen. Metoden actionperformed udfører nogle Java-ordrer for at reagere på hændelsen. Komponenterne vises på skærmen, og kan påvirkes af brugeren. På den måde kommunikerer appletten og brugeren. Indvendigt består appletten af erklæringer, ordrer, udtryk og metoder Programmering 1999 KVL Side 1-21 Programmering 1999 KVL Side 1-23 Eksempel på en applet: Klik1.java import java.applet.applet; import java.awt.*; import java.awt.event.*; public class Klik1 extends Applet { Button knap = new Button("Klik her"); TextField vindue = new TextField(10); public void init() { add(knap); add(vindue); knap.addactionlistener(new ActionListener () { int antalklik = 0; public void actionperformed(actionevent e) { antalklik = antalklik + 1; vindue.settext(integer.tostring(antalklik)); ); Fire trin til at lave en knap Der erklæres en variabel knap til at repræsentere knappen internt: Button knap =...; Knappen oprettes internt i maskinen (med new): Button knap = new Button("Klik her"); Knappen vises på skærmen: add(knap); Der installeres en metode til at lytte efter knaptryk: knap.addactionlistener(new ActionListener () {... ) Programmering 1999 KVL Side 1-22 Programmering 1999 KVL Side 1-24

At køre appletter uden Internet-adgang Oversæt appletten med javac javac Klik1.java Skriv en lille HTML-fil og kald den runklik1.html: <HTML><BODY> <APPLET HEIGHT=400 WIDTH=400 CODE="Klik1.class"></APPLET> </BODY></HTML> Kør appletten med appletviewer: appletviewer runklik1.html Programmering 1999 KVL Side 1-25 Nye ord og begreber Java et moderne, generelt programmeringssprog Begreberne værdi (et tal, en streng,...) og type(familie af værdier) Programbestanddele: variabel, erklæring, udtryk, ordre Tildelingsordrer (=) Betingede ordrer (if) Forskellige typer af værdier: heltal, flydende-kommatal, tegnstrenge; konvertering Læs de udleverede Generelle Oplysninger Læsning for denne uge Lewis og Loftus, kapitel (2 og) 3, samt side 196 199 Programmering 1999 KVL Side 1-26