1 DV 433 Strukturerad programmering med C S

  • Slides: 17
Download presentation
1 DV 433 – Strukturerad programmering med C++ Så fungerar en dator Mental bild

1 DV 433 – Strukturerad programmering med C++ Så fungerar en dator Mental bild av en dator Hårdvarumodell av en dator © 2012 Mats Loock 1 (10)

1 DV 433 – Strukturerad programmering med C++ Vad är en dator? • En

1 DV 433 – Strukturerad programmering med C++ Vad är en dator? • En dator är en digital elektronisk maskin, och består av tre huvudkomponenter: processor, minne, enheter för in- och utmatning. • Processorn, eller mikroprocessorn, kallas också Central Processing Unit, CPU. Det är processorn som utför de instruktioner som lagras i minnet. • Minnet lagrar, förutom instruktioner, även data. Processorn instrueras att manipulera datat. En samling instruktioner som instruerar processorn kallas datorprogram. • Ett operativsystem är en samling av speciella program, som kontrollerar de olika delar en dator består av. minne processor enheter för in- och utmatning © 2012 Mats Loock 2 (10)

1 DV 433 – Strukturerad programmering med C++ Vad gör en dator? • Datorn

1 DV 433 – Strukturerad programmering med C++ Vad gör en dator? • Datorn manipulerar data med hjälp av instruktioner på ett förutbestämt sätt. Datat lagras binärt, i form av ettor och nollor. • Då datorn startar laddas operativsystemet in. Operativsystemet hjälper sedan till att ladda och köra applikationsprogram. minne • Då ett applikationsprogram laddas, placeras instruktionerna, som utgör programmet, och data i minnet. processor • Processorn utför instruktionerna i programmet i tur och ordning, i sekvens, och programmets data manipuleras på ett förutbestämt sätt. © 2012 Mats Loock 3 (10)

1 DV 433 – Strukturerad programmering med C++ Minne – mental modell Information… nummer,

1 DV 433 – Strukturerad programmering med C++ Minne – mental modell Information… nummer, bokstav, ord, en rapport, bok, bild, musik, animation, en samling av böcker, … …kan vara vad som helst …skrivs/ritas på papper …kan inte ändras! Information på en bit papper! Information lagras i en låda, en minnesplats, och… …kan bara innehålla ett papper …kan undersökas/kopieras …befintligt pappret försvinner om det ersätts …det måste alltid vara ett papper i lådan © 2012 Mats Loock 4 (10)

1 DV 433 – Strukturerad programmering med C++ En cirkels area och omkrets För

1 DV 433 – Strukturerad programmering med C++ En cirkels area och omkrets För att bestämma en cirkels area och omkrets… 1. Hälsa användaren välkommen. 2. Fråga användaren efter cirkelns radie. 3. Beräkna cirkelns area som PI radie. 4. Beräkna cirkelns omkrets som 2 PI radie. 5. Rapportera area, omkrets och radie. Information som flödar från ett steg till ett annat måste lagras och behöver plats i ett minne. Startvillkor för de olika stegen som måste uppfyllas: – Steg 3 kräver cirkelns radie, som fås i steg 2. Omöjligt att utföra steg 3 innan steg 2. – Steg 5 kräver att steg 3 och 4 har utförts, och måste därmed komma sist. – Steg 3 och 4 kan göras i vilken ordning som helst. – Måste känna till att PI: s värde är 3, 1415. © 2012 Mats Loock 5 (10)

1 DV 433 – Strukturerad programmering med C++ Metafor över datorns minne Datorn har

1 DV 433 – Strukturerad programmering med C++ Metafor över datorns minne Datorn har flera minnesplatser En minnesadress kan liknas vid en gatuadress, som hjälper brevbäraren att hitta rätt hus på en gata. Nummer används för "lågnivå", och meningsfulla namn för "högnivå". För att enkelt kunna referera till en minnesplats, numreras (eller namnges) den – ge den en minnesadress. "Systemet" kontrollerar att det är rätt typ av information som placeras i lådan. Görs försök att placera information av fel typ i en låda meddelas ett fel. . För att minska risk för fel, bestäm typ av information minnesplatserna kan innehålla. lön radie (positivt heltal) (positivt decimaltal) namn adress (sträng) bröllopsfoto (bild) ålder (heltal 0 -150) ljus. Hastigeht (heltal = 300) skattesats (decimaltal 0 -27. 5) © 2012 Mats Loock Skulle även kunna ange om information kan ändras eller inte, d. v. s. är informationen konstant eller variabel. 6 (10)

1 DV 433 – Strukturerad programmering med C++ Algoritm för beräkning… • …av en

1 DV 433 – Strukturerad programmering med C++ Algoritm för beräkning… • …av en cirkels area och omkrets i termer av en minnesmodell. Vad behöver vi lagra? • Den information som behöver kommas ihåg från ett steg till ett annat – startvillkor! Genom att titta på algoritmen kan vi identifiera minnesplatser, lämpliga namn, typer och om de är konstanter eller variabler. • OBS! Värdet 2 är en konstant som inte namnges och kanske inte ens använder en minnesplats på detta sätt. radie (positivt heltal) area (positivt decimaltal) omkrets (positivt decimaltal) © 2012 Mats Loock PI (konstant 3. 1415) 2 (konstant 2. 0) 7 (10)

1 DV 433 – Strukturerad programmering med C++ Informationsflöde (dataflöde) Informationsflödet styrs av endast

1 DV 433 – Strukturerad programmering med C++ Informationsflöde (dataflöde) Informationsflödet styrs av endast tre instruktioner: – information (data) från yttre värld till minne – ut – information (data) från minne till yttre värld – tilldelning - från minne till minne tangentbord mus nätverk in ut skärm skrivare nätverk ALU Beräkningsenhet (Arithmetic and Logic Unit) © 2012 Mats Loock 8 (10)

1 DV 433 – Strukturerad programmering med C++ Flödeskontroll (modell 1 av 3) För

1 DV 433 – Strukturerad programmering med C++ Flödeskontroll (modell 1 av 3) För att implementera en algoritm krävs en kontrollmekanism. . . – …som bestämmer hur informationsflödet ska gå – det förutbestämda sätt som datat ska bearbetas. De första datorerna hade kontrollmekanismer som bestod av fast dragna ledningar, eller i bästa fall med kopplingssladdar, som t. ex. ENIAC. Kontroll minne in ut ALU För att ändra maskinens funktion var man tvungen att dra om ledningarna! © 2012 Mats Loock 9 (10)

1 DV 433 – Strukturerad programmering med C++ Så fungerar det bättre… • Omkastare

1 DV 433 – Strukturerad programmering med C++ Så fungerar det bättre… • Omkastare bestämmer hur data ska flöda in till och ut ur minnet. 1 • Omkastarnas positioner bestämmer funktionen. 3 4 5 6 7 8 9 10 11 1 100000 2 0100000 3 00110010001 4 00000001000 minne 4 1 2 5 in ut 6 2 1. 1 Data kommer från in och läggs i den översta minnesplatsen. 2. 2 Data kommer från in och läggs i den mellersta minnesplatsen. 3. 3 Data kopieras från översta och mellersta minnesplatsen och behandlas av beräkningsenheten. Resultatet kopieras till den nedersta minnesplatsen. 4 4. Ut kopierar datat från den nedersta minnesplatsen. 7 8 3 9 ALU 10 11 © 2012 Mats Loock 10 (10)

1 DV 433 – Strukturerad programmering med C++ 37+15=52 (1 av 4) Programräknare =

1 DV 433 – Strukturerad programmering med C++ 37+15=52 (1 av 4) Programräknare = 1 1 3 4 5 6 7 8 9 10 11 100000 1 minne 2 0100000 1 37 00110010001 ut in 00000001000 ALU © 2012 Mats Loock 1. Data kommer från in och läggs i den översta minnesplatsen. 2. Data kommer från in och läggs i den mellersta minnesplatsen. 3. Data kopieras från översta och mellersta minnesplatsen och behandlas av beräkningsenheten. Resultatet kopieras till den nedersta minnesplatsen. 4. Ut kopierar datat från den nedersta minnesplatsen. 11 (10)

1 DV 433 – Strukturerad programmering med C++ 37+15=52 (2 av 4) Programräknare =

1 DV 433 – Strukturerad programmering med C++ 37+15=52 (2 av 4) Programräknare = 2 1 4 5 6 7 8 9 10 11 0100000 2 37 in 3 100000 minne 15 2 00110010001 ut 2 00000001000 ALU © 2012 Mats Loock 1. Data kommer från in och läggs i den översta minnesplatsen. 2. Data kommer från in och läggs i den mellersta minnesplatsen. 3. Data kopieras från översta och mellersta minnesplatsen och behandlas av beräkningsenheten. Resultatet kopieras till den nedersta minnesplatsen. 4. Ut kopierar datat från den nedersta minnesplatsen. 12 (10)

1 DV 433 – Strukturerad programmering med C++ 37+15=52 (3 av 4) Programräknare =

1 DV 433 – Strukturerad programmering med C++ 37+15=52 (3 av 4) Programräknare = 3 1 3 4 5 6 7 8 9 10 11 100000 minne 0100000 4 37 00110010001 3 ut in 15 2 00000001000 7 3 52 ALU 1. Data kommer från in och läggs i den översta minnesplatsen. 2. Data kommer från in och läggs i den mellersta minnesplatsen. 3. Data kopieras från översta och mellersta minnesplatsen och behandlas av beräkningsenheten. Resultatet kopieras till den nedersta minnesplatsen. 4. Ut kopierar datat från den nedersta minnesplatsen. 11 + © 2012 Mats Loock 13 (10)

1 DV 433 – Strukturerad programmering med C++ 37+15=52 (4 av 4) Programräknare =

1 DV 433 – Strukturerad programmering med C++ 37+15=52 (4 av 4) Programräknare = 4 1 2 3 4 5 6 7 8 9 10 11 100000 minne 0100000 37 00110010001 ut in 00000001000 4 15 8 52 ALU © 2012 Mats Loock 1. Data kommer från in och läggs i den översta minnesplatsen. 2. Data kommer från in och läggs i den mellersta minnesplatsen. 3. Data kopieras från översta och mellersta minnesplatsen och behandlas av beräkningsenheten. Resultatet kopieras till den nedersta minnesplatsen. 4. Ut kopierar datat från den nedersta minnesplatsen. 14 (10)

1 DV 433 – Strukturerad programmering med C++ Flödeskontroll (modell 2 av 3) •

1 DV 433 – Strukturerad programmering med C++ Flödeskontroll (modell 2 av 3) • Kännetecken – Behöver endast tre grundtyper av kontrollinstruktioner (sekvens, val och repetition) – Kontrollintruktionerna kan sparas i ett minne på samma sätt som data • Tillåter att generella kontrollmekanismer kan skapas av de grundläggande kontrollinstruktionerna. Programminne Kontroll Instruktioner och därmed maskinens funktion kan snabbt och enkelt ändras. minne in ut Begränsning: minnet för programmet kan ta slut, vi kan använda dataminnet (eller tvärt om) ALU © 2012 Mats Loock 15 (10)

1 DV 433 – Strukturerad programmering med C++ Flödeskontroll (3 av 3) • Slutligen…

1 DV 433 – Strukturerad programmering med C++ Flödeskontroll (3 av 3) • Slutligen… – …inse att program och data kan dela samma minne! • Instruktioner lagras i sekventiellt numrerade minnesplatser (memory). Kontroll Programräknare • En programräknare (Program Counter) håller ordning på vilken instruktion som ska utföras. minne in ut ALU Minnet innehåller både program och data • Kontrollenheten (control) hämtar aktuell instruktion och utför den (genom att Hämtaändra omkastarna), stega Exekverafram programräknaren, cykeln hämtar nästa instruktion, o. s. v. © 2012 Mats Loock 16 (10)

1 DV 433 – Strukturerad programmering med C++ data program Program och data Minnesplats

1 DV 433 – Strukturerad programmering med C++ data program Program och data Minnesplats Data 0 Programmet startar 1 Data läses in och placeras på minnesplats 5 (tal 1) 2 Data läses in och placeras på minnesplats 6 (tal 2) 3 Data på minnesplats 4 och 5 adderas och summan placeras på minnesplats 7 (summa) 4 Programmet slut 5 (tal 1) 37 6 (tal 2) 15 7 (summa) 52 summa = tal 1 + tal 2 Data programmerare program data 0000 1111 0000 0001 1000 0000 0101 0010 1000 0000 0110 0011 0100 0000 0100 1110 0000 0101 0000 0010 0101 0110 0000 1111 0000 0011 0100 En dator förstår bara 1: or och 0: or - maskinkod © 2012 Mats Loock minne 17 (10)