Programmering A Johan Eliasson johane@cs.umu.se 1
Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer och algoritmer Objektorienterad programmeringsmetodik mm. Programspråk Java, C, Objective C, ML, m. fl. 2
Institutionen för datavetenskap 2 + 2 utbildningsprogram Civ Ing. Teknisk datavetenskap, Interaktion och design Kandidatprogram Kognitionsvetenskap, Datavetenskap 4 Masterprogram C:a 90 anställda Forskning inom många olika ämnen: Artificiell intelligens och kognition, datalogi, datavetenskaplig didaktik, grid computing, 2
Eleven skall kunna något programmeringsspråks grundläggande datatyper, fördefinierade strukturer och funktioner samt deras regler och syntax kunna analysera programmeringsuppgifter och formulera strukturerad pseudokod samt konstruera enkla algoritmer kunna systemera och strukturera programmeringsarbetet samt skriva enkla program och felsöka källkod känna till kompilatorns/länkarens arbete från källkod till färdigt program 3
Eleven skall känna till viktiga operativsystemstandarder för bl.a. teckenkoder och utmatningsrutiner känna till språkens allmänna prestanda och egenskaper samt vilka programmeringsuppgifter de är bäst lämpade för. 4
Programmering i Java programmering exekvering exekvering <fil>.java <fil>.class Java programkod översättning kompilator Java bytekod exekvering 5
Programspråk Ett programspråk specificerar ord och symboler som får användas för att skriva program regler som bestämmer hur ord och symboler får sättas ihop Syntaxen beskriver hur giltiga programstrukturer (satser) måste se ut (grammatik) Tilldelning Identifier = Expression ; Värdet av uttrycket i expression tilldelas ( sparas i ) variabeln identifier. Semantiken beskriver vad precis olika satser betyder (dvs hur datorn ska tolka programmen) 6
Klass public class test { } All Java-kod måste stå i en klass 7
Metod public double getarea () { double temp = 0.0; temp = height * width / 2; return temp; } Utför någonting i en klass Metoden ovan beräknar t.ex. arean av en triangel return skickar tillbaka ett värde 8
Identifierare och variabler Identifierare är namn på olika storheter som definieras av programmeraren Identifierare får innehålla bokstäver (även åäö), siffror, understrykningstecknet (_), och valuta tecknen (t ex dollar tecknet) Identifierare får ej inledas med en siffra Identifier Java Letter Java Letter Java Digit Java Letter a - z A - Z $ _ Java Digit 0-9 9
Identifierare och variabler Identifierare måste vara entydiga Java skiljer på stora och små bokstäver, dvs Total är olika total Identifierare för värden eller objekt kallas variabler 10
Reserverade ord Reserverade ord får inte användas som identifierare Exempel på reserverade ord (det finns 59 stycken): abstract boolean class const class extends false float for if implements import int import private public return static this true void while Reserverade ord brukar visas i en annan färg i editorn 11
Variabler och datatyper Variabler används för att spara data Variabler måste deklareras med datatyp och namn innan de får användas Basic Variable Declaration Primitive Type Identifier ; Class Type, En primitiv datatyp kan vara heltal (byte, short, int, long), flyttal (float, double), tecken (char) eller boolean 12
Tilldelning av värden Variabler måste initialiseras Tilldelning Identifier = Expression ; En variabel tilldelas ett (nytt) värde genom = 14
Exempel int value, discount; double net_price; value = 123; net_price = 123.0; discount = -15; net_price = 1.23e2; char acharacter; acharacter = A ; acharacter = \n ; boolean continue = true; Initialisering är tillåten i samband deklarationen! 15
Primitiva datatyper: Hel- och flyttal De olika heltals och flyttals typerna har olika storlek Typ Storlek Minimum Maximum byte short int long 8 bits 16 bits 32 bits 64 bits -128-32,768-2,147,483,648 < -9 x 10 18 127 32,767 2,147,483,647 > 9 x 10 18 float double 32 bits 64 bits +/- 3.4 x 10 38 +/- 1.7 x 10 308 med 7 signifikanta siffror med 15 signifikanta siffror 16
Kommentarer Används för att förklara sådant som inte är självklart Finns två olika // Denna kommentar räcker till slutet av raden /* Allt mellan dessa är en kommentar */ Kompilatorn bryr sig inte om det som står i kommentarerna 17
Primitiva datatyper: Tecken En variabel av datatypen char sparar precis ett så kallat Unicode tecken Det finns 65,536 unika Unicode tecken (16 bit) med tecken och symboler från olika språk, t ex 'å' och 'ö' Alla tecken är ordnade och varje tecken motsvarar en siffra (detta underlättar att kolla om ett tecken ligger t ex mellan 'a' och 'z') 18
Primitiva datatyper: boolean En variabel av datatypen boolean innehåller antingen värdet true eller värdet false Används ofta för att definiera villkor logik Det finns tre logiska operatorer i Java inte (!), och (&&) och eller ( ) a!a a b a && b a b true false false true true true false false true false true false true false false false true true true false 19
Klassen String Hanterar textsträngar Skrivs inom String hälsning= Välkommen ; System.out.println(hälsning); Många operationer och operatorer ensträng + en till Sträng 20
Uttryck 1 Ett uttryck är en programkonstruktion som producerar (evalueras till) ett resultatvärde av en viss datatyp. Ett uttryck kan (bl a) vara: Ett enkelt värde -5, 1.23e2, c, true En variabel smallbluerectangle, PI En metodanrop atriangle.changesize(50, 100); En tilldelning height = newheight 21
Uttryck 2 Ett uttryck är en syntaktiskt korrekt kombination av enkla värden, variabler, metodanrop, tilldelningar och operatorer. Typiska exempel på operatorer: Aritmetiska, t ex +, -, *, /, Logiska:!, &&, Relationala, t ex ==,!=, <, >=, Uttryck kan vara komplexa Priotitetsordning används för att bestämma hur det ska evalueras 22
Prioritetsordning Operatorer med högre prioritet evalueras först Vid samma prioritet avgör associativiteten hos operatorerna (vänster-höger / höger-vänster) Uttryck: Evalueringsordning: Resultat: 5 + 12 / 5-10 % 3 6 3 1 4 2 Använd parenteser för att vara på säkra sidan 23
Exempel Uttryck 2 + 3 * 4 / 2 3 * 13 + 2 (3 * 13) + 2 3 * (13 + 2) 4 * (11-6) * (-8 + 10) (5 * (4-1)) / 2 Resultat 8 41 41 45 40 7 24
Uttryck 3 Resultatvärdets datatyp hos ett uttryck beror på operatorn och datatyperna hos operanderna. Uttryck 17 / 5 17.0 / 5 17 / 5.0 9 / 12 9 / 12.0 6 % 2 7 % 2 Resultat 3 3.4 3.4 0 0.75 0 1 int dollar = 25; float money; money = dollar; // OK, money blir 25.0 dollar = money; // FEL, typerna är // icke kompatibla 25