Presentation laddar. Vänta.

Presentation laddar. Vänta.

1 Stefan Möller Skiv- minne CD-läsare Diskett-läsare Sekundär- minnes- enheter (SM) Central-enhet PMCPU BIOS.

Liknande presentationer


En presentation över ämnet: "1 Stefan Möller Skiv- minne CD-läsare Diskett-läsare Sekundär- minnes- enheter (SM) Central-enhet PMCPU BIOS."— Presentationens avskrift:

1 1 Stefan Möller Skiv- minne CD-läsare Diskett-läsare Sekundär- minnes- enheter (SM) Central-enhet PMCPU BIOS

2 2 Stefan Möller Primär-minne (PM)Processor (CPU) Vektor av minnesceller 8 bitar = 1 byte, 4 byte = 1 ord t ex 256 MB (megabyte - miljoner byte) program-instruktioner & -data R1 R2 Ett antal register... Styr- enhet Aritmetisk enhet

3 3 Stefan Möller Olika nivåer av program Maskinkod (binär kod) Ett antal (t ex 32) ettor/nollor Krångligt att skriva direkt Assemblerkod Mnemoniska namn för instruktioner Add #25 to R3 Ett-till-ett matchning mot maskinkod Olika instruktioner beroende på dator Högnivåspråk Mer kraftfulla instruktioner if (x!=5) x+=10; Ger 5-10 maskininstruktioner Ej beroende av datorsystem T ex Pascal, C, C++, Java

4 4 Stefan Möller Kod i högnivåspråk måste översättas till maskinkod. Kompilering: Interpretering: Källkod i högnivåspråk Kompilator Olika beroende på datorsystem Maskinkod som kan exekveras i datorsystemet Källkod i högnivåspråk Interpretator Olika beroende på datorsystem Läser en instruktion i taget, översätter till maskinkod och exekverar

5 5 Stefan Möller Programmering IndataProgramUtdata Data kan vara av olika typ: ”Kalle Nilsson” Bil: Volvo ’X’ ABC 123 Röd true ”Stockholm”7300 mil Måste representeras i programmet.

6 6 Stefan Möller Javas Primitiva Datatyper Heltalstyper: byte8 bitar short16 bitar int32 bitar long64 bitar Flyttalstyper: float32 bitar double64 bitar Övriga: charUnicode 16 bitar booleantrue / false Textsträngar (INTE primitiv datatyp): String

7 7 Stefan Möller Litteraler Deklaration Tilldelning Utskrift Inläsning Selection Iteration

8 8 Stefan Möller if-satsen if ( ) ; if ( ) ; else ; Nästlade if-satser int x=8; if (x>5) System.out.println(x); if (x<10) x++; else x--; //Kan även skrivas så här: if (x<10) x++; else x--; if (x>25) if (x<50) System.out.println(”Mellan 25 och 50”); else System.out.println(”50 eller större”); else System.out.println(”25 eller mindre”);

9 9 Stefan Möller Villkor (booleska uttryck) Jämförelse-operatorer: >= == != (operanderna enkla datatyper) Logiska operatorer: && || ! (fullständigt utvärderande: & | ) String’ar jämförs INTE med dessa operatorer. String s1=”Hej”, s2=”Hopp”; if ( s1.equals(s2) )... ; //equals returnerar true om INNEHÅLLET i s1 och s2 är lika int x = s1.compareTo(s2); //compareTo returnerar ett positivt tal om s1 > s2 //ett negativt tal om s1 < s2 samt 0 om s1 = s2

10 10 Stefan Möller switch-satsen switch ( ) { case : case : default: } ”Hoppar” till den case som matchar uttrycket. Exekverar resten av programsatserna. break-satsen bryter switch break; (kan även användas på loopar) Uttryck och värde måste vara av heltalstyp eller char int x, tal=10; //x får ett slumpvärde switch(x){ case 1: System.out.println(tal); case 2: case 3: System.out.println(++tal); case 4: System.out.println(tal++); default: System.out.println(tal); }

11 11 Stefan Möller while - loopen while ( ) ; do ; while ( ); - booleskt uttryck - valfri programsats om flera satser inom { } - block break; //bryter loopen continue;//börja om nästa varv villkor sats true false villkor sats false true

12 12 Stefan Möller for-loopen for ( ; ; ) ; Skriv ut talen : for (int x=1; x<=10; x++) System.out.println(x); Man kan utelämna någon del: int x=1; for ( ; x<=10; x++) System.out.println(x); for (int y=1; y<=10; ) System.out.println(y++); initiering villkor programsats uppräkning true false

13 13 Stefan Möller Skriv en programsnutt som skriver ut en tabell över celsius-temperaturer & motsvarande fahrenheit-temperaturer var 10’de celsius i intevallat 10-90: Förväntat utseende: Celsius Fahrenheit System.out.println("Celsius Fahrenheit"); System.out.println(" "); for (int cels=10; cels<100; cels+=10){ int fahr=(int)(9.0/5.0*cels+32); System.out.println(" "+cels+" "+fahr); }

14 14 Stefan Möller Operatorer PrioritetsordningOperatorer 1[]. (metod anrop) ~ ! 3new (cast) 4* / % > >>> 7 >= instanceof 8== != 9& 10^ 11| 12&& 13|| 14?: 15= += -= *= /= %=

15 15 Stefan Möller Flera variabler av samma sort - arrayer Varje variabel som deklareras får ett utrymme i primärminnet. int tal; double d; tal=43; d=7.85; En array deklareras som [ ] int[] arr; arr (inget utrymme finns...) Utrymmet måste skapas, görs med new arr = new int[5]; arr[0]=28; arr arr[1]=43; arr[2]=12; arr[3]=19; arr[4]=193; 43 tal 7.85 d

16 16 Stefan Möller Array Deklaration: int[] arr; int arr[];//Alternativ deklarering Skapas med new arr=new int[25];//Alltid index från 0 och uppåt Indexering med [ ] arr[3]=12; Längden kan kollas med length int max=arr.length;//max får värdet 25 Initiering vid deklaration int[] kvadrater={0, 1, 4, 9, 16, 25, 36};

17 17 Stefan Möller Om vi vill representera mer komplexa objekt? T ex bilar som har ett bilmärke, ett registreringsnummer, en färg samt en mätarställning. Volvo ABC 123 Röd 7300 Saab XYW 987 Vit 3800 Fiat MSQ 545 Svart Att ”samla ihop” flera attribut på detta sätt görs i klasser. Vi behöver alltså nu en klass Bil som skall ha attributen märke, regnummer, färg och mätarställning. Klasser kan innehålla mer än attribut, exempelvis konstruktorer och metoder.

18 18 Stefan Möller Deklaration av klass Bil: class Bil{ String märke, regnummer, färg; int mätarställning; } Varje klass läggs lämpligen i en egen fil. Denna Bil-klass läggs alltså då på filen Bil.java Skapa objekt Referenser Åtkomst null

19 19 Stefan Möller class - deklaration class { } Olika data som beskriver klassen, t ex märke, mätarställning hos en Bil Anropas när ett objekt av klassen skapas (med new ) Olika operationer som kan göras på klassen En klass kan ha ”inre” klasser

20 20 Stefan Möller Metoder - subrutiner ( ){ ; } modifierare anger olika egenskaper, t ex för åtkomst public, private, protected, abstract, static, final, native, synchronized returtyp vad som returneras. Valfri datatyp, även referenser till classer eller arrayer. argumentlista lista över eventuella indata till metoden. Om inga argument ( ). int getInt(){...} static void skriv(int x, int y, String str){...} Java ”letar upp” och startar metoden main vid programmets start: public static void main(String[] args){...}

21 21 Stefan Möller Argumentöverföring Retur-värde Överlagring klass-metoder instans-metoder

22 22 Stefan Möller Slumptal - biblioteks-klassen Random Det finns ett antal fördefinierade klasser i Java’s API-bibliotek. Beskrivs i API-dokumentationen: Klassen Random används om man vill ha slumptal. Random ligger i java.util - delbiblioteket. Innehåller metoder för att få slumptal, t ex: int nextInt()returnerar ett slumpmässigt heltal int nextInt(int n)returnerar ett slumptal mellan 0 och n-1 (nextInt(100) returnerar alltså ett tal mellan 0 och 99) boolean nextBoolean()returnerar true eller false double nextDouble()returnerar ett tal mellan 0.0 och 1.0

23 23 Stefan Möller Ett program som skriver ut 10 slumptal mellan 1 och 100: import java.util.*; class SlumpTest{ public static void main(String[] args){ Random slump = new Random(); for (int x=1; x<=10; x++){ int tal = slump.nextInt(100) + 1; System.out.println(tal); } import-satsen kan utelämnas. Man måste då skriva: java.util.Random slump = new java.util.Random(); Man kan skriva: import java.util.Random;

24 24 Stefan Möller Klassen Math Ligger på java.lang - delbiblioteket. Allt som ligger i java.lang kan användas direkt, man behöver alltså INTE göra: import java.lang.*; I Math-klassen finns ett antal statiska metoder och variabler, t ex static double PIpi med jättemånga decimaler... static int abs(int a)returnerar absolutbeloppet av a static double log(double a)returnerar naturliga logaritmen av a static double pow(double a, double b)returnerar a upphöjt till b plus många fler... Eftersom metoderna är statiska så kan de anropas utan att man skapar ett Math-objekt: double dd = Math.sqrt(14); double omkrets = Math.PI * diameter;

25 25 Stefan Möller Jämförelse av anrop på metoder i Random och Math: Random slump = new Random(); int tal = slump.nextInt(100); double d = 4.876; int x = (int)Math.round(d); nextInt är en instans- metod. Man måste alltså skapa ett Random-objekt innan nextInt kan anropas round är en klassmetod. static long round(double d); Kan alltså anropas via klassnamnet


Ladda ner ppt "1 Stefan Möller Skiv- minne CD-läsare Diskett-läsare Sekundär- minnes- enheter (SM) Central-enhet PMCPU BIOS."

Liknande presentationer


Google-annonser