l u l e Å t e k n i s k a u n i v e r s i t et ... · en maskin vars beteende styrs av de...
TRANSCRIPT
1
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
1
Introduktion till programmeringD0009E
Föreläsning 1: “Programmets väg”
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
2
Vad är en dator?
� En maskin vars beteende styrs av de innehållet (bitmönster) som finns lagrade i datorns minne(inte helt olikt förra seklets självspelande pianon!)
� Att programmera en dator handlar alltså om att lägga in önskade bitmönster i datorns minne...
� Problemet är bara att människor har väldigt svårt att tänka i termer av bitmönster(jämför att spela piano genom att stansa hålrullar)
� Lyckligtvis kan vi ta hjälp av andra program när vi programmerar!
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Enkel mental model av datorn
3
CPU
Minne: Data
Minne lagrar information
Processor förändrar information- det är den vi programmerar,- kan man säga
Minne: Instruktioner
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Programmeringsparadigmer
� Olika paradigmer
• fundamentalt olika sätt att programmera
4
Programmeringsspråk
Deklarativa språk
Funktionella språk Logikspråk
Imperativa språk
Denna kurs
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Vad är ett program?
� Ett imperativt program är en sekvens av instruktioner till datorn• skrivna på ett speciellt språk
• programmeringsspråk
� Instruktionerna utförs, en efter en• när dom är slut är programmet slut
� Varje instruktion utför något• Ändrar datorns tillstånd/bitmönster
� Ordningen väldigt viktig• Inte samma program om vi kastar om instruktionerna
� Det finns programmeringsspråk som fungerar helt annorlunda• dessa kallas deklarativa språk• ...men dom tar vi inte upp i den här kursen
5
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Ett enkelt ”program” för att brygga kaffe ☺
� häll i vatten i behållaren
� ta fram ett kaffefilter
� häll i en skopa kaffe i filtret
� upprepa ovanstående tills tillräckligt med kaffe finns i filtret
� montera filtret
� slå på bryggaren
� titta efter om kaffet är klart
� upprepa ovanstående tills kaffet är klart
� häll upp kaffet
6
2
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Ett enkelt ”program” för att brygga kaffe ☺
� häll i vatten i behållaren
� ta fram ett kaffefilter
� häll i en skopa kaffe i filtret
� upprepa ovanstående tills tillräckligt med kaffe finns i filtret
� montera filtret
� slå på bryggaren
� titta efter om kaffet är klart
� upprepa ovanstående tills kaffet är klart
� häll upp kaffet
7
Innehåller manga fundamental komponenter i ett imperativt språk!
Upprepning
Inläsning av data från omvärlden
Vänta på extern händelse(mer om detta i realtidssystem)
Villkor
Ordning av satser
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
8
Python
� Ett modernt interpreterat högnivåspråk
� Exempel på andra språk som du kanske hört talas om: C, Pascal, C++, Java, Ada, Tcl, Perl, Visual Basic, C#, ...
� Exempel på språk som enbart kan beskriva data men inte beräkningar: HTML, XML, ASN.1, ...
� Python är fritt tillgängligt (python.org) och stödjer en mängd datorplattformar – installera gärna hemma!
� Populärt inom open-source-världen, används bl a av Google, NASA, AstraZeneca, Honywell och NYSE
� Blir allt vanligare på universiteten, på LTU från 2006!
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Exekvering (körning) av program
� Hur kan datorn “förstå” vårt program?
• Är den konstruerad (byggd) för vårt spark (python)?• Måste man ha olika datorer för olika språk?
� Nej, datorn är byggd för ett helt annat, mycket enklare spark:
• Detta kallas maskinkod och är inte till för människor att läsa (det går, men det är jobbigt)
� Man översätter alla andra spark till denna maskinkod.
9
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Kompilering/interpretering
� Två grundläggande sätt att översätta:• medans man kör programmet (typ simultantolkning)
• kallas att tolka eller interpretera programmet
• en enda innan man startar programmet (jämför med attöversätta en bok)
• kallas att kompilera programmet
� Vem/vad tolkar och kompilerar?• Ett annat program!
• Hur har man skrivit det?– På exakt samma sätt!
� En modern dator går inte att starta utan program!• Man kan inte “komma igång” om datorn är helt tom!
10
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
11
Kompilering/interpretering
� Interpretering:
• Tolkning måste göras varje gång programmet körs, tar längre tid än att köra redan översatt maskinkod
• Programutvecklingen blir dock betydligt enklare och kan ske interaktivt
� Kompilering:
• Det översatta programmet kräver liten eller ingen tolkning när det ska köras, ger ofta bättre prestanda
• Själva översättningen tar dock tid och gör programutvecklingsarbetet krångligare
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
13
Python-miljön IDLE
� Vi kommer oftast att arbeta med Python-program i den integrerade utvecklingsmiljön IDLE
� IDLE är ett fönster-baserat program som• kör Python-interpretatorn som en underprocess i fönstret Python Shell
• kan öppna och redigera Python-script (filer som slutar på .py) i separata fönster
� Fönstren använder färger för att göra Python-texterna mer lättlästa
� Aktuellt script kan enkelt köras med knappen F5
3
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Python-miljön IDLE
� Man skriver programet i etteget förnster (editor)
� Resultatet av körningen syns i“shell”-fönstret
� Exempel: antag att filen kalle.pyinnehåller kommandotprint 1+1
� resultatet2
kommer att skrivas ut, varefterprompten visas
14
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Python-miljön IDLE
� Det går bra att “testa” kommandon direct på prompten
• bra för att felsöka och förstå
• fördel med tolkade språk
15
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
17
Byggstenarna i ett program
� Hämta indata (från tangentbord, fil, nätverk, ...)
� Producera utdata (på skärm, fil, nätverk, ...)
� Matematiska operationer (+, -, *, <, ...)
� Villkorlig körning
� Repetition
� Vi har redan sett exempel på produktion av utdata (kommandot print) och matematik (uttrycket 1+1). Övrigt följer, men är i grunden lika enkelt.
� Konsten att programmera är att kunna sätta samman dessa byggstenar till meningsfulla större enheter!
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
18
Det klassiska första programmet
� Brukar användas som exempel på den mest triviala uppgift ett program kan ha: skriv ut texten
Hello, World!
som resultat och avsluta sedan
� I Python blir detta rätt och slätt kommandot
print ”Hello, World!”
� Observera citat-tecknen, de är exempel på en syntaktisk detalj av avgörande betydelse i ett formellt språk men som ofta kan utelämnas i naturligt språk
� I nästa kapitel ska vi titta vidare på dessa skillnader!
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Litet enkelt program
19
print "-- Mitt program --"v = 3g = 4print v,"multilicerat med ",g," blir ",v*gprint "-- Slut på mitt program --"
Programmet:
Resultatet av körning:
-- Mitt program --3 multilicerat med 4 blir 12-- Slut på mitt program --
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
20
Variabler
� Central egenskap hos programspråk: att kunna ge namn åt värden. Dessa namn kallas variabler.
� "Ge en variabel ett värde" synonymt med "ge värdet ett namn"
� I Python:
>>> message = "What's up, Doc?"
>>> n = 17
>>> pi = 3.14159
4
L U L E Å T E K N I S K A U N I V E R S I T ETD 0 0 0 9 ES Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
21
Värden
� De grundläggande saker som en dator manipulerar –resultaten av beräkningar – kallas värden
� Värden vi stött på: 2 och "Hello, World!"
� Olika typer av värden:• 2 är ett heltal (integer)
• "Hello, World!" är en sträng av tecken (string)
� Tal med decimaler utgör en egen typ:• 2.0 och 3.14 är exempel på flyttal (float)
� Observera citat-tecknen:• "2" och "3.14" är båda värden av typen string