Presentation laddar. Vänta.

Presentation laddar. Vänta.

Central-enhet PM CPU BIOS Skiv- minne Sekundär- minnes- enheter (SM)

Liknande presentationer


En presentation över ämnet: "Central-enhet PM CPU BIOS Skiv- minne Sekundär- minnes- enheter (SM)"— Presentationens avskrift:

1 Central-enhet PM CPU BIOS Skiv- minne Sekundär- minnes- enheter (SM)
CD-läsare Diskett-läsare

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

3 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 Kod i högnivåspråk måste översättas till maskinkod. Kompilering:
Interpretering: 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 Källkod i högnivåspråk

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

6 Javas Primitiva Datatyper
Heltalstyper: byte 8 bitar short 16 bitar int 32 bitar long 64 bitar Flyttalstyper: float 32 bitar double 64 bitar Övriga: char Unicode 16 bitar boolean true / false Textsträngar (INTE primitiv datatyp): String

7 Litteraler Deklaration Tilldelning Utskrift Inläsning Selection Iteration

8 if-satsen Nästlade if-satser int x=8; if (<villkor>) if (x>5)
<programsats>; <programsats1>; else <programsats2>; 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”); System.out.println(”25 eller mindre”);

9 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 switch-satsen switch (<uttryck>) { case <värde>:
<programsatser> 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: }

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

12 for-loopen initiering villkor programsats uppräkning
for (<initiering> ; <villkor> ; <uppräkning>) <programsats>; 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++) for (int y=1; y<=10; ) System.out.println(y++); initiering villkor programsats uppräkning true false

13 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 Operatorer Prioritetsordning Operatorer 1 [] . (metod anrop) ++ --
~ ! 3 new (cast) 4 * / % 5 + - 6 << >> >>> 7 < <= > >= instanceof 8 == != 9 & 10 ^ 11 | 12 && 13 || 14 ?: 15 = += -= *= /= %=

15 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 <typ>[ ] 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 7.85 tal d 28 43 12 19 193

16 Array Deklaration: int[] arr; Skapas med new
int arr[]; //Alternativ deklarering Skapas med new arr=new int[25]; //Alltid index från 0 och uppåt Indexering med [<index>] 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 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 12900 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 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 class - deklaration class <class-namn>{
<variabel-deklarationer> <konstruktorer> <metoder> <class-deklarationer> } 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 <classnamn>) Olika operationer som kan göras på klassen En klass kan ha ”inre” klasser

20 Metoder - subrutiner <modifierare> <returtyp> <namn> (<argumentlista>){ <lokala deklarationer och programsatser>; } 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 Argumentöverföring Retur-värde Överlagring klass-metoder instans-metoder

22 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 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 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 PI pi 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 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 "Central-enhet PM CPU BIOS Skiv- minne Sekundär- minnes- enheter (SM)"

Liknande presentationer


Google-annonser