Databehandling Ett datorprogram består i huvudsak av En beskrivning av de data som skall behandlas i programmet En algoritm där vi med hjälp av programsatser beskriver hur data skall matas in, bearbetas och beräknas samt matas ut indata bearbetning utdata
Programinstruktioner Uppstart av program Primärminne (RAM) Sekundärminne Programinstruktioner Program X (maskinkod) Operativsystemet ”ladda X” ”starta X” Processor (CPU) ”starta X” Styrenhet
Datorns språk Bits och bytes Binärkod – Maskinkod Maskininstruktion operationskod + operanddel Instruktionscykel Hämtning av instruktion Avkodning Aritmetisk och logisk bearbetning Spara resultatet Assembler
Varje dator har ett ”maskinspråk” Maskinkod Varje dator har ett ”maskinspråk” Maskinspråket är ”binärt” (ettor & nollor) Maskinspråket har ett begränsat antal möjliga instruktioner (grundläggande aritmetik, repetitioner, mm) Maskinspråket är hårt knutet till processortypen (därför kan ett program inte flyttas till vilken dator som helst) 01001001101011100100110011001100110101001100011010101001010100101
Datorns språk Processor Primärminne Utenhet Inenhet 101010101
En bit om bitar En bit (binary digit) Är den minsta dataenheten Kan ha två värden (noll eller ett) Kan representera numeriska tal, alfanumeriska tecken eller datorinstruktioner
Fler bitar Varje bit kan användas för att lagra lite information: Svaret på en ja/nej-fråga En signal för att slå på eller av något Flera bitar tillsammans kan grupperas för att lagra mer information: 8 bitar (en byte) kan kombineras på 256 olika sätt, dvs kan betyda 256 olika saker!
Byte = 8 bitar = 28 Kombinationer dvs 256 st Binära tal 0010 0010 = 34 Binärt Decimalt 1000 0010 130 Byte = 8 bitar = 28 Kombinationer dvs 256 st KByte = 210 Byte = 1024 Byte MByte = 220 Byte = 1048576 Byte Länk ASCII-tabell LATIN1 Unicode (ISO 10646-1) Mer att läsa ASCII
Bitar som tecken ASCII - American Standard Code for Information Interchange Mest spridda teckenuppsättningen, representerar varje tecken som en unik 7-bitars kod. Tecken ASCII binärkod A 01000001 B 01000010 C 01000011 D 01000100 E 01000101 F 01000110 G 01000111 H 01001000 I 01001001 J 01001010 K 01001011 L 01001100 M 01001101 N 01001110 (Den “åttonde” biten användes ibland som en slags “kontrollbit”)
Bitar som instruktioner Datorn lagrar programmen som en samling av bitar. Exempelvis skulle 01101010 kunna vara instruktionen för att addera ihop två tal En annan instruktion kan vara att hitta var i primärminnet ett tal är lagrat…
Hur instruerar man en dator? Datorn Hur instruerar man en dator? Förutsättning: Datorns processor begriper bara maskinspråksinstruktioner. Lösning: Källkoden måste översättas till maskinkod, vilket kan ske på olika sätt.
Programexekvering Primärminne (RAM) Processor (CPU) Programinstruktioner Programdata 2 1 Hämta instruktion Hämta data Lagra data Processor (CPU) Styrenhet Aritmetisk-/logisk enhet 2 3 Exekvera Avkoda Instruktionsregister Dataregister 4
För många processorer finns ett särskilt assembler-språk Assembler innehåller i princip ett ”kommando” för varje instruktion processorn kan utföra. Översättaren från assembler till maskinkod kallas assemblator mov( start, eax ); breakif( eax > stop ); yield(); inc( start );
Högnivåspråk Den tredje generationens språk är ”processoroberoende”, dvs att språket inte är direkt styrt utav vilka instruktioner processorn kan hantera Om ett program skrivet i ett högnivåspråk kan köras på en viss dator är beroende av om det finns en kompilator eller interpretator för språket till den datorns processor. Högnivåspråken är mer likt det talade språket, eller åtminstone mer lättförståeligt… IF b > c THEN ADD b TO a END IF
Kompilering Kompilator Länkare källkod översättning Andra objekt-moduler Objekt-modul Länkare System-bibliotek länkning Laddmodul (körbart program) laddning exekvering indata utdata
Interpretering Interpretator källkod översättning internkod indata interpretering utdata
Den virtuella maskinen Klass-bibliotek System-bibliotek Kompilator källkod översättning Virtuell maskin bytekod laddning översättning indata exekvering utdata
= + Statisk länkning objektkod objektkod systemfunktion systemfunktion programmet
= + Dynamisk länkning objektkod objektkod systemfunktion programmet anropas först vid exekvering
1.9 Kategorier av högnivåspråk Imperativa språk Deklarativa språk Funktionella språk Rationella (logiska) språk Objektorienterade språk
Språkgenerationer 1950 1960 1970 1980 1990 2000 2010 Naturliga språk 4GL Objektorienterade språk Högnivåspråk Assembler Maskinkod 1950 1960 1970 1980 1990 2000 2010 FORTRAN RPG PROLOG VB VB ALGOL APL MODULA-2 VB.NET COBOL LOGO MODULA-3 LISP FORTH OBERON PILOT PASCAL EIFFEL BASIC C C++ JAVA C# ADA PL/1 SMALLTALK SIMULA
1.10 Programflöde och användarinteraktion Sekventiella program Batch-system Multiprogramming interaktivitet Grafiska användargränssnitt (GUI – Graphical User Interface) Kontrollobjekt Händelsestyrda program - händelsehanterare
1.12 Att göra ett program i C# using System; class Hello { public static void Main() Console.WriteLine(“Hello World”); }
Kompilera och exekvera