13.07.2015 Views

Variabler, uttryck och satser - Sm.luth.se

Variabler, uttryck och satser - Sm.luth.se

Variabler, uttryck och satser - Sm.luth.se

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

L U L E Å T E K N I S K A U N I V E R S I T ETINTRODUKTION TILL PROGRAMMERINGL U L E Å T E K N I S K A U N I V E R S I T ETINTRODUKTION TILL PROGRAMMERINGS Y S T E M T E K N I KD 0 0 0 9 ES Y S T E M T E K N I KD 0 0 0 9 EVärdenIntroduktion till programmeringD0009EFöreläsning 2: “<strong>Variabler</strong>, <strong>uttryck</strong> <strong>och</strong> <strong>sat<strong>se</strong>r</strong>” De grundläggande saker som en dator manipulerar –resultaten av beräkningar – kallas värden Värden vi stött på: 2 <strong>och</strong> "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 <strong>och</strong> 3.14 är exempel på flyttal (float) Ob<strong>se</strong>rvera citat-tecknen:• "2" <strong>och</strong> "3.14" är båda värden av typen string12L U L E Å T E K N I S K A U N I V E R S I T ETINTRODUKTION TILL PROGRAMMERINGL U L E Å T E K N I S K A U N I V E R S I T ETINTRODUKTION TILL PROGRAMMERINGS Y S T E M T E K N I KD 0 0 0 9 ES Y S T E M T E K N I KD 0 0 0 9 EOm typer Vi kan fråga interpretatorn vad ett värde har för typ:>>> type("Hello, World!")>>> type(17)>>> type(3.14)>>> type("3.14")(Konvention: >>> markerar interaktion medinterpretatorn, blå färg är text vi själva skriver)Flyttal Ob<strong>se</strong>rvera att flyttal skrivs med decimal-punkt, ejkomma:>>> print 3.143.14 Om vi försöker använda decimal-komma blir vi dockförvånade:>>> print 3,143 14 Orsak: print tar egentligen en komma-<strong>se</strong>parerad lista avvärden, som <strong>se</strong>dan skrivs ut med inskjutna mellanslag!34L U L E Å T E K N I S K A U N I V E R S I T ETINTRODUKTION TILL PROGRAMMERINGL U L E Å T E K N I S K A U N I V E R S I T ETINTRODUKTION TILL PROGRAMMERINGS Y S T E M T E K N I KD 0 0 0 9 ES Y S T E M T E K N I KD 0 0 0 9 E<strong>Variabler</strong><strong>Variabler</strong> 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ärdetett namn" I Python:>>> message = "What's up, Doc?">>> n = 17>>> pi = 3.14159 print <strong>och</strong> type fungerar också för variabler:>>> print n17>>> print pi3.14159>>> type(n)>>> type(message)561


L U L E Å T E K N I S K A U N I V E R S I T ETINTRODUKTION TILL PROGRAMMERINGL U L E Å T E K N I S K A U N I V E R S I T ETINTRODUKTION TILL PROGRAMMERINGS Y S T E M T E K N I KD 0 0 0 9 ES Y S T E M T E K N I KD 0 0 0 9 ETillståndTyper7 Uppsättningen definierade variabler <strong>och</strong> deras värdenförändras normalt under ett programs gång Det tillstånd ett program har i ett visst ögonblick kanbeskrivas av en figur som anger de definieradevariablernas värde:messagenpi"What's up, Doc?"173.14159 Vi kommer att <strong>se</strong> många sådana figurer framöver8 Heltal• numeriska värden utan decimaler• exempel: 4 Flyttal• numeriska värden med decimaler• exempel: 7.9 Strängar• textvärden (textsträngar)• exempel: ”banan”L U L E Å T E K N I S K A U N I V E R S I T ETINTRODUKTION TILL PROGRAMMERINGL U L E Å T E K N I S K A U N I V E R S I T ETINTRODUKTION TILL PROGRAMMERINGS Y S T E M T E K N I KD 0 0 0 9 ES Y S T E M T E K N I KD 0 0 0 9 ETyper I python bestäms variabelns typ vid tilldelning:• n=5 (n blir en heltalsvariabel)• s=”olle” (s blir en sträng) I de flesta andra språk måste man tala om vilken typ manvill ha (kallas att deklarera variabeln)• i övrigt fungerar det likadantRegler för variabler Ok:• n, pi, x, bruce, Bruce, Bruce_Wayne, bruce9 Felaktig syntax:• 76trombones, more$, Bruce Wayne, class Namnet class är felaktigt som variabelnamn eftersom det är ett sk nyckelord i Python. Nyckelord har speciell betydel<strong>se</strong> <strong>och</strong>kommer att förklaras efter hand. Övriga nyckelord:and as<strong>se</strong>rt break continue def del elif el<strong>se</strong> except,exec finally for from global if import in is lambdanot or pass print rai<strong>se</strong> return try while yield910L U L E Å T E K N I S K A U N I V E R S I T ETINTRODUKTION TILL PROGRAMMERINGL U L E Å T E K N I S K A U N I V E R S I T ETINTRODUKTION TILL PROGRAMMERINGS Y S T E M T E K N I KD 0 0 0 9 ES Y S T E M T E K N I KD 0 0 0 9 ESat<strong>se</strong>r En sats (statement) är en instruktion till datorn att utföranågot. Vi använder ibland ordet kommando också Sat<strong>se</strong>r vi <strong>se</strong>tt hittills: print <strong>och</strong> variabeltilldelning Ett script är en <strong>se</strong>kvens av <strong>sat<strong>se</strong>r</strong> (dvs en följd avkommandon). Exempel:print 1x = 2print x Kan läggas i en fil (säg test.py) <strong>och</strong> köras. Resultat:12Uttryck <strong>och</strong> evaluering Ett <strong>uttryck</strong> (expression) är en kombination av värden,variabler <strong>och</strong> matematiska operatorer. Exempel:>>> print 1+12 Betydel<strong>se</strong>: evaluera först <strong>uttryck</strong>et 1+1 till ett värde,skriv <strong>se</strong>dan ut detta värde Exempel på <strong>uttryck</strong>: 1+1 17 x 19*2-3 OBS: ett ensamt <strong>uttryck</strong> på en rad ger också en utskriftav utryckets värde. Två skillnader gentemot print:•Citat-tecknen försvinner inte för strängar•Fungerar bara interaktivt, ignoreras i script11122


L U L E Å T E K N I S K A U N I V E R S I T ETS Y S T E M T E K N I KL U L E Å T E K N I S K A U N I V E R S I T ETS Y S T E M T E K N I KINTRODUKTION TILL PROGRAMMERINGD 0 0 0 9 EINTRODUKTION TILL PROGRAMMERINGD 0 0 0 9 EOperatorer <strong>och</strong> operander Fler exempel på Python-<strong>uttryck</strong>:20+32hour-1hour*60+minuteminute/605**2 (exponent-operation)(5+9)*(15-7) +, -, *, /, ** kallas operatorer, de arbetar på operander Betydel<strong>se</strong>n är den förväntade. Ob<strong>se</strong>rvera dock:>>> 10/33 (heltalsdivision!)Flyttalsoperatorer De matematiska operatorerna är även definierade förflyttal:2.5 + 1.0 (evaluerar till 3.5)2.5 + 1 (evaluerar också till 3.5)2.0**3.0 (evaluerar till 8.0)16**0.5 (evaluerar till 4.0)-1 * 0.5 (evaluerar till -0.5) Division för flyttal är den förväntade operationen:>>> print 10.0/33.33333333333 Regel: om en operand är en float konverteras denandra automatiskt (om den är en int)1314L U L E Å T E K N I S K A U N I V E R S I T ETS Y S T E M T E K N I KL U L E Å T E K N I S K A U N I V E R S I T ETS Y S T E M T E K N I KINTRODUKTION TILL PROGRAMMERINGD 0 0 0 9 EINTRODUKTION TILL PROGRAMMERINGD 0 0 0 9 EEvalueringsordning Python följer den etablerade precedens-ordningen förmatematiska operatorer. Minnesregel PEMDAS(Parentes, Exp, Mult, Div, Add, Sub) Exempel:2 * (3-1) är lika med 2 * 2(1+1)**(5-2) är lika med 2 ** 3(3 * 100) / 60 är lika med 300 / 603 * 100 / 60 är lika med (3*100) / 603*1**3 är lika med 3 * (1**3)2 * 3-1 är lika med (2*3) - 11+2 / 3 är lika med 1 + (2/3)Uttryck med strängar Antag att vi definierat message = "abc" Följande är felaktiga <strong>uttryck</strong> (resulterar i run-time-fel):message-1 message*"Hello" "15"+2 Regel: matematik fungerar bara på heltal (<strong>och</strong> flyttal) Men: operatorerna + <strong>och</strong> * har i Python getts enannan betydel<strong>se</strong> för just strängar:>>> fruit = "banana">>> print fruit + " nut bread"banana nut bread>>> print "Fun" * 3FunFunFun1516L U L E Å T E K N I S K A U N I V E R S I T ETS Y S T E M T E K N I KL U L E Å T E K N I S K A U N I V E R S I T ETS Y S T E M T E K N I KINTRODUKTION TILL PROGRAMMERINGD 0 0 0 9 EINTRODUKTION TILL PROGRAMMERINGD 0 0 0 9 EOb<strong>se</strong>rvation: 4*3 är lika med 4+4+4 "Fun"*3 är lika med "Fun"+"Fun"+"Fun" Där slutar dock överensstämmel<strong>se</strong>n med heltalen!• 3+7 är lika med 7+3• "abc"+"def" är inte lika med "def"+"abc" Ob<strong>se</strong>rvera:• + är definierad för heltal + heltal samt sträng + sträng• * är definierad för heltal * heltal samt sträng * heltal (Dessutom har vi flyttalen, <strong>och</strong> många operatorer är definieradeför andra typer också – mer om det <strong>se</strong>nare)Sammansatta <strong>uttryck</strong> Operander kan själva vara <strong>uttryck</strong> eller variabler – vi kan alltsåsätta samman större <strong>uttryck</strong> från mindre delar:>>> print "Minutes left:", hours*60 + minutesMinutes left: 72>>> percentage = (minutes * 100) / 60>>> claim = "SMD180 is " + "Fun"*3 + " indeed!" Större program (script) är i allmänhet fulla av sådanasammansatta <strong>uttryck</strong>. Är man osäker kan man dock alltid införanamn på del<strong>uttryck</strong>en:>>> m100 = minutes * 100 # temporary variable>>> percentage = m100 / 60 # integer division!17183

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!