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

Relevanta dokument
Introduktion till programmering

Inledande programmering med C# (1DV402) Introduktion till programmering

Föreläsning 2. Operativsystem och programmering

Introduktion till programmering och Python Grundkurs i programmering med Python

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Program & programmering

1 Språket C Valet av språket C++ för kompendiet. 1.2 Språket. 1.3 Att programmera. 1.4 Hello World Börja programmera

Grundkurs i programmering - intro

Lektion 1 - Steg 1. Introduktion. Hello World

Inledande programmering med C# (1DV402) Introduktion till C#

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

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

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

TDIU01 - Programmering i C++, grundkurs

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

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

NetBeans 5.5. Avsikt. Projektfönster

OOP Objekt-orienterad programmering

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

Innehålls förteckning

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 3. Programmering, C och programmeringsmiljö

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

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

NetBeans 7. Avsikt. Projektfönster

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program

Det finns många flaggor till g++,

Enkla datatyper minne

Att komma igång. Föreläsning 1

Föreläsning 3. Programmering, C och programmeringsmiljö

Dela, koda och korrigera! Undervisningsmaterial inom digital kompetens

Introduktion till programmering. Programspråk och paradigmer

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Mjukstart i programmering

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Introduktion till programmering, hösten 2011

Digital- och datorteknik

Digital- och datorteknik

Studentportalen UNIX-konton (systemansvariga P4118) Lärare: Anna Eckerdal,

Fortsättningskurs i programmering F 2. Algoritmer i Programutveckling Hugo Quisbert Problemexempel 1

Objektorienterad programmering i Java

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

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

Programmering i C++ Kompilering från kommandoraden

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

Tentamen den 18 mars svar Datorteknik, EIT070

Programmering för alla!

Programmering i maskinspråk (Maskinassemblering)

Programmering i maskinspråk (Maskinassemblering)

Introduktion till arv

Föreläsning 1 & 2 INTRODUKTION

tentamensdags och lab 3

Instuderingsfrågor till Steg 1

Chapter 3: Using Classes and Objects

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Introduktion C-programmering

1 Datorer och program

Objektorienterad Programmering (TDDC77)

Programmering från början

Sanningar om programmering

Att komma igång. Föreläsning 1

Programmering för alla!

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

HI1024 Programmering, grundkurs TEN

SMD 134 Objektorienterad programmering

TDDI16: Datastrukturer och algoritmer

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Program. Kapitel make Program Interpreterande och kompilerande program

Laboration 1. En första bekantskap med C++ Namn: Godkänd den: Rest:

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

Editering, Kompilering och Exekvering av Javaprogram

TDIU01 - Programmering i C++, grundkurs

Så här skriver du ditt första program i C++

1 Klasser och objektorientering Vad är objektorientering?

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Repetition C-programmering

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Att komma igång. Föreläsning 1

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

Kompilera och exekvera Javakod

Föreläsning 1 & 2 INTRODUKTION

IDA kursmaterial Informationsblad make. make

Digitalt lärande och programmering i klassrummet

Datorsystemteknik DAVA14 Föreläsning 10

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Tentamen TEN1 HI

TDIU01 (725G67) - Programmering i C++, grundkurs

Exempeltentamen Datorteknik, EIT070,

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

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

Lösningar till tentamen i EIT070 Datorteknik

Transkript:

Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14)

Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter. En dator används för att bearbeta data. Dator kan inte "förstå" data utan kan bara bearbeta den och därigenom skapa ny data. Hur en dator bearbetar data styrs av ett program som vi ger till datorn. Skillnad mellan data och information? En dator är en generell maskin som med hjälp av program kan fås att utföra olika uppgifter. Data är koder/signaler av olika slag som i ett sammanhang är bärare av information Data: 12.50; ab22cz Information: "Priset är 12,50"; "konto på LNU på person med initialerna ab" 2 (14)

Vad är ett datorprogram? Ett datorprogram består av: en beskrivning av den data som ska bearbetas. en algoritm, där vi med hjälp av programsatser beskriver hur data ska matas in, bearbetas och beräknas samt matas ut. Data kan vara vad som helst: nummer, bokstav, ord, bild, musik, animation, En algoritm är ett antal instruktioner som anger hur ett problem ska lösas indata bearbetning utdata Ett datorprogram beskriver med hjälp av instruktioner och data exakt alla detaljer av det som ska utföras. Ett datorprogram instruerar datorn hur ett problem ska lösas. 3 (14)

Vad är ett datorprogram ur datorns perspektiv? adress 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 00001011 10111000 01101010 10011000 00010000 11101001 10011111 11011011 10101001 00101001 10101100 01011100 10110101 01100110 program data Datorn använder ett språk som är oerhört begränsat. Instruktionerna uttrycks med ettor och nollor, en binär siffra eller en bit (binary digit, 1 eller 0). Ur datorns perspektiv kan sägas att ett datorprogram är en samling ettor och nollor, som lagras i ett minne. Bitar hanteras i grupper om 8 (8 bitar = en byte), som tillsammans representerar programsatser som ska utföras och det data som ska behandlas. Varje byte har en adress. minne 4 (14)

Vad är ett datorprogram ur programmerarens perspektiv? Ett datorprogram är kod som skrivs i ett högnivåspråk, som vi människor förstår. Högnivåspråket översätts sedan till maskinkod, som består av ettor och nollor. En programmerare överför en algoritm till datorn genom att skriva kod i ett programspråk och skapa ett datorprogram. Koden översätts till maskinkod som instruerar dator hur ett problem ska lösas. Det första datorprogrammet (C++) #include <iostream> using std::cout; using std::endl; int main() { int sum; sum = 37 + 15; cout << "Summan är :" << sum << endl; return 0; } Utskrift Datorprogrammet summerar talen 37 och 15, och skriver ut summan. Summan är: 52 5 (14)

Olika språk 10011000 11000011 01000000 00000011 11111100 : MOV #5, R1 ADD R1, R2 STR @R0 : int sum; sum = 37 + 15; : Maskinkod Maskinkod, språket en dator använder, är mycket svårt för människor att förstå. Maskinkoden utgörs bara av ettor och nollor, och det är mycket enkelt att göra misstag. Assembler Lättare att förstå och komma ihåg. Svårt att göra även enkla saker. Ett program, assemblator, används för att översätta till maskinkod. Högnivåspråk (C++, Java, Basic, ) Mycket enklare att förstå och skriva. Språken är standardiserade. Översättning till maskinkod är mycket komplex varför ett program (interpretator eller kompilator) används till översättningen. maskinberoende maskinberoende INTE maskinberoende 6 (14)

Interpretator Instruktionerna översätts och exekveras i tur och ordning under exekveringen av programmet. Översättningen sparas inte! Måste utföras varje gång en sats körs. källkod (lagras i en fil) 10 rem Sum two numbers 20 input "enter first number"; a 30 input "enter second number"; b 40 s = a + b 50 print "sum is " ; s interpretator maskinkod (genererad & exekverad, lagras inte) 11100101001000100 7 (14)

Kompilator All programkod översätts till maskinkod och sparas vid ett tillfälle före exekveringen. Endast maskinkoden körs när programmet exekveras. källkod (lagras i en fil) 10 rem Sum two numbers 20 input "enter first number"; a 30 input "enter second number"; b 40 s = a + b 50 print "sum is " ; s kompilator maskinkod (genereras en gång & lagras i en fil) 0011000101010000100 11100101001000100 Lagrad maskinkod exekveras av operativsystemet så många gånger som önskas! 8 (14)

C++ kompilera och länka C++-källkod kompileras och den första versionen av maskinkod kompilatorn skapar kallas objektkod. Objektkoden är inte ett fullt körbart program. Objektfilen länkas med systembibliotek och maskinkod skapas och sparas i en fil som utgör ett fullt körbart program En exekveringsbar fil. MyApp.cpp #include <iostream> using std::cout; using std::endl; int main() { int sum; sum = 37 + 15; cout << "Summan är :" << } källkod (lagrad i en fil) C++kompilator (cl) objektkod (lagrad i en fil) 1100011100 0100010000 0111100111 0001010101 0001 MyApp.obj systembibliotek (lagrad i fil) 1100011100 0100010000 0111100111 0001010101 0001 #ifndef IOSTREAM_H #define #ifndef IOSTREAM_H IOSTREAM_H #pragma #define option IOSTREAM_H push -b // -*- #pragma C++ -*- option push -b #ifndef // -*- STD_IOSTREAM C++ -*- #define #ifndef STD_IOSTREAM STD_IOSTREAM #define STD_IOSTREAM headerfiler maskinkod (genereras en gång & lagras i en fil) Länkare (link) 0011000101010000100 11100101001000100 MyApp.exe 9 (14)

Problem-analys-kodning-exekvering Problem Viktigaste steget! Syftet med att skriva ett program är att lösa ett problem. utan dator Analys (vad?) De generella stegen vid problemlösning är: Design (hur?) algoritmer Förstå problemet. Kodning Dela upp problemet i mer hanterbara mindre problem. Skapa en lösning. med dator Kompilera Exekvera Fel Fel Fundera över alternativa lösningar. Implementera lösningen. Resultat Fel Testa lösningen och åtgärda eventuella problem som finns. 10 (14)

Omvandla växeln från kro Beräkna antal 500-lappar. Beräkna återstående växel. Beräkna antal 100-lappar. Beräkna återstående växel. Beräkna antal 50-lappar. Beräkna återstående växel. Beräkna antal 20-lappar. Beräkna återstående växel. Beräkna antal 10-kronor. Beräkna återstående växel. Beräkna antal 5-kronor. Beräkna återstående växel. Beräkna antal 1-kronor. Beräkna återstående växel. Beräkna antal 50-öringar. "ren svenska" start Läs in change Algoritmer En algoritm är en sekvens av intruktioner som görs för att utföra en sak eller lösa ett problem. Kan skrivas på ren svenska, flödesdiagram, pseudokod, Kan behöva justeras allt eftersom du arbetar. change change 100 note500 change / 50000 change change % 50000 Konstruera alltid en algoritm innan du börjar koda! slut flödesdiagram 11 (14)

Att förstå och analysera ett problem Problem Konvertera ett växelbelopp i kronor till antal 500-, 100-, 50- och 20-lappar, samt 10-, 5- och 1-kronor, och eventuell 50-öring. Exempel Givet 628,50 kr, d.v.s. 62850 ören. Antal 500-lappar: dividera 62850 med 50000 Kvoten är 1. Resten är 12850. Antal 100-lappar: dividera 12850 med 10000 Kvoten är 1. Resten är 2850 Resterande antal sedlar och mynt enligt samma princip. Resultat: 1 st 500-lapp, 1 st 100-lapp, 0 st 50- lappar, 1 st 20-lapp, 0 st 10-kronor, 1 st 5-krona, 3 st 1-kronor och 1 st 50-öring. 12 (14)

Resulterande algoritm 1. Omvandla växeln från kronor till ören. 2. Beräkna antal 500-lappar. 3. Beräkna återstående växel. 62850 ören 1 st 500-lapp 12850 ören start Flödesdiagram På ren svenska 4. Beräkna antal 100-lappar. 5. Beräkna återstående växel. 6. Beräkna antal 50-lappar. 1 st 100-lapp 2850 ören 0 st 50-lapp Läs in change givet 628,50 kr 7. Beräkna återstående växel. 8. Beräkna antal 20-lappar. 2850 ören 1 st 20-lapp change change 100 62850 ören 9. Beräkna återstående växel. 850 ören 10. Beräkna antal 10-kronor. 11. Beräkna återstående växel. 0 st 10-kronor 850 ören note500 change / 50000 1 st 500-lapp 12. Beräkna antal 5-kronor. 1 st 5-krona 13. Beräkna återstående växel. 14. Beräkna antal 1-kronor. 350 ören 3 st 1-kronor change change % 50000 resten är 12850 ören 15. Beräkna återstående växel. 50 öre 16. Beräkna antal 50-öringar. 1 st 50-öring En steg för steg instruktion en sekvens! slut 13 (14)

Implementation Den slutliga implementationen av algoritmen innebär att vi översätter vår framtagna algoritm till ett fungerande program i det programspråk som vi valt. Detta gör vi med hjälp av tillgänglig syntax, d.v.s. de instruktioner som programspråket C++ tillhandahåller för att utföra operationerna i resp. sekvenssteg. Efter kompilering och länkning enligt tidigare beskrivning, kan vi sedan åstadkomma ett fungerande program. Innan detta kan exekveras, d.v.s. köras, måste vi oftast felsöka eller debugga det, och alltid testa noga, innan vi är nöjda med det slutliga resultatet. 14 (14)

Sammanfattning Det viktigaste att ha med sig är: Datorn förstår inte data - Kan endast bearbeta data. För att datorn ska kunna göra något krävs ett program Processorn förstår endast sitt eget språk - Maskinkod Program skrivs vanligen i högnivåspråk, t ex C++ Högnivåspråk måste översättas till maskinkod före exekvering Kompilator (=översättare) översätter programmet i sin helhet före exekvering Interpretator (=tolk) tolkar till maskinkod under programmets körning Länkaren länkar ihop det egna programmet med färdigkompilerad bibliotekskod till ett komplett körbart program Programutvecklingsprocessen består av flera steg - Analys (vad ska göras), - Design (hur ska det göras) - Implementering (kodning och test) 15 (14)