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

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

Avlusning Debugger (”avlusare”) Breakpoints Watch.
INTRODUKTION TILL PROGRAMMERING
Repetition av språket Java
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.
Klasser och objekt.
Programstruktur: C för enchipsdatorer
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Metoder i java Det finns två typer av metoder i java
Om Java C =>Java syntax variabler metoder färdiga klasser
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.
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.
OOP Objekt-orienterad programmering
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Programmering B PHP Lektion 2
Föreläsning 11 Arrayer.
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
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
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
Metoder och slingor Metoder och dess typ Slingor med while och for-satser.
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 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.
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
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.
Föreläsning 4 Klasser Och Objekt.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
INTRODUKTION TILL PROGRAMMERING
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 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
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
-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.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
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.
Föreläsning 3: Booleans, if, switch
Iteration – Repetitionssats - while
Presentationens avskrift:

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

Primär-minne (PM) Processor (CPU) 11001010 00101101 10101100 10101101 00101101 10101100 10101101 10101010 4 10101011 01101101 10011100 11010011 8 00101101 10101100 10101101 11010001 12 16 01011100 01111001 00110100 11101001 20 10011100 10101011 10101100 10101101 24 11001010 00101101 10101100 01110001 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

Olika nivåer av program Maskinkod (binär kod) Ett antal (t ex 32) ettor/nollor 100111001001111100011010 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

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

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

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

Litteraler Deklaration Tilldelning Utskrift Inläsning Selection Iteration

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

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

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: }

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

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

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

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

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

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.

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

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

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

Argumentöverföring Retur-värde Överlagring klass-metoder instans-metoder

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

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;

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;

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