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...

4
1 L U L E Å T E K N I S K A U N I V E R S I T ET D 0 0 0 9 E S Y S T E M T E K N I K INTRODUKTION TILL PROGRAMMERING 1 Introduktion till programmering D0009E 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 ET D 0 0 0 9 E S 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 ET D 0 0 0 9 E S 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 ET D 0 0 0 9 E S 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 ET D 0 0 0 9 E S 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 ET D 0 0 0 9 E S 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

Upload: phamquynh

Post on 30-Sep-2018

212 views

Category:

Documents


0 download

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