Skiv- minne

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

description

Skiv- minne. CD-läsare. Diskett-läsare. Central-enhet. BIOS. PM. CPU. Sekundär- minnes- enheter (SM). R1. R2. 24. 20. 16. 28. 12. 4. 0. 8. 01011100 01111001 00110100 11101001. 11001010 00101101 10101100 01110001. 11001010 00101101 10101100 10101101. - PowerPoint PPT Presentation

Transcript of Skiv- minne

Page 1: Skiv- minne

1

Stefan Möller

Skiv-minne

CD-läsare

Diskett-läsare

Sekundär-minnes-enheter (SM)

Central-enhet

PM CPUBIOS

Page 2: Skiv- minne

2

Stefan Möller

Primär-minne (PM) Processor (CPU)

11001010 00101101 10101100 101011010

00101101 10101100 10101101 101010104

10101011 01101101 10011100 110100118

00101101 10101100 10101101 1101000112

11001010 00101101 10101100 1010110116

01011100 01111001 00110100 1110100120

10011100 10101011 10101100 1010110124

11001010 00101101 10101100 0111000128

Vektor av minnesceller8 bitar = 1 byte, 4 byte = 1 ordt ex 256 MB (megabyte - miljoner byte)program-instruktioner & -data

R1

R2

Ett antal register ...

Styr-enhet

Aritmetiskenhet

Page 3: Skiv- minne

3

Stefan Möller

Olika nivåer av program

Maskinkod (binär kod)Ett antal (t ex 32) ettor/nollor100111001001111100011010Krångligt att skriva direkt

AssemblerkodMnemoniska namn för instruktionerAdd #25 to R3Ett-till-ett matchning mot maskinkodOlika instruktioner beroende på dator

HögnivåspråkMer kraftfulla instruktionerif (x!=5) x+=10;Ger 5-10 maskininstruktionerEj beroende av datorsystemT ex Pascal, C, C++, Java

Page 4: Skiv- minne

4

Stefan Möller

Kod i högnivåspråk måste översättas till maskinkod.

Kompilering:

Interpretering:

Källkod ihögnivåspråk

KompilatorOlika beroendepå datorsystem

Maskinkod somkan exekveras idatorsystemet

Källkod ihögnivåspråk

InterpretatorOlika beroende på datorsystemLäser en instruktion i taget, översättertill maskinkod och exekverar

Page 5: Skiv- minne

5

Stefan Möller

Programmering

Indata Program Utdata

Data kan vara av olika typ:

12 43 ”Kalle Nilsson” Bil:Volvo

73.67 ’X’ 730512 ABC 123Röd

true ”Stockholm” 7300 mil

Måste representeras i programmet.

Page 6: Skiv- minne

6

Stefan Möller

Javas Primitiva Datatyper

Heltalstyper:byte 8 bitarshort 16 bitarint 32 bitarlong 64 bitar

Flyttalstyper:float 32 bitar double 64 bitar

Övriga:char Unicode 16 bitarboolean true / false

Textsträngar (INTE primitiv datatyp): String

Page 7: Skiv- minne

7

Stefan Möller

Litteraler

Deklaration

Tilldelning

Utskrift

Inläsning

Selection

Iteration

Page 8: Skiv- minne

8

Stefan Möller

if-satsen

if (<villkor>) <programsats>;

if (<villkor>) <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”);else System.out.println(”25 eller mindre”);

Page 9: Skiv- minne

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

Page 10: Skiv- minne

10

Stefan Möller

switch-satsen

switch (<uttryck>) { case <värde>: <programsatser> case <värde>: <programsatser> default: <programsatser>}

”Hoppar” till den case sommatchar uttrycket. Exekverarresten av programsatserna.

break-satsen bryter switchbreak;

(kan även användas på loopar)

Uttryck och värde måste vara avheltalstyp 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);}

Page 11: Skiv- minne

11

Stefan Möller

while - loopen

while (<villkor>) <programsats>;

do <programsats>;while (<villkor>);

<villkor> - booleskt uttryck<programsats> - valfri programsats

om flera satser inom { } - block

break; //bryter loopencontinue; //börja om nästa varv

villkor

sats

true

false

villkor

sats

false

true

Page 12: Skiv- minne

12

Stefan Möller

for-loopen

for (<initiering> ; <villkor> ; <uppräkning>) <programsats>;

Skriv ut talen 1 - 10:

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

Page 13: Skiv- minne

13

Stefan Möller

Skriv en programsnutt som skriver ut en tabell övercelsius-temperaturer & motsvarande fahrenheit-temperaturervar 10’de celsius i intevallat 10-90:

Förväntat utseende:

Celsius Fahrenheit----------------------- 10 50 20 68 30 86 40 104 50 122 60 140 70 158 80 176 90 194

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);}

Page 14: Skiv- minne

14

Stefan Möller

Operatorer

Prioritetsordning Operatorer

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

Page 15: Skiv- minne

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 <typ>[ ]

int[] arr; arr (inget utrymme finns...)

Utrymmet måste skapas, görs med newarr = new int[5];arr[0]=28; arrarr[1]=43;arr[2]=12;arr[3]=19;arr[4]=193;

43tal 7.85d

28 43 12 19 193

0 1 2 3 4

Page 16: Skiv- minne

16

Stefan Möller

Array

Deklaration:int[] arr;int arr[]; //Alternativ deklarering

Skapas med newarr=new int[25]; //Alltid index från 0 och uppåt

Indexering med [<index>]arr[3]=12;

Längden kan kollas med lengthint max=arr.length; //max får värdet 25

Initiering vid deklarationint[] kvadrater={0, 1, 4, 9, 16, 25, 36};

Page 17: Skiv- minne

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.

VolvoABC 123Röd7300

SaabXYW 987Vit3800

FiatMSQ 545Svart12900

Att ”samla ihop” flera attribut på detta sätt görs i klasser.Vi behöver alltså nu en klass Bil som skall ha attributenmärke, regnummer, färg och mätarställning.

Klasser kan innehålla mer än attribut, exempelvis konstruktorer ochmetoder.

Page 18: Skiv- minne

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äggsalltså då på filen Bil.java

Skapa objekt

Referenser

Åtkomst

null

Page 19: Skiv- minne

19

Stefan Möller

class - deklaration

class <class-namn>{

<variabel-deklarationer>

<konstruktorer>

<metoder>

<class-deklarationer>

}

Olika data som beskriverklassen, t ex märke, mätarställninghos en Bil

Anropas när ett objekt av klassenskapas (med new <classnamn>)

Olika operationer som kangöras på klassen

En klass kan ha ”inre” klasser

Page 20: Skiv- minne

20

Stefan Möller

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){...}

Page 21: Skiv- minne

21

Stefan Möller

Argumentöverföring

Retur-värde

Överlagring

klass-metoder

instans-metoder

Page 22: Skiv- minne

22

Stefan Möller

Slumptal - biblioteks-klassen Random

Det finns ett antal fördefinierade klasser i Java’s API-bibliotek.Beskrivs i API-dokumentationen:

http://java.sun.com/j2se/1.5.0/docs/api/

Klassen Random används om man vill ha slumptal. Random ligger ijava.util - delbiblioteket.

Innehåller metoder för att få slumptal, t ex:

int nextInt() returnerar ett slumpmässigt heltalint 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 falsedouble nextDouble() returnerar ett tal mellan 0.0 och 1.0

Page 23: Skiv- minne

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;

Page 24: Skiv- minne

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 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 utanatt man skapar ett Math-objekt:

double dd = Math.sqrt(14);double omkrets = Math.PI * diameter;

Page 25: Skiv- minne

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-objektinnan nextInt kan anropas

round är en klassmetod.static long round(double d);Kan alltså anropas viaklassnamnet