een symbolische naam voor een object. Variabelen Constanten Variabelen Expressies naam : geeft de plaats in het geheugen aan waarde : de inhoud van het object identifier : een rij van letters en/of cijfers en/of _ betekenisvol kiezen, niet te lang: dit_is_een_variabele_voor_de_som type: via de toekenning aantal bytes dat in het werkgeheugen nodig is welke operatoren toegelaten zijn op het object int 8 bytes gehele getallen + - * / % ** float 8 bytes floating point getallen + - * / ** Constanten integers : een exacte voorstelling van gehele getallen floating point numbers : niet-exacte voorstelling van reële getallen logische waarden : True en False tekst (strings) : Geef getal:, zie een volgend hoofdstuk. gehele constanten reële constanten 123 (decimaal) 12.3 Voorbeelden: -123 0.5 0123 (octaal).5 0x123 (hexidecimaal) 5. 5e4 Voorbeeld : varid.py # varid.py: variabelen: geheel getal en reeel getal def main ( ) : i = 2 j = 5 / 3 f f = 5.0 / 3 print i =, i print j =, j print f f =, f f # startoproep main () De output van dit programma: i = 2 j = 1 ff = 1.66666666667 deling van twee gehele getallen een geheeltallig quotiënt
Expressies algemene vorm : operand_1 operator operand_2 Rekenkundige expressies en operatoren ** machtsverheffing a ** b + unair plusteken +i - unair minteken -i * vermenigvuldiging a * b / deling quotiënt bij geheeltallige deling a / b % modulus rest bij geheeltallige deling a % b + optelling x + y - aftrekking x - y Prioriteit : volgens tabel: van boven naar onder Logische expressies waar of True : alle niet nul-waarden twee mogelijke uitkomsten: onwaar of False : een nul-waarde relationele operator: waarden van twee variabelen (of expressies) vergelijken logische operator: eenvoudige logische expressies combineren < kleiner dan <= kleiner dan of gelijk aan not logische niet (unair) > groter dan and logische en >= groter dan of gelijk aan or logische of == gelijk aan!= verschillend van Rekenkundige expressies beide operands van hetzelfde type resultaat van dat type 1 / 2 heeft als resultaat 0 1.0 / 2.0 heeft als resultaat 0.5 5 % 3 heeft als resultaat 2 gemengde rekenkundige expressies één operand integer float resultaat float de ander float 1 / 2.0 heeft als resultaat 0.5 1.0 / 2 heeft als resultaat 0.5 machtsverheffing en unaire min -2 ** 4 heeft als resultaat -16 Voorbeelden Heeft x een waarde kleiner dan of gelijk aan 40.0 : x <= 40.0 Heeft x een waarde gelegen tussen 2.0 en 5.2 : 2.0 < x and x < 5.2 In Python ( maar niet in een heleboel andere talen) ook mogelijk: 2.0 < x < 5.2 Verschil op tussen = (toekenning) en == (test op gelijkheid): x = 5 # toekenning: naam voor object met waarde 5 x == 5 # test : waar als waarde van object met naam x # gelijk is aan de waarde 5
Toekenningsoperatoren Combinatie van eenvoudige logische expressies exp1 and exp2 is waar wanneer zowel exp1 als exp2 waar is; exp1 or exp2 is waar wanneer één van beide (exp1 en/of exp2) waar is; not exp1 is waar wanneer exp1 niet waar is. Dit wordt meestal weergegeven in waarheidstabellen: False True False True False False False False False True False True True False True True True True True False e1 and e2 e1 or e2 not e1 De toekenningsoperator = resultaat van een expressie (object) een naam geven tweede naam expressie variabele a = x variabele = y + z toekenning waarden berekening Meerdere namen langs linkerkant gescheiden door komma s: a, b = 3, 9 statement Langs rechterkant: evenveel expressies, gescheiden door komma s naam toewijzing gebeurt opeenvolgend (a 3, b 9). Een opeenvolging van statements geeft een programma. Kortsluitingsprincipe Bij een logische operator: de tweede operand niet geëvalueerd tenzij nodig Een operand na and of or wordt niet meer berekend als de operand ervoor al uitsluitsel over het resultaat geeft. Toepassing: False and... # heeft de waarde False (intern 0) True or... # heeft de waarde True (intern 1) wanneer n gelijk is aan nul wordt t/n niet berekend : n!= 0 and t/n > 1 wanneer n gelijk is aan nul wordt t/n niet berekend : n == 0 or t/n > 1 In tegenstelling tot sommige andere talen, geven deze expressies geen Run time error. Resultaat van een logische expressie : toekennen aan een variabele # logex.py: logische expressies def main ( ) : invoer = raw input ( Geef eerste getal : ) a = int ( invoer ) invoer = raw input ( Geef tweede getal : ) b = int ( invoer ) r = a<=0 or b>=10 print r (, a,,, b, ) i s, r r = a>0 and b<10 print r (, a,,, b, ) i s, r # startoproep main ()
Resultaat van operatie op object (via variabele) : terug toewijzen aan deze variabele 7 4 + 11 CPU i += 4 i = i + 4 k *= j k = k * j z -= x z = z - x d /= 3 d = d / 3 7 i RAM 11 i z %= y i += 4 variabele na toekenning: waarde 7 niet meer bereikbaar via de naam i z = z % y waarde ook toekenningsoperatoren : rekenbewerking gecombineerd met een toekenning Reeds geziene operatoren gerangschikt van hoge naar lage prioriteit: ** rechts - + rechts * / % links + - links ==!= < <= > >= keten not and or De meeste operatoren associëren van links naar rechts: a + b + c wordt geïnterpreteerd als rechts links links (a + b) + c Unaire operatoren en machtsverheffing van rechts naar links: a ** b ** c wordt geïnterpreteerd als a ** (b ** c) Volgorde van operatoren Volgorde van uitvoeren operatoren : prioriteit en associativiteit 2 + 3 * 4 2 + 3 * 4 5 12 PRIORITEIT Oefening 20 9-4 - 2 14 9-4 - 2 ( 2 + 3 ) * 4 i, j, r = 8, 4, 0 r = i j r = ( i / j ) == i % j r = i < j or i > j 5 2 ASSOCIATIVITEIT 3 7 9 - ( 4-2 ) Deze regels opheffen : gebruik maken van haakjes ( )
Enkele voorgedefinieerde functies In expressies: constanten, variabelen en ook functie-oproepen. In vorige voorbeelden: raw input, int en float Enkele standaard functies: exit(status) abs(n) beëindigen van een script absolute waarde Heleboel functies, gegroepeerd in modules, bijv. wiskundige functies import math x = 1.0 y = math. cos (x) voor argument x wordt cosinus-waarde berekend en deze functiewaarde wordt toegekend aan de variabele y argument (of resultaat) : uitgedrukt in radialen Wiskundige standaardfuncties ( module math): cos(x) cosinus acos(x) boogcosinus sin(x) sinus asin(x) boogsinus tan(x) tangens atan(x) boogtangens exp(x) exponentiële waarde log(x) natuurlijk logaritme pow(x, y) x tot de macht y sqrt(x) vierkantswortel log10(x) logaritme met grondtal 10 cosh(x) cosinus hyperbolicus floor(x) geheel getal net kleiner dan x sinh(x) sinus hyperbolicus ceil(x) geheel getal net groter dan tanh(x) tangens hyperbolicus Het object dat als resultaat teruggegeven wordt uit deze functies is van type float. 1. ofwel wordt uit de volledige module geïmporteerd: import math x = 1.0 y = math. cos (x) bij het gebruik van de functie moet de module aangegeven worden: dot notatie: modulenaam gevolgd door een punt en dan de naam van de functie; 2. ofwel wordt uit de module een specifieke functie geïmporteerd: from math import cos x = 1.0 y = cos (x) bij gebruik van de functie: modulenaam niet specificeren meerdere functies importeren: na elkaar gescheiden door komma s from math import sin, cos alle functies van een module importeren: from math import. Tabel met cosinuswaarden # costab.py : een tabel met cosinus waarden import math def main ( ) : graden = 0.0 print %7s %10s % ( x, cos (x) ) print 18 while graden <= 360.0 : radialen = graden math. pi /180.0 y = math. cos ( radialen ) print %7.1 f %10.4 f % ( graden, y) graden += 30.0 # startoproep main ()
Resultaat van het programma x cos(x) ------------------ 0.0 1.0000 30.0 0.8660 60.0 0.5000 90.0 0.0000 120.0-0.5000 150.0-0.8660 180.0-1.0000 210.0-0.8660 240.0-0.5000 270.0-0.0000 300.0 0.5000 330.0 0.8660 360.0 1.0000 Argument van de cos functie in radialen: gegeven hoek in graden omzetten: πx/180 In de math module is een constante gedefinieerd met een waarde (benaderend) gelijk aan π math.pi = 3.1415926535897931 Begrippen Constanten, objecten, variabelen, identifiers, types. Expressies: rekenkundig, vergelijkend, logisch. Toekenning: toewijzen van een naam aan een object Operatoren: unair en binair, prioriteit en associativiteit. Voorgedefinieerde functies: import Formattering Mooi uitgelijnde tabel: format (%) operator in het print statement eerste operand: formaatstring die aangeeft hoe formatteren %d int waarde eventueel getal geeft veldbreedte aan %f float waarde eventueel eerste getal geeft veldbreedte aan tweede getal geeft aantal cijfers na de komma aan %s string waarde eventueel getal geeft veldbreedte aan tweede operand : opsomming van objecten; formaatstring operator variabelen print %7.1f %10.4f % (graden, y) float getal float getal tabel met lijntje onder de titel: operatie op de string - : een vermenigvulding met 18 resultaat: een string bestaande uit 18 mintekens.