Inledning. Statistisk Programmering. UNIVAC 1107 (sextio- och sjuttiotal) Hålkorten. Att använda dator

Relevanta dokument
Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

Binär kodning. Binära koder. Tal och talsystem positionssystem för basen 10. Begrepp. Begrepp Tal och talsystem Talomvandling ASCII-kod NBCD Gray-kod

Digital- och datorteknik

EDA451 - Digital och Datorteknik 2009/2010. EDA Digital och Datorteknik 2009/2010. Binär Kodning, lärobokens kap.2

PARITETSKONTROLL. Om generatorn i vidstående exempel avkänner ett jämt antal ettor ger den en nolla ut. Detta innebär att överföringen

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

F2 Datarepresentation talbaser, dataformat och teckenkodning

Tentamen i Datakunskap NT

Mattias Wiggberg Collaboration

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. Lars-Eric Arebrink

Referensguide för streckkoder

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

F2 Binära tal EDA070 Datorer och datoranvändning

Grundläggande Datorteknik Digital- och datorteknik

HF0010. Introduktionskurs i datateknik 1,5 hp

Föreläsning 2. Operativsystem och programmering

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Maskinorienterad programmering

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Introduktion till programmering och Python Grundkurs i programmering med Python

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Programmering Grundkurs (HI1900) Teoridel

Tentamen. EDA432 Digital och datorteknik IT INN790 Digital och datorteknik GU. Måndag 23 oktober 2006, kl i V-salar

Datorarkitektur. Informationsteknologi sommarkurs 5p, Agenda. Slideset 3

Kursupplägg. Examination. Föreläsning 1: Intro till kursen och. Kursmaterial. programmering. Kursboken: Programmera med a multimedia approach

Datorhistorik. Föreläsning 3 Datorns hårdvara EDSAC. Eniac. I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943

Datorsystemteknik DVG A03 Föreläsning 3

Enkla datatyper minne

Tentamen PC-teknik 5 p

Föreläsning 1: Intro till kursen och programmering

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Tentamen. EDA485 Maskinorienterad programmering Z DAT015 Maskinorienterad programmering IT. Tisdag xx yyyy 2006, kl

Assemblerprogrammeringsuppgifter för FLIS-processorn

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Datorsystemteknik DAV A14 Föreläsning 1

DVG A06. Operativsystem, mm. Karlstads universitet Datavetenskap. DVG A06 Johan Eklund. Datavetenskap, Karlstads universitet 1

Datorsystem. Övningshäfte. Senast uppdaterad: 22 oktober 2012 Version 1.0d

Random Access Memory. Amare Reda Jenny Holmberg Henrik Kreipke Gaylord Kaya

Digital- och datorteknik

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Definition DVG A06. Varför operativsystem? Operativsystem. Översikt. - Vad är ett operativsystem?

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

Maskinorienterad programmering. Mekatronikingenjör åk 2/ lp 3. Lars-Eric Arebrink. Av institutionen utgiven. vid flera tillfällen.

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Uppgifter till lektion 1. Statistisk Programmering. Programmeringsspråk. Kompilerande språk. Använda R

NUV 647E. Digitalteknik och Datorarkitektur 5hp. 3x12 = 36 2x12 = 24 1x12 = 12 0x12 = 18

Programmering för alla!

Digital- och datorteknik

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Maskinorienterad programmering

Institutionen för elektro- och informationsteknologi, LTH

Innehåll. Datorteknik. Abstraktionsnivå 1. Spelkonsol - blockschema. Spelkonsol abstraktionsnivå 2. Abstraktionsnivå 2

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Grundläggande datavetenskap, 4p

IT-GUIDE Version 1.0 Författare: Juha Söderqvist

IE1205 Digital Design: F6 : Digital aritmetik 2

PNSPO! Adressering i Omrons PLC. 14 mars 2012 OMRON Corporation

Tentamen PC-teknik 5 p Lösningar och kommentarer

Digital Aritmetik Unsigned Integers Signed Integers"

Flyttal kan också hantera vanliga tal som både 16- och 32-bitars dataregister hanterar.

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Operativsystem DVG A06. Definition. Varför operativsystem? - Vad är ett operativsystem?

DIG IN TO Dator och nätverksteknik

Hur implementera algoritmerna på maskinnivå - datorns byggstenar

I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.

Kort beskrivning av Sveriges första dator BESK

Styrteknik: Binära tal, talsystem och koder D3:1

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Datorsystemteknik DAV A14 Föreläsning 1

OOP Objekt-orienterad programmering

ÖH kod. ( en variant av koden används i dag till butikernas streck-kod ) William Sandqvist

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

Föreläsning 1: Intro till kursen och programmering

Digital- och datorteknik

Mer datorarkitektur. En titt I datorn Minnen

F5: Högnivåprogrammering

Digitalteknik och Datorarkitektur

Datoraritmetik. Binär addition papper och penna metod. Binär subtraktion papper och penna metod. Binär multiplikation papper och penna metod

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

F5: Högnivåprogrammering

Datoraritmetik. Från labben. Från labben. Några exempel

Introduktion till programmering. Undervisning. Litteratur och examination. Lärare. Föreläsning 1

Digital- och datorteknik

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

IE1204 Digital Design

Programmering för alla!

DIGITALA TAL OCH BOOLESK ALGEBRA

Föreläsning 8: Aritmetik och stora heltal

Test i datorkunskap Hårdvara

Välkomna till NADA. Datalogi, grundkurs 1, 15hp. (Numerisk Analys och DAtalogi) och kursen. DA2001 (Föreläsning 1) Datalogi 1 Hösten / 28

5:3 Datorn och datorns delar

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

Kravspec RB03. RB03 Städning av otillåtna tecken Beteckning:

Talsystem Teori. Vad är talsystem? Av Johan Johansson

Grunderna i stegkodsprogrammering

Transkript:

Inledning Statistisk Programmering Att använda dator Datorernas utveckling sen 1970 har revolutionerat den statistiska vetenskapen! Göran Broström gb@statumuse Statistiska institutionen Umeå universitet 901 87 Umeå Statistisk Programmering, hösten 2002 p1/32 Statistisk Programmering, hösten 2002 p2/32 UNIVAC 1107 (sextio- och sjuttiotal) Hålkorten Statistisk Programmering, hösten 2002 p3/32 Statistisk Programmering, hösten 2002 p4/32

Åttiotal De första persondatorerna: 1978: Sirius Operativsystem CP/M Två floppydiskar (A: och B:) Pris ca 50 000 kr (i dåvarande penningvärde!) 1980: Ericsson PC Intel 8088, 477 MHz 640K RAM Ingen hårddisk! 1982: Den första hårddisken 10 MB Stora centrala datorer fortfarande norm Nittiotal Stordatorer (i klassisk mening) ute Persondatorn på bred front Unix (Linux) arbetsstationer Lokala nätverk Internet (redan i slutet av 80-talet!) Superdatorer Parallella processorer Min senaste PC (2001): Intel P4 17 GHz processor 40 GB hårddisk 12 GB RAM Era senaste (2002): Nolltal Statistisk Programmering, hösten 2002 p5/32 En bokstav = 1B = 1 Byte 1KB (KiloByte) = 1024 B ( 1MB (MegaByte) = 1024 KB 1GB (GigaByte) = 1024 MB Så GB miljard bokstäver 15 hyllmeter böcker Statistisk Programmering, hösten 2002 p6/32 Byte ) 200 000 sidor text OBS! Böcker i ASCII-format! (I Word-format blir det inte så mycket) Statistisk Programmering, hösten 2002 p7/32 Statistisk Programmering, hösten 2002 p8/32

Datorn för en statistiker Dataförvaring Dataanalys Rapportskrivning Implementering av nya metoder Test av metoder Simulering Datorns komponenter Permanent datalagring Hårddisk Diskett, CD, tape Read Only Memory (ROM) Tillfällig datalagring: Random Access Memory (RAM) Cacheminne Processor(er) In- och utdataenheter Statistisk Programmering, hösten 2002 p9/32 Statistisk Programmering, hösten 2002 p10/32 ROM OS Minne RAM Applikationer och Data Operativsystemet (Windoze) ligger på hårddisken Läses in i ROM när datorn startas Program som startas läses in i RAM ROM och RAM töms när datorn slås av Master Boot Record (MBR) Först på hårddisken (CD, floppy) Talar om var datorn kan hitta operativsystemet Indata- och utdataenheter Indataenheter Tangentbord Floppy-, CD-, hårddiskläsare Utdataenheter Bildskärm Floppy-, CD-, hårddiskskrivare Skrivare Basic Input Output System (BIOS) Hårdvara, datum och tid, etc Boot ordning (floppy, CD, hårddisk) Press F1 for IBM BIOS Setup Utility Statistisk Programmering, hösten 2002 p11/32 Statistisk Programmering, hösten 2002 p12/32

Arbetsmodell för datorarbete Instruktion Process Resultat Datalagring Läsa från RAM: snabbt Läsa från hårddisk: lååångsaaamt Slutsats: Viktigt med mycket RAM Data Övning: Hur många MB RAM behövs för att lagra en matris? Ledning: Det beror på Data i RAM (ev hårddisk) Process (program) i RAM Statistisk Programmering, hösten 2002 p13/32 Statistisk Programmering, hösten 2002 p14/32 Data ASCII (7-bitars) 0 1 1 0 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 BYTE = 8 BITS BIT = BInary digit, dvs 0 eller 1 Data lagras linjärt En byte = en bokstav (ASCII): 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 G B Telia ADSL lovar 05 Mbits/sek (in, år 2002) Det är 625 KB/sek, 1 MB tar 16 sek att ladda ner LSD MSD 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 2 spc! # $ % & ( ) * +, - / 3 0 1 2 3 4 5 6 7 8 9 : ; < = >? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ 6 a b c d e f g h i j k l m n o 7 p q r s t u v w x y z { } a b c LF CR d e f NUL blir abc def på skärmen/papperet (DOS/Windows) ] _ DEL Statistisk Programmering, hösten 2002 p15/32 Statistisk Programmering, hösten 2002 p16/32

Binära talsystemet Dataformat Decimalt 0 1 2 3 4 5 6 7 8 9 10 Binärt 0 1 10 11 100 101 110 111 1000 1001 1010 Vad är Vad är decimalt? binärt? Heltalsdivision med 2: Dividend Resultat Rest 112 56 0 56 28 0 28 14 0 14 7 0 7 3 1 3 1 1 1 0 1 Svar: Hur många olika tecken i en byte? Jo, stycken ASCII: Använder 7 bitar (128 tecken Latin-1: Använder 8 bitar (256 tecken) Latin-2: Använder 8 bitar (Östeuropa) Unicode: Använder 16 bitar (65 536 tecken) Statistisk Programmering, hösten 2002 p17/32 Statistisk Programmering, hösten 2002 p18/32 Logiska (TRUE, FALSE) Heltal I R: Variabeltyper Flyttal (enkel precision) Cirka 7 signifikanta siffror Flyttal (dubbel precision) Cirka 15 signifikanta siffror Text 1 BYTE per bokstav I R finns inte enkel precision (4 BYTES) (4 BYTES) (8 BYTES) (i) Positiva 8-bitars: 16-bitars: 32-bitars: Heltal Representeras as is (8-bitars): 0 = 00000000 1 = 00000001 2 = 00000010 255 = 11111111 Statistisk Programmering, hösten 2002 p19/32 Statistisk Programmering, hösten 2002 p20/32

(ii) Med tecken (8-bitars) (a) Första biten = tecken 00000001 = +1 10000001 = -1 osv Nackdelar: (a) Svårt med addition (b) Två nollor Heltal (b) Två-komplement 00000000 = 0 00000001 = 1 01111111 = 127 10000000 = -128 (!) 11111111 = -1 Heltal Fördelar Addition fungerar automatiskt Inga dubbla nollor Statistisk Programmering, hösten 2002 p21/32 Statistisk Programmering, hösten 2002 p22/32 Overflow Flyttal (16-bitars): Svar: Overflow! Exponentiell notation: Enkel koll av overflow : 1 2 och har olika tecken: Aldrig overflow och har samma tecken: (i) har samma tecken: OK (ii) byter tecken: Overflow! 3 I R; overflow ger NA e+5 Statistisk Programmering, hösten 2002 p23/32 Statistisk Programmering, hösten 2002 p24/32

64 bitar (8 BYTES): Dubbel precision s exponent mantissa 1 11 52 Ungefär 15 signifikanta siffror Men: och: Overflow Inf går inte Inf NaN 0 R Det finns bara ändligt många flyttal i datorn! I R finns Inf, med vanliga räkneregler (IEEE) Statistisk Programmering, hösten 2002 p25/32 Statistisk Programmering, hösten 2002 p26/32 Underflow Maskinkod Sätta = 0 är farligt Men, från vänster: Inf går inte (= 0 i R NaN! Exempel: Kod Betyder 0001 0001 0000 1010 Kopiera innehållet i minnescell 10 till register 1 0011 0011 0000 1000 Spara innehållet i register 3 i minnescell 8 0100 0001 0010 0011 Addera innehållen i registren 1 och 2, spara resultatet i register 3 Processorspecifik kod Hopplöst att lära sig! Någonting bättre behövs! Statistisk Programmering, hösten 2002 p27/32 Statistisk Programmering, hösten 2002 p28/32

Assemblerkod Högnivåspråk, C och FORTRAN Exempel: Exempel Skalärprodukt Assemblerkod Maskinkod LOAD R1 10 0001 0001 1010 0000 ADD R1 R2 R3 0100 0001 0010 0011 SUB R1 R2 R4 0101 0001 0010 0100 STORE R3 08 0011 0011 1000 0000 C-kod /* Skalärprodukt */ int k; double x[10], y[10]; double z; C FORTRAN-kod Skalärprodukt integer k double precision x(10), y(10) double precision z HALT 1111 0000 0000 0000 En assembler översätter assemblerkoden till maskinkod (objektkod) for (k = 0; k < 10; k++){ x[k] = k + 1; y[k] = 10 - k; } do k = 1, 10 x(k) = k y(k) = 10 - k + 1 end do Fortfarande maskinorienterat, ett lågnivåspråk z = 00; for (k = 0; k < 10; k++) z += x[k] * y[k]; z = 0d0 do k = 1, 10 z = z + x(k) * y(k) end do Statistisk Programmering, hösten 2002 p29/32 Statistisk Programmering, hösten 2002 p30/32 Högrenivåspråk, S (R och S-Plus) Nästa gång # Skalärprodukt x <- 1:10 y <- 10:1 z <- x %*% y # eller: z <- sum(x * y) S är ett vektoriserande språk: betyder matrismultiplikation Notera att vektorer inte har attributet rad- eller kolumn- Programmering i allmänhet Programmering i R i synnerhet: Objekt i R Uttryck och tilldelning Datatyper Indexering Funktioner och makron Kontrollstrukturer Vektorisering i någon ordning Några jämförelser med C, FORTRAN Statistisk Programmering, hösten 2002 p31/32 Statistisk Programmering, hösten 2002 p32/32