INTRODUKTION TILL PROGRAMMERING

Slides:



Advertisements
Liknande presentationer
INTRODUKTION TILL PROGRAMMERING
Advertisements

Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Imperativ Programmering
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
Metoder i java Det finns två typer av metoder i java
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Programkodens uppbyggnad
Att programmera i språket Java
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Strömmar Vid läsning och skrivning används något som kallas strömmar.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
i olika programmeringsspråk
INTRODUKTION TILL PROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Klasser och objekt Klasser, objekt och instansvariabler
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Programmering B PHP Lektion 2
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
Programmeringsteknik för Media1 & K1
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Jonny Karlsson GRUNDKURS I PROGRAMMERING MED JAVA Föreläsning 9 ( ) INNEHÅLL: -Tabeller av klassobjekt -Användning av Java API specifikationen.
Föreläsning 14 ”Enkel” Filhantering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Föreläsning 10 Stränghantering.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
INTRODUKTION TILL PROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska operatorer och logiska uttryck -Referenstyper.
Föreläsning 4 Klasser Och Objekt.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 5 Klasser och instanser
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Presentationens avskrift:

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

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 11.10.2005

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 + 215 – 1 int 32 bitar (4 byte) -231 till + 231 – 1 long 64 bitar (8 byte) -263 till + 263 – 1 char Tecken i Unicodcode tabellerna * boolean true eller false float -3,40292347*1038 till +3,40292347*1038 double -1,79769313486231570*10308 till +1,79769313486231570*10308 * = Finns ej i C Jonny Karlsson 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005

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 11.10.2005