Presentation laddar. Vänta.

Presentation laddar. Vänta.

Jonny Karlsson 27.11.2007 1 INTRODUKTION TILL PROGRAMMERING Föreläsning 4 (27.11.2007) INNEHÅLL: -Referenstyper -Tabeller -Strängar -Operatorer: tilldelning.

Liknande presentationer


En presentation över ämnet: "Jonny Karlsson 27.11.2007 1 INTRODUKTION TILL PROGRAMMERING Föreläsning 4 (27.11.2007) INNEHÅLL: -Referenstyper -Tabeller -Strängar -Operatorer: tilldelning."— Presentationens avskrift:

1 Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Referenstyper -Tabeller -Strängar -Operatorer: tilldelning -Operatorer: upp- och nedräkning -Repetitionssatser: do-satsen -Repetitionssatser: for-satsen

2 2Jonny Karlsson Referenstyper En referenstyp kan vara en arraytyp, klasstyp eller gränssnittyp. Dessa typer behandlas i vissa viktiga avseenden annorlunda än de primitiva datatyperna (de datatyper vi lärt oss hittils dvs. int, float osv.). En referenstyps värde kallas för objekt Referenstyperna kan i princip bli hur många som helst eftersom de kan skapas av programmeraren själv.

3 3Jonny Karlsson Tabeller Är en variant av referenstyp (arraytyp). Används för att lagra en mängd olika variabler av samma datatyp i datorns minne. Brukar även kallas för vektorer eller ”arrays” En tabell kan behövas när man vill göra ett program som skall beräkna t.ex. medeltalet av ett visst antal värden. Tabeller behövs även vid lagring av teckensträngar i datorns minne. En tabells värden eller element brukar man kalla för medlemmar.

4 4Jonny Karlsson Tabeller Deklaration av en tabell int [ ] a; eller int a [ ]; Detta deklarerar variabeln a som är en tabell av typen int. Variabeln a är egentligen en referens till en array och specificerar ingen längd på arrayen.

5 5Jonny Karlsson Tabeller Att skapa tabeller Till skillnad från primitiva datatyper (t.ex. int) måste en tabell skapas (liksom andra referenstyper) innan ett värde kan tilldelas en medlem. a = new int[10]; En tabell med plats för 10 värden av typ int skapasoch a knyts till denna array. new är ett nyckelord som används för att skapa nya objekt.

6 6Jonny Karlsson Tabeller Skillnaden mellan variabler av primitiv typ och referenstyp: x = 360; //värdet 360 skrivs in i variabeln x dvs. den plats i minnet som betecknas //med x a = new int[10]//En tabell med plats för 10 heltal skrivs ej in i a, utan a tilldelas en //referens/pekare/handtag till tabellen som finns på en helt annan //plats i minnet Variablen a ovan berättar alltså på vilken plats i minnet tabellen finns. Variabeln a är alltså i detta fall en referenstyp och a-variabelns värde, dvs referensvärdet till minnesplatsen, är ett objekt

7 7Jonny Karlsson Tabeller När man skapar en tabell med nyckelordet new initialiseras automatiskt alla medlemmar av tabellen till ett visst värde. Exempel: int tab[] = new int[5];//alla 5 medlemmarna i tabellen tab initialiseras till 0. Samma //gäller även andra tabeller av numerisk typ. Längden på en tabell kan i programkoden fås med: tab.length;//tab.length skulle i exemplet ovan ha värdet 5

8 8Jonny Karlsson Tabeller Tilldelning av värden åt tabellmedlemmar En tabells medlemmar kan tilldelas värden på följande sätt: float tabell[];//deklarerar en tabell av typen float tabell = new float[4];//skapar en tabell med 4 medlemmar tabell[0] = 1.5;//första platsen/medlemmen i tabellen får värdet 1.5 tabell[1] = 22.89;//andra ’’ får värdet tabell[2] = 11.4; //andra ’’ får värdet 11.4 tabell[3] = 48.96; //andra ’’ får värdet OBS! första platsen i en tabell är 0 och inte 1 Ovanstående programkod skulle resultera i följande tabell  En viss tabellmedlem betäcknas med- och är åtkomlig m.h.a. ett indexvärde.  indexvärde

9 9Jonny Karlsson Strängar Definierar en ändling följd av tecken. (teckensträng) I Java ugör strängar en klass kallad String. Klassen String innehåller en samling metoder för att manipulera strängar (en del av dessa tas upp lite senare) String är också liksom tabeller en referenstyp

10 10Jonny Karlsson Strängar En sträng deklareras enligt följande: String s; En sträng deklareras och initialiseras: String s2 = ”Kalle Anka”; En sträng tilldelas ett värde: s2 = ”Musse Pigg”;

11 11Jonny Karlsson Strängar Två strängar kan konkateneras/slås ihop med + operatorn: String str1 = ”Kalle”, str2 = ”Anka”; nystring = str1 + str2; //innehållet i nystring blir ”KalleAnka”; Två strängar kan jämföras på samma sätt som primitiva datatyper m.h.a. jämförelseoperatorn (==). Se exemplet nedan: String s = ”pelle”; String s2 = ”pelle”; If(s == ”pelle”)//denna if-sats blir ”true” if(s == s2)//denna if-sats blir ”true” If(s2 == ”ville”)//denna if-sats blir ”false” 

12 12Jonny Karlsson Operatorer: tilldelning =  Tilldelningsoperator Det som finns till höger om tilldelningsoperatorn utvärderas, och resultatet lagras i den variabel som finns till vänster om tilldelningsoperatorn. Exempel: a = a + b;//resultatet av a + b lagras i variabeln a Tilldelningssatsen ovan kan förenklas på följande sätt: a += b;//ger samma resultat som a = a + b Samma förenkling kan göras med samtliga aritmetiska operatorer: a -= b;//ger samma resultat som a = a - b a *= b;//ger samma resultat som a = a * b a /= b;//ger samma resultat som a = a / b

13 13Jonny Karlsson Operatorer: upp- och nedräkning ++  Uppräkningsoperator --  Nedräkningsoperator En uppräknings- eller en nedräkningsoperator placeras antingen före eller efter en operator/uttryck. ++heltal  Prefix heltal++  Postfix Nedräkningsoperatorn minskar en variabels värde med 1 och uppräkningsoperatorn ökar en variabels värde med 1

14 14Jonny Karlsson Operatorer: upp- och nedräkning int helatal = 0; heltal = helatal - 1;//heltal har nu värdet -1 --heltal;//heltal har nu värdet -2 heltal = heltal + 1;//heltal har nu värdet -1 heltal++;//heltal har nu värdet 0

15 15Jonny Karlsson Operatorer: upp- och nedräkning Det har betydelse om man använder prefix (operatorn före variabeln) eller postfix (operatorn efter variabeln). Följande satser ger olika resultat: (låt oss anta att heltal har värdet 1) //sats1: a = heltal++;//a får värdet 1 och heltal får värdet 2. (a tilldelas värdet i heltal och //först sen inkrementeras heltal med 1 //sats2: a = ++heltal;//a får värdet 2 och heltal får värdet 2. (heltal inkrementeras först //med 1 och sedan tilldelas variabeln a värdet i variabeln heltal

16 16Jonny Karlsson Repetitionssatser: do-satsen dosats;while(uttryck); do-satsen är likadan som while-satsen med den skillnaden att utrycket testas först efter utförd sats. I while-satsen testas uttrycket före utförd sats. do{ scanf(”%d”, &i); gör någåt med i; } while(i < 0); 

17 17Jonny Karlsson Repetitionssatser: for-satsen Är mycket användbar! Har följande allmänna form: for(uttyck1; utryck2; utryck3) sats; Satsen ovan är ekvivalent med följande while-sats: utryck1:while(uttryck2){sats;uttryck3;}

18 18Jonny Karlsson Repetitionssatser: for-satsen for(uttyck1; utryck2; utryck3) sats; uttryck1 =Utförs allra först och endast en gång. Är ofta en initialisering av en variabel. uttryck2=Jämförelseuttryck t.ex. (a < b). Om detta uttryck är sant utförs sats. Om detta uttryck är falskt hoppar programmet bort från for-satsen uttryck3=Utförs alltid efter sats. Är vanligen en inkrementering av den variabel som initialiserats i uttryck1

19 19Jonny Karlsson Repetitionssatser: for-satsen Exempel: programmet läser in 10 värden från tangentbordet och sparar dessa i tabell int tabell = new int[10]; int index; for(index = 0; index < 10; index = index+1) tabell[index] = input.readInt(); Exempel2: Se simulering av for-satsen simulering av for-satsensimulering av for-satsen

20 20Jonny Karlsson Problem 1 Gör ett Java-program som ritar en triangel av gångertecken enligt önskad höjd, se programkörningen nedan. Om använderan t.ex. anger höjden 4, skall programmet rita ut ett gångertecken på första raden, 2 gångertecken på andra raden,.... och 4 gångertecken på fjärde och sista raden. Lös problemet med for-satser! Se lösninglösning

21 21Jonny Karlsson Problem 2 Gör ett Java-program som frågar efter N antal helatal. N måste vara ett heltal mellan 5 och 10. Om ett felaktigt värde ges ber programmet användaren mata in N pånytt (lös problemet med do-satsen). Sedan ber programmet användaren mata in N antal heltal och visar till slut heltalen på bildskärmen i omvänd ordning (använd for-satser vid inläsning och visning på bildskärmen).


Ladda ner ppt "Jonny Karlsson 27.11.2007 1 INTRODUKTION TILL PROGRAMMERING Föreläsning 4 (27.11.2007) INNEHÅLL: -Referenstyper -Tabeller -Strängar -Operatorer: tilldelning."

Liknande presentationer


Google-annonser