INTRODUKTION TILL
PROGRAMMERING
Föreläsning 1 (6.11.2007)
INNEHÅLL:
-Introduktion av kursen
-Vad är programmering?
-Programmeringsspråk och verktyg
-Introduktion till Java
-Strukturen av ett textbaserat Java program
-Utmatning av text på bildskärmen
-Programmeringsprocessen
-Flödesschema
Jonny Karlsson 6.11.2007
1
Introduktion av kursen
Se: http://people.arcada.fi/~karlssoj/introtillprogr
Jonny Karlsson 6.11.2007
2
Vad är programmering?
Som programmerare behöver man vanligtvis inte veta så mycket datorer
Man klarar sig mycket långt endast med följande modell:
Jonny Karlsson 6.11.2007
3
Vad är programmering?
Processorn
•
•
•
Gör själva databehandlingen
Utför instruktioner som ingår i en viss instruktionsuppsättning
Instruktionerna handlar om att på någåt sätt manipulera binära data (förstår endast
1:or och 0:or dvs ström på och ström av)
Arbetsminnet
•
För att instruktioner skall kunna behandlas av processorn måste de först lagras hit
I/O-enheter
•
•
•
I/O står för Input/Output
En inenhet är en typ av utrustning för att mata in data till datorn, t.ex. Tangentbord,
mus och mikrofon.
En utenhet används när en dator lämnar ifrån sig data till omvärlden. Kan t.ex vara
en bildskärm eller en högtalare.
Jonny Karlsson 6.11.2007
4
Vad är programmering?
Programmera. Ett sätt att indirekt kommunicera med datorns processor. Man ger
instruktioner åt processorn för att berätta vad man vill att datorn skall göra.
För att datorns processor skall kunna tolka ett program måste programmet bestå av
maskinkod / sekvens av binära instruktioner.
När instruktionerna i ett maskinkodsprogram utförs av datorns processor så säger vi
att programmet utförs, körs eller exekveras
Jonny Karlsson 6.11.2007
5
Programmeringsspråk och verktyg
Att skriva maskinkodsprogram är mycket krävande och större program är i praktiken
omöjliga att direkt koda binärt.
Av denna orsak har det utvecklats verktyg kallade programmeringsspråk
Programmerinsspråk tillåter programmeraren att koda instruktioner på ett sätt som är
betydligt lättare att förstå än maskinkod.
Det finns högnivåprogrammeringsspråk och lågnivåprogrammeringsspråk
Jonny Karlsson 6.11.2007
6
Programmeringsspråk och verktyg
Lågnivå-programmeringsspråk
Ett lågnivå-programmeringsspråk är ganska likt maskinkoden. Begreppet ”lågnivå”
kommer från att ”programkoden ligger nära processorn”.
Ett lågnivå-programmeringsspråk används vanligtvis för krävande
programmeringsproblem som inte kan lösas med ett högnivåspråk.
Jonny Karlsson 6.11.2007
7
Programmeringsspråk och verktyg
Högnivå-programmeringsspråk
Fördelar:
Lättare för programmeraren att förstå jämfört med lågnivåkod
Är maskinoberoende. Assembler- och maskinkodsinstruktioner är alltid bundna till en
viss processor
Jonny Karlsson 6.11.2007
8
Programmerinsspråk och verktyg
Instruktioner skrivna i ett högnivåspråk måste översättas till maskinspråk. Detta sköter
Datorn själv med hjälp av ett verktyg som kallas kompilator.
En samling instruktioner man skrivet ner i ett programmeringssrpåk kallas för källkod.
Processen att översätta källkod till maskinkod kallas för kompilering.
Jonny Karlsson 6.11.2007
9
Programmerinsspråk och verktyg
Lågnivå-programmeringsspråk
Assembler
Högnivå-programmeringsspråk
Basic
Pascal
Fortran
C
C++
Java
Jonny Karlsson 6.11.2007
10
Introduktion till Java
Java är ett objektorienterat programmeringsspråk utvecklat av Sun Microsystems på
1990-talet.
Java är lätt att lära sig, jämfört med andra objektorienterade programmeringsspråk, p.g.a.
Java har samlat ihop de bästa delarna av de äldre objektorienterade
programmeringsspråken.
Java kan användas för att skriva program för så gott som alla operativsystem, i WEBProgram, i mobiltelefoner och även i smartkort/SIM-kort.
Olika typer av Java program:
• Program med textbaserat gränssnitt
• Program med grafiskt användargränssnitt
• ”Applets” som kan köras i Internet bläddrare
• ”MIDLets” som kan köras i mobiltelefoner
Jonny Karlsson 6.11.2007
11
Introduktion till Java
Kompilering
I Java används en annan typ av kompilering än den standard kompileringstyp som
beskrevs i slide 9.
Vid standard kompilering resulterar kompileringen i en exekverbar programfil (i Windows
programfil.exe) som är beroende av operativsystemet (dvs en exekverbar programfil
kompilerad för Windows kan inte exekveras i Linux och tvärtom)
En Java-källkod kompileras inte av Javakompilatorn till maskinkod utan till en
maskinoberoende bytekod (bytekodfil.class).
Denna bytekod kan inte direkt exekveras utan det behövs för datorn ett ytterligare
program som kallas interpretator.
Jonny Karlsson 6.11.2007
12
Introduktion till Java
Tolkning
Interpretatorn tolkar bytekoden till maskinkod allteftersom programmet exekveras
Interpretatorn i Java kallas för Virtuell Maskin (VM). Mer känt efter det engelska namnet
”Virtual Machine”.
Jonny Karlsson 6.11.2007
13
Introduktion till Java
Fördelen med interpretator modellen är att det kompilerade Javaprogrammet är helt
plattformsoberoende och kan köras på vilken dator som helst med viken hårdvara och
vilket operativsystem som helst förutsatt att det på datorn finns en interpretator/Virtuell
Maskin.
Själva VM är däremot plattformsberoende.
Jonny Karlsson 6.11.2007
14
Strukturen av ett textbaserat
Javaprogram
Ett minimalt textbaserat Java program kan se ut så här:
Källkoden för ett Java program byggs upp av en eller flera klasser och varje klass kan
innehålla en eller flera metoder.
Ett Java program bör bestå av minst en klass och denna klass bör innehålla en metod
som kallas huvudmetod (”main-metod”).
.
Jonny Karlsson 6.11.2007
15
Strukturen av ett textbaserat
Javaprogram
I exemplet ovan har vi definierat en klass som heter HelloWorld.
Klassen kan heta precis vad som helst men namnet på klassen måste vara samma som
namnet på källkodsfilen dit källkoden sparas.
Källkoden ovan måste således sparas i en källkodsfilfil som heter HelloWorld.java.
Observera att en Java källkodsfil bör ha filändelsen .java
Källkoden kan skrivas i ett enkelt ordbehandlingsprogram som t.ex. Wordpad eller
Notepad
Jonny Karlsson 6.11.2007
16
Strukturen av ett textbaserat
Javaprogram
I Java-koden kan man binda ihop flera kodrader med hjälp av att använda bågparenteser
{ och }. Det som finns mellan ett {-tecken och ett }-tecken kallas för ett block.
Genast efter raden som definierar klassen HelloWorld finns ett {-tecken. Detta tecken
betyder att klassen HelloWorld börjar här.
Längst ner i källkoden finns ett }-tecken. Detta tecken berättar att klassen HelloWorld
slutar här.
M.a.o. Allt som finns mellan dessa { och } tecken hör till klassen Helloworld
Jonny Karlsson 6.11.2007
17
Strukturen av ett textbaserat
Javaprogram
Huvudmetoden main (OBS! Denna metod bör alltid heta main) avgränsas också med
hjälp av bågparenteser på samma sätt som klassen HelloWorld.
Dessa bågparenteser bildar ett metodblock.
I huvudmetodens metodblock definieras m.h.a programsatser vad programmet skall
göra när det exekveras.OBS varje programsats avslutas med ett semikolon (förutom
vissa undantag).
I detta fall har vi i huvudmetodens metodblock definierat att programmet skall skriva ut
texten ”Hello World” på datorns bildskärm
Jonny Karlsson 6.11.2007
18
Strukturen av ett textbaserat
Javaprogram
Tillsvidare går vi inte in i detalj på funktionaliteten av klasser och metoder utan vi
nöjer oss med den enklaste typen av program som endast har en
klass och en huvudmetod.-
Jonny Karlsson 6.11.2007
19
Kompilering och exekvering av Java
program
Java program kompileras med en kompilator som kallas Javac
Javac kan användas direkt via ett konsolfönster eller så kan det användas
tillsammans med ett Java programmeringsverktyg
Jonny Karlsson 6.11.2007
20
Kompilering och exekvering av Java
program
Kompilering från DOS konsolfönstret
Kompilering av ett nyskrivet Java program sker så att man från den filkatalog där
källkodsfilen ligger anropar Java kompilatorn javac och anger källkodsfilen som
argument:
javac prognamn.java
Detta skaper bytekod-filen: prognamn.class
Jonny Karlsson 6.11.2007
21
Kompilering och exekvering av Java
program
Exekvering av Java program från DOS konsolfönstret
För att exekvera ett Java program anropar man Java-interpretatorn och anger
klassnamnet som argument:
java prognamn
Observera att man endast ger namnet på klassfilen och lämnar bort filendelse (dvs.
inte prognamn.class)
Jonny Karlsson 6.11.2007
22
Kompilering och exekvering av Java
program
För att kunna kompilera och exekvera Java program behöver man en Java kompilator
(Javac) och en Java interpretator/Virtuell maskin på sin dator.
Från SUNs hemsidor kan man gratis ladda ner ett Java utvecklingsprogrampaket som
heter J2SE Development Kit (JDK).
JDK innehåller både en Java kompilator och interpretator.
Nyasta versionen av JDK kan laddas från:
http://java.sun.com/javase/downloads/index.jsp
Jonny Karlsson 6.11.2007
23
Kompilering och exekvering av Java
program
Det finns även grafiska programutvecklingsverktyg för Java program
Ett exempel på ett sådant är JCreator.
JCreator är gratis och nyaste versionen kan laddas ner från:
http://www.jcreator.com/download.htm
Med JCreator kan man enkelt editera källkod, kompilera och exekvera program utan att
behöva ge kommandon från DOS konsolen.
OBS! JCreator är endast en editor och innehåller ingen egen Java kompilator eller
interpretator. För att JCreator skall fungera måste man först installera JDK.
Jonny Karlsson 6.11.2007
24
Utmatning av text på bildskärmen
För att göra ett program som skriver en textrad på bildskärmen kan man anropa
metoden: println (namnet kommer från ”print line”)
metoden println anropas enligt följande:
system.out.println(parameter);
parameter = Det man vill att programmet skall skriva ut.
Om man vill att programmet skall skriva ut texten ”hej” på bildskärmen anropar man
println på följande vis:
system.out.println(”hej”);
Observera att om man vill skriva ut statisk text så skall den texten sättas innanför
citationstecken
Jonny Karlsson 6.11.2007
25
Utmatning av text på bildskärmen
Metoden println förorsakar alltid ett radbryte i slutet, dvs. följande metodanrop:
System.out.println(”Ville”);
System.out.println(”Peter”);
ger följande utskirft på bildskärmen:
Ville
Peter
Programmet som helhet skulle se ut så här:
public class utmatning
{
public static void main(String[] args)
{
System.out.println(”Ville”);
System.out.println(”Peter”);
}
}
Jonny Karlsson 6.11.2007
26
Programmeringsprocessen
1.
Definiera problemet
2.
Planera lösningen (flödesschema, pseudokod)
3.
Koda programmet (måste följa en viss syntax / ett visst programmeringsspråk)
4.
Testa programmet (finn logiska fel)
5.
Dokumentera programmet
I själva verket hänger dokumenteringsskedet med i alla ovannämnda punkter.
Jonny Karlsson 6.11.2007
27
1. Definiera problemet
Analysera problemt/verksamheten hos kunden/beställaren.
Input: vad vet vi om verksamheten/problemet/behovet?
Output: Vad vill vi åstadkomma? (resultatmålet)
Jonny Karlsson 6.11.2007
28
2. Planera för lösningen
Flödesschema

Grafiskt diagram över ”programmet”

Aktiviteter i programmet
Pseudokod

”Programmet” skrivet på ”ren svenska”
Jonny Karlsson 6.11.2007
29
3. Koda programmet
Källkoden måste följa en viss syntax, vilket programmeringssprk ska vi välja?
Programmeraren använder sig av någon editor, texteditor eller programmeringseditor
Jonny Karlsson 6.11.2007
30
4. Testa programmet
Kompilera  hittar vi några syntaxfel?
Avlusning (debugging)  Hittar vi några ”logiska” fel?
Jonny Karlsson 6.11.2007
31
5. Dokumentera programmet
Ska egentligen göras kontinuerligt under hela utvecklingsprocessen
Dokumentationen bör minst innehålla:
Problemanalysen
”Verbal” beskrivning av programmets funktion
Flödesschema, pseudokod
Källkod med kommentarer
Testresultat
Jonny Karlsson 6.11.2007
32
Flödesschema
Ett grafiskst diagram över ett program
Kan användas som hjälp under planeringsstadiet
Jonny Karlsson 6.11.2007
33
Flödesschema
Jonny Karlsson 6.11.2007
34