2013-01-22 725G69 Fortsättningskurs i programmering Hugo Quisbert 20130121 725G69 – Fortsättningskurs i programmering • Lärare & labb-handledare – Hugo Quisbert – Ivan Nilsson • Administratörer – Sofie Ekman Varför kursen? • Problematisk historia – IDAs fokus • Algoritm konstruktion, algotim optimering – Systemvetenskap fokus • Verksamhetsorienterad problemlösning 1 2013-01-22 Mål för kursen • Efter avslutad kurs ska den studerande kunna: – följa reglerna i programspråket Javas syntax, – redogöra för grundläggande objektorienterade begrepp – konstruera applikationer i programmeringsspråket Java Kursinnehåll • Kursens huvudsakliga innehåll är: – Fortsättning i objektorienterad programmering via klasser, inkapsling, överlagring, arv, polymorfism – Händelsehantering, grafiskt användargränssnitt och undantagshantering. – Databaskopplingar och nätverksprogrammering, fil – Abstrakta klasser och metoder – Generiska programenheter och samlingar Arbetsformer & examination • • • • Föreläsningar Labbar Inlämningsuppgifter Projekt • Specifika instruktioner för inlämning kommer senare 2 2013-01-22 Kommunikation • IT’s learning • E-post • Telefon: 0736569372 (Hugo) Kort repetition • Grundtankarna: plattformoberoende språk – säker i nätverk – kraftfull för att ersätta maskinberoendeexekverbar kod Kort repetition • Efterföljare till Oak - programmeringsspråk för ITV (Interactiv TV) • 1993 - Internet explosionen • JAVA är ett fullständigt programmeringsspråk – Man kan skapa fristående applikationer 3 2013-01-22 Översikt • Java är – kompilerande – ”interpreterande” • Kompilerande – fristående applikationer • interpreterande i en webb-bläddrare – Netscape, Internet Explorer, HotJava JVM Class Hej{ } Byte code-fil Hej.java Kompilator Hej.Class Hugo Quisbert © 11 JAVA virtuell maskin Byte code - fil Mac UNIX JVM PC JVM JVM Hugo Quisbert © 12 4 2013-01-22 JAVA virtuell maskin • Vad uppnår man med detta?? –Portabel applikation • till skillnad till ex C/C++ där källkoden är ”portabel” – som måste kompileras om… • Java applikationen exekveras av Java run-time Hugo Quisbert © 13 JAVA virtuell maskin • Java run-time är plattformberoende • Java har ca 22 grundläggande klasser som innehåller arkitektur-beroende metoder sk native methods – Dessa metoder är implemeterade i något annat språk Hugo Quisbert © 14 Java virtuell maskin Unix Windows Java metoder Nativa metoder Hugo Quisbert © 15 5 2013-01-22 JAVA virtuell maskin • Interpretatorer är långsamma • Java run-time-miljö optimerar Java byte-code till maskinkod (plattformens) under run-time • detta kallas ”just in time compilation” Hugo Quisbert © 16 JAVA - Språket • Java är objekt orienterad – objekt och klasser • Javas grundläggande enhet är class • en klass är komponent (mall) som bär exekverbar kod och data Hugo Quisbert © 17 Java – OO bygger på klasstaxonomi Växter Fanerogamer Angiospermer Dikotyledoner Kryptogamer Gymnospermer Monokotyledoner Hugo Quisbert © 18 6 2013-01-22 Java OOP • Minimum 4 egenskaper – inkapsling, inneslutning – Polymorfism – Arv – Dynamisk bindning Hugo Quisbert © 19 Java - Språket class HelloWorld { static public void main(String args[]){ System.out.println(”Hello world”); } } Filen som är källkoden till denna klass SKALL heta HelloWorld.java Den kompilerade filen kommer att heta: HelloWorld.class Hugo Quisbert © 20 Java datatyper • Primitiva datatyper är tre – numeriska – boolska – fält (array) Hugo Quisbert © 21 7 2013-01-22 Java datatyper • Numeriska datatyper – heltal • • • • byte: 8-bit short: 16-bit int: 32-bit long: 64-bit Hugo Quisbert © 22 Java datayper • Inga unsigned - heltal i Java – Flyttal • float: 32-bit • double: 64-bit • 23.79 är definierad double • explicit omvandling till float krävs Hugo Quisbert © 23 Java datatyper • Tecken – char unsigned 16-bit Unicode tecken • Unicode tabell 65536 olika tecken • 256 första tecken är Latin-1 • Latin-1 är ASCII-tabellen Hugo Quisbert © 24 8 2013-01-22 Java datatyper • Boolska datatyper – boolean 1-bit • true • false • Kan inte konverteras till numeriska typer Hugo Quisbert © 25 Java datatyper • Fält (array) • Kan vara av olika underliggande typ • Man kan deklarera, skapa multidimensionella fält Hugo Quisbert © 26 Algoritmik • I boken Datalogi – en inledande översikt refererar Lunell (1991, sid 286) till Donald Knuths definition: – En algoritm för ett problem är en metod för att lösa problemet i fråga i ett antal steg. Metoden består av ett antal operationer och en anvisning om i vilken ordning dessa skall utföras. Givet vissa förutsättningar leder metoden till efter ett ändligt antal operationer till det sökta resultatet. 9 2013-01-22 Algoritmik Här är exempel på operationer inom några olika områden: • Matlagning: • mäta upp råvaror, blanda, hacka, vispa • Materialbearbetning: • fräsa, borra, slipa, kapa • Montering: • svetsa, limma, skruva • Matematik: • de olika räknesätten Algoritmik • Kännetecken – Ändlighet. Algoritmen måste bli färdig efter ett ändligt antal steg, d.v.s. antalet operationer måste vara ändligt. Men antalet operationer behöver inte vara känt på förhand. – Bestämdhet. Varje steg i algoritmen måste vara entydigt och exakt definierat. – Indata. En algoritm har noll eller flera indata (input). – Utdata. En algoritm har en eller flera utdata (output), d.v.s. värden som beräknas av algoritmen. Utdata har en bestämd relation till indata. – Effektivitet. Varje steg i algoritmen ska i princip kunna utföras exakt och inom en ändlig tidsrymd av en människa som arbetar med papper och penna. Algoritmik • Komponenter – Sekvens (följd) – Selektion (val) – Iteration (repetition, upprepning eller loop) 10 2013-01-22 Algoritmik • Pseudokod – En algoritm kan uttryckas i naturligt språk eller som pseudokod eller illustreras med bilder eller grafiskt t ex i form av flödesplaner. Algoritmik Algoritm Kakrecept: Smält smöret. Sätt de torra ingredienserna i en skål. Repetera tills blandat: Rör om. slut repetera. Rör ner ägg och smör. Repetera tills klimpfritt: Vispa. slut repetera. Häll i form. Grädda. Slut Kakrecept. Flödesdiagram Start Smält smöret. Sätt de torra ingredienserna i en skål Ja Väl blandat? Nej Rör ner ägg och smör Rör om Ja Klimfpritt? Nej Häll i form. Grädda Vispa Stopp 11 2013-01-22 Flödesdiagram 12