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