Presentation laddar. Vänta.

Presentation laddar. Vänta.

2002-11-22F. Drewes, Inst. f. datavetenskap1 Föreläsning 7: Uttryck och sidoeffekter Uttryck Sidoeffekter Överladdning Tilldelningar i uttryck.

Liknande presentationer


En presentation över ämnet: "2002-11-22F. Drewes, Inst. f. datavetenskap1 Föreläsning 7: Uttryck och sidoeffekter Uttryck Sidoeffekter Överladdning Tilldelningar i uttryck."— Presentationens avskrift:

1 F. Drewes, Inst. f. datavetenskap1 Föreläsning 7: Uttryck och sidoeffekter Uttryck Sidoeffekter Överladdning Tilldelningar i uttryck

2 F. Drewes, Inst. f. datavetenskap2 Uttryck Några vanliga typer av uttryck  aritmetiska uttryck handlar om tal (+, ,…)  booleska uttryck handlar om sanningsvärden (&&, ||, …)  relationsuttryck jämför värden (<, =, …)  konditionala uttryck väljer mellan alternativ (t.ex. i Java even(x) ? x : x+1) Ett uttryck är en notation som står för ett värde. Uttryck innebär abstraktion: Programmeraren behöver inte syssla med instruktionssekvensen som räknar ut värdet. Uttryck bör helst sakna effekt!

3 F. Drewes, Inst. f. datavetenskap3 Sidoeffekter Exempel: utvädera x – x++ + x i Java Utan sidoeffekter är evalueringsordningen irrelevant  i E  E' får antingen E eller E' utvärderas först – eller båda samtidigt  ibland behövs värdet av E eller E' inte alls  kompilatorn kan optimera programmet Lat evaluering (eng. short-circuit evaluation) av booleska eller andra uttryck blir problematisk Om evalueringen av ett uttryck påverkar värdet av en variabel är det en sidoeffekt. I så fall är uttrycket inte längre bara en notation för ett värde (  ökande komplexitet).

4 F. Drewes, Inst. f. datavetenskap4 Överladdning Bra (t.o.m. nödvändigt) för att förenkla språk  vem vill jämt och ständigt särskilja float + float och int + int? Kräver omtänksam språkutveckling – motexempel:  x&y mot &y('&' för både 'och' och adressoperator i C)  a = b = c('=' för både tilldelning och likhet i PL/I)  average = sum / count (i Java: visst menas inte heltalsdivision?) Om användaren kan överladda identifierare medför det både för- och nackdelar (läsbarheten kan öka) En identifierare är överladdad (eng. overloaded) om den har flera olika betydelser beroende på kontexten (t.ex. '+' som symbol för både plus och konkatenering).

5 F. Drewes, Inst. f. datavetenskap5 Tilldelningar i uttryck I C, C++, Java är x = E inte bara en tilldelning utan också ett uttryck vars värde är Es värde (som alla vet?). Fördelar  kan utnyttjas för att koda koncist, t.ex. if (odd(y=f(x))) y++;  kan tilldela ett värde till flera variabler samtidigt (eng. multiple targets), t.ex. x = y = z = E; Nackdelar  är "sidoeffekten par excellence"  program blir väldigt fort oläsbara om inte programmeraren är försiktig


Ladda ner ppt "2002-11-22F. Drewes, Inst. f. datavetenskap1 Föreläsning 7: Uttryck och sidoeffekter Uttryck Sidoeffekter Överladdning Tilldelningar i uttryck."

Liknande presentationer


Google-annonser