Presentation laddar. Vänta.

Presentation laddar. Vänta.

INTRODUKTION TILL PROGRAMMERING

Liknande presentationer


En presentation över ämnet: "INTRODUKTION TILL PROGRAMMERING"— Presentationens avskrift:

1 INTRODUKTION TILL PROGRAMMERING
Föreläsning 6 ( ) INNEHÅLL: Primitiva datatyper Referenstyper Arrayer Strängar Klasser och instansvariabler Utmatning på bildskärmen Inmatning från tangentbordet Jonny Karlsson

2 Datatyper Datatyperna i Java är i stora drag samma som i C.
Java definierar dock ett antal nya datatyper som inte finns i C. I Java finns två olika slags datatyper: Primitiva datatyper Referenstyper Jonny Karlsson

3 Primitiva datatyper i Java
En primitiv datatyp är en datatyp som finns definierat i språket från början. Primitiva datatyper i Java Namn Utrymme i minnet Värden * byte 8 bitar (1 byte) -27 till + 27 – 1 * short 16 bitar (2 byte) -215 till – 1 int 32 bitar (4 byte) -231 till – 1 long 64 bitar (8 byte) -263 till – 1 char Tecken i Unicodcode tabellerna * boolean true eller false float -3, *1038 till +3, *1038 double -1, *10308 till +1, *10308 * = Finns ej i C Jonny Karlsson

4 Referenstyper En referenstyp kan vara en arraytyp, klasstyp eller gränssnittyp. Dessa typer behandlas i vissa viktiga avseenden annorlunda än de primitiva datatyperna. Ett värde i en referenstyp kallas för objekt Referenstyperna kan i princip bli hur många som helst eftersom de kan skapas av programmeraren efterhand Jonny Karlsson

5 Arrayer (”arrays”) En array är en tabell/vekor som är en ändling följd av primitiva värden eller objekt där alla ingående värden har samma typ. Fungerar lika som tabeller i C, fast de skapas på ett lite annorlunda sätt. Man undviker i Java att tala om vektorer för att undvika sammanblandning med klassen vector. Värden i en array kallas för medlemmar. Jonny Karlsson

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

7 Skapande av arrayer Till skillnad från primitiva datatyper (t.ex. int) måste en array skapas (liksom andra referenstyper) innan ett värde kan tilldelas en medlem. a = new int[10]; En array 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. Förstå 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 array med plats för 10 heltal skrivs ej in i a, utan a tilldelas en //referens/pekare/handtag till arrayen som finns på en helt annan //plats i minnet Variablen a ovan berättar alltså på vilken plats i minnet arrayen finns. Jonny Karlsson

8 Skapande av arrayer När man skapar en array med nyckelordet new initialiseras automatiskt alla medlemmar av arrayen till ett visst värde. Exempel: int tab[] = new int[5]; //alla 5 medlemmarna i arrayen tab initialiseras till 0. Samma //gäller även andra tabeller av numerisk typ. Längden på en array kan i programkoden fås med: a.length För övrigt hanteras arrayer i Java på samma sätt som tabeller i C. Jonny Karlsson

9 Strängar Definierar en ändling följd av tecken.
I Java ugör strängar en klass kallad String. Klassen String innehåller en stor samling metoder för att manipulera strängar (en del av dessa tas upp lite senare) Till skillnad från strängar i C (char[ ]) är strängar i Java (String) oföränderliga, dvs. när en sträng skaptats kan den ej längra förändras utan i stället måste en ny sträng skapas. Jonny Karlsson

10 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”; Jonny Karlsson

11 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 m.h.a. instansmetoden equals() definierad i klassen String. Denna metod returnerar ett värde av typ boolean. Om jämförelseträngen man ger som parameter till metoden equals() är identisk med den sträng man jämför med, returneras värdet true, i annat fall värdet false. Se exemplet nedan: String s = ”pelle”; If(s.equals(”pelle”) == true) //denna if-sats blir ”true” if(s.equals(”ville”) == true) //denna if-sats blir ”false” Jonny Karlsson

12 Klasser Alla värden som hanteras i Java är antingen primitiva typer eller referenstyper. Referenstyper kallas vanligen objekt Ett objekt kan antingen vara en array eller tillhöra någon i ett program (eller bibliotek) definierad datatyp. Dessa definierade typer kallas för klasser. Ett värde (objekt) som hör till en viss klass kallas för en instans av klassen. Jonny Karlsson

13 Klasser Exempel: String s;
En ny variabel s deklareras ovan som är av typen String. String är en klass som definierar strängar och s blir nu ett nytt objekt eller en instans av klassen String. String är ett exempel på en klass som finns färdigt definierad i Java. Jonny Karlsson

14 Att skapa egna klasser Klasser kan även vid behov deklareras av programmeraren själv. En ny klass kan deklareras i en skild källkodsfil eller i samma källkodsfil som innehåller huvudklassen med tillhörande huvudfunktion (”main”-funktion). Tillsvidare behandlar vi hur man deklarerar klasser i samma källkodsfil. Jonny Karlsson

15 Att skapa egna klasser En egen klass i samma källkodsfil som huvudklassen deklareras enligt följande: public class mittJavaProg { public static void main(String args[ ]) } class Minklass Observera att huvudklassen och endast huvudklassen skall ha nyckelordet public. Huvudklassens namn bör vara samma som källkodsfilens namn. Jonny Karlsson

16 Klasser Vår tidigare deklarerade klass ”Minklass” var för enkelhetens skull en tom klass som varken gör någonting eller innehåller variabler. En klass kan innehålla bl.a. instansvariabler och instansmetoder. Tillsvidare går vi endast igenom instansvariabler. Jonny Karlsson

17 Klasser: instansvariabler
Exempel: Vi behöver ett program som hanterar olika egenskaper av en människa. Dessa egenskaper kan för enkelhetens skull nu vara endast födelseår och namn. Då skulle vi deklarera en ny klass för människa med två instansvariabler födelseår (int) och namn (String): class Manniska { int fodelsear; String Namn; } Observera att klassen ovan påminner om poster i C Jonny Karlsson

18 Klasser: skapa klassinstans/objekt
Om vi nu från huvudklassens huvudfunktion vill skapa en ny människa och till den nya människan tilldela ett värde för födelseår och ett värde för namn gör vi enligt följande: public class mittJavaProg { public static void main(String args[ ]) Manniska kalle; //Deklarerar en variabel ”kalle” av typen //”Manniska” kalle = new Manniska(); //skapar en instans av klassen ”Manniska”. //Adressen/referensen till klassen tilldelas //variabeln kalle. } Jonny Karlsson

19 Klasser: syftningsoperator
Efter detta kan den egna klassens instansvariabler kommas åt m.h.a. punktnotation (precis som vid användning av poster i C): kalle.fodelsear = 1977; kalle.namn = ”Karl Karlsson”; Punktteknet som används här kallas i Java för syftningsoperator Jonny Karlsson

20 Utmatning på bildskärmen
Utmatning av data på bildskärmen kan i DOS-baserade Java program göras med: System.out.println(); Statiska tecken matas ut enligt följande: System.out.println(”Hej på er alla”); Utskrift av specialtecken och radbrytstecken fungerar lika som med funktionen printf i C: System.out.println(”\”Att vara eller icke vara\” sade Shakespear\n”); println sätter automatiskt in ett radbrytstecken i slutet av varje sats. Jonny Karlsson

21 Utmatning på bildskärmen
Utmatning av variabelvärden: int tal = 599; String s = ”Pekka” System.out.println(tal); //skriver ”599” på bildskärmen System.out.println(s); //skriver ”Pekka” på bildskärmen Variabler och statisk text kan slås ihop i en println-sats m.h.a. + operatorn: System.out.println(”Namnet på gubben är: ” + s); //skriver ”Namnet på gubben är: //Pekka” på bildskärmen System.out.println(s + ” är ” + tal + ” år gammal”); //skriver ”Pekka är 599 år gammal” på //bildskärmen Jonny Karlsson

22 Inmatning från tangentbordet
Inte lika enkelt som utmatning till bildskärmen. Vissa element behövs för att kunna läsa in information som man skriver in från tangentbordet: InputStreamReader BefferedReader Eftersom innebörden i ovanstående element kräver mer kunskap i programmering än vi hittils fått, nöjer vi oss tillsvidare med att endast lära oss hur syntaxen ser ut för att få inmatningen från tangentbordet att fungera: Följande rad bör sättas in någonstans i början av main funktionen: BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); Jonny Karlsson

23 Inmatning från tangentbordet
Klassbiblioteket java.io.* måste importeras för att få inläsningsfunktionerna att fungera. (Detta kan jämföras med att inkludera biblioteksfiler i C). Importeringar av klassbibliotek sker alltid först i källkodsfilen: import java.io.*; Efter detta kan man använda metoden readLine() via objketet/instansen in för att läsa in data från tangentbordet: in.readLine(); Användning av readLine() metoden kräver att metoden varifrån readLine() anropas skall definieras att antingen hantera eller ignorera IO felmeddelanden. Se exemplet på följande sida. Jonny Karlsson

24 Inläsning av strängar Metoden readLine() returnerar det data användaren matat in från tangentbordet i String format. Man kan således lätt läsa in data från tangenbordet till en String instans: import java.io.*; public class minklass { public stativ void main(String args[]) throws IOException BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String s; s = in.readLine(); } Jonny Karlsson

25 Inläsning av numeriska värden
Är lite mer komplicerat än inläsning av heltal i C eftersom man i DOS-baserade Java program inte direkt kan läsa in ett heltal och spara talet i en heltalsvariabel. readLine() metoden returnerar alltid inmatat data från tangenbordet i String format. Man måste därför konvertera datat till ett heltal innan datat kan sparas i en heltalsvariabel. För att konvertera data från String till int kan man utnyttja en klass som heter Integer och en av dess instansmetoder, parseInt: BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String text; int heltal; text = in.readLine(); int heltal = Integer.parseInt(text); Jonny Karlsson

26 Inläsning av numeriska värden
På samma sätt som man konverterar teckensträngar till heltal kan man konvertera teckensträngar till flyttal (float) m.h.a.: klassen Float och instansmetoden parseFloat. och teckensträngar till större flyttal (double) m.h.a.: klassen Double och instansmetoden parseFloat. Jonny Karlsson


Ladda ner ppt "INTRODUKTION TILL PROGRAMMERING"

Liknande presentationer


Google-annonser