2003-11-25Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.

Slides:



Advertisements
Liknande presentationer
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Advertisements

Funktioner och programorganisation
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella.
Programmeringsteknik Föreläsning 6 Skolan för Datavetenskap och kommunikation.
OOP Objekt-orienterad programmering
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
Föreläsning 4 Python: mera om funktioner och parametrar
Polymorfism.
Programmeringsteknik för K och Media
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
i olika programmeringsspråk
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv får vänta)  Iden med klasser.
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Föreläsning 11 Arrayer.
1 Funktioner Nr 3 Funktionstyper, högre ordningens funktioner och polymorfism.
Programmering i C# 3. Klasser.
Pekare och speciell programstruktur i inbyggda system
Klasser och objekt Klasser, objekt och instansvariabler
Ali Ghodsi Variabler En variabel är en sorts behållare som man kan placera data i Man måste ange typ och namn för alla variabler.
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Programmering B PHP Lektion 2
int res2=Math.max(tal1,tal2);
Polymorfism.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
William Sandqvist C:s minnesmodell.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Namnrum, räckvidd och rekursion Linda Mannila
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax Flertydighet i kontextfri.
Anders Broberg, Programspråksteoridelen DVA Moment 2 1 Variabler Abstraktion av en minnescell En förvaringslåda som kan beskrivas med 6 attribut –Namn.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 7: Uttryck och sidoeffekter Uttryck Sidoeffekter Överladdning Tilldelningar i uttryck.
Anders Broberg, Programspråksteoridelen DVA Moment 2 1 Epost: Hemsida: Tel: Rum: D438.
F6 - Pekare 1 Programmeringsteknik, 4p vt-00 Pekare & adresser Alla variabler är knutna till en viss adress i minnet int i; adressen till denna fås med.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 9: Implementering av underprogram Aktiveringsposter Exekveringsstacken Implementera dynamisk räckvidd.
Arv repetition Arv = Är relation Tillgänglighet public, protected och private. Överklass ös Direkt härledd underklass dhu: Class dhu : public ös{} Indirekt.
Anders Sjögren Deklarationsområde och funktioner.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer.
7. Delegerare och notifierare
F. Drewes, Inst. f. datavetenskap1 Föreläsning 15: Parallella subrutiner Parallellitet Processer och trådar Semaforer, monitorer och synkroniseringsmeddelanden.
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Föreläsning 14 Logik med tillämpningar Innehåll u Cuts och negation u Input/output u Extralogiska predikat u Interaktiva program, failure-drivna.
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
F. Drewes, Inst. f. datavetenskap1 Föreläsning 12: -kalkylen allmänt om -kalkylen syntax semantik att programmera i -kalkylen.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Program indata ? utdata 1/20 Vahid Mosavat, Nada, KTH.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 4: Syntaxdefinition Formell syntaxdefinition Lexikalisk och kontextfri syntax.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 13: Resolution Resolution i satslogiken Resolution i predikatlogiken.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Anders Sjögren Funktioner något in och något annat ut.
TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder.
IT Fördjupning Jon Wide
Presentationens avskrift:

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 2 Underprogram procedurer = abstraktion av ett kommando, anropas för att få en effekt funktioner = abstraktion av ett uttryck, returnerar ett värde definition består av funktions-/procedurhuvud och kropp huvudet definierar namn, formella parametrar, resultattyp underprogrammet som vid en viss tidpunkt exekveras sägs vara aktivt Ett underprogram är ett kodstycke som kan anropas med hjälp av ett namn (processabstraktion).

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 3 Räckvidd både underprogram och block skapar lokala omgivningar för att begränsa räckvidden av lokala identifierare Lokala variabler kan vara stack-dynamiska el statiska en identifierare är icke-lokal i en programdel om den är synlig men inte deklarerad i denna del Skilj på räckvidd och livslängd Räckvidden av en identifierare (eng. scope) är den del av programmet i vilken identifieraren är synlig (dvs i vilken den kan användas).

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 4 Statisk räckvidd Statisk räckvidd: Om x används i underprogram U 0 hittas motsvarande deklaration genom att leta efter den 1.i U 0 2.i den statiska (textmässigt omgivande) föräldern U 1 till U 0 3.i den statiska föräldern U 2 till U 1 4.osv tills den närmaste deklarationen har hittats Vilken variabel namnet x refererar till framgår direkt av programtextens hierarkiska struktur program P; var x: integer; procedure A; var x: real; … x … end A; procedure B; … x … end B end P

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 5 Dynamisk räckvidd Vid dynamisk räckvidd letas en variabel i de dynamiska föräldrarna till underprogrammet genom att gå tillbaka i anropssekvensen Nackdelar  svårt att förutse möjliga effekter (låg läsbarhet)  alla underprogram som anropas får tillgång till anroparens lokala variabler  deklarationen kan först hittas vid exekvering program P; var x: integer; procedure A; var x: real; … B … end A; procedure B; … x … end B … A … B … end P första gången som B anropas är A den dynamiska föräldern, alltså refererar x till x i A andra gången som B anropas är P den dynamiska föräldern och x refererar till x i P

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 6 Parametrar Parametrisering av underprogram sker genom samspelet mellan formella och aktuella parametrar Formella parametrar är lokala variabelnamn som används för att överföra data mellan underprogrammet och omgivningen Aktuella parametrar binds till formella parametrar när underprogrammet anropas Bindning mellan a.p och f.p; vanligast position, ibland namn

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 7 Designfrågor för underprogram Parameteröverföringsmetod(er)? Typkontroller formella aktuella parametrar? Kan underprogram nästas? Kan underprogram skickas som parametrar? Vilken referensomgivning? Överlagrade underprogram? Generiska (polymorfa) underprogram? Funktioner: Sidoeffekter tillåtna? Möjliga typer på returvärden?

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 8 Parameteröverföringsmodeller riktningen av dataöverföringen kan variera mellan  in-modusformella parametern får data från den aktuella  ut-modusaktuella parametern får data från den formella  in-ut-modusbåde och de huvudsakliga överföringsmetoderna är  överföring av ett värdedata kopieras  överföring av en accessvägen referens kopieras En parameteröverföringsmodell lägger fast hur aktuella parametrar binds till formella parametrar vid ett anrop.

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 9 Parameteröverföringsmodeller (2) Värdeparameter (pass-by-value)  aktuella parameterns värde initialiserar den formella (  in-modus)  vanligtvis överföring (kopiering) av värde Resultatparameter (pass-by-result)  aktuella parametern (som måste vara en variabel) uppda- teras med den formella parameterns värde (  ut-modus)  vanligtvis överföring (kopiering) av värde  problem: »parameterkollision vid anrop, t.ex. sub(x,x) »när bestäms den aktuella parameterns adress (t.ex. i sub(a[i]) om i förändras i sub)? Värde-resultatparameter (pass-by-value-result)  kombination av båda (  in-ut-modus)

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 10 Parameteröverföringsmodeller (3) Referensparameter (pass-by-reference)  den formella parametern blir en alias av den aktuella som måste vara en variabel (  in-ut-modus)  problem »aliases minskar läsbarhet och tillförlitlighet »två typer av alias: per definition (om parametern är en icke-lokal variabel) och pga parameterkollision Namnparameter (pass-by-name)  textmässig ersättning av den formella parametern med den aktuella (  sällsam in-ut-modus)  problem: ineffektiv, svårt att implementera, förvirrande (  lämpar sig inte för universella programspråk)  ≈ lat evaluering i frånvaro av sidoeffekter

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 11 Ytterligare frågor Funktionsresultat - motsvarar en parameter i ut-modus Underprogram som parametrar  Centralt i funktionella språk, varierar i övriga språk  Vanligast: referensomgivningen ”följer med” det skickade UP (deep binding) Överlagrade underprogram  Flera UP med samma namn i samma referensomgivning  Skiljs åt genom olika ”signatur”  Flexibelt, men kan minska läsbarheten Korutiner  Symmetrisk relation mellan underprogram  ”Kvasi-parallellitet”

Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 12 Ytterligare frågor (2) Generiska / polymorfa underprogram  Kan ha parametrar av olika typ vid olika aktiveringar  Överlagring = ”ad-hoc polymorphism”  Parametrisk polymorfi = en typ som parameter  I OO-språk ytterligare annan variant (dynamisk bindning)  Finns t ex i Ada, C++, ML Ex (ML):  fun generic_sort precedes itemlist = let fun sort nil = nil | sort [x] = [x] | sort (x::y::xs) = if precedes (x,y) then... in sort itemlist end; val ascending_int_sort = generic_sort ((op bool))