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