2002-11-26F. Drewes, Inst. f. datavetenskap1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.

Slides:



Advertisements
Liknande presentationer
F. Drewes, Inst. f. datavetenskap1 Föreläsning 13: Resolution •Resolution i satslogiken •Resolution i predikatlogiken.
Advertisements

Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Funktioner och programorganisation
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella.
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.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Programkodens uppbyggnad
1 Föreläsning 3 Datalogi för E1 / 2D1343 Repetition List List operationer Stränghantering For-slingor.
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.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
i olika programmeringsspråk
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);
William Sandqvist C:s minnesmodell.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 6: Semantik Statisk semantik Attributgrammatiker Dynamisk semantik Axiomatisk.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
Anders Sjögren Pekare. Anders Sjögren Skapa ett program som byter plats på två heltal Pekare.
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. Drewes, Inst. f. datavetenskap1 Föreläsning 1: Inledning administrativt o dyl kursens mål varför programspråksteori? språkkategorier användningsområden.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
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 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.
INTRODUKTION TILL PROGRAMMERING
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.
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.
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.
Anders Sjögren Enkelt program med funktion /* two_func.c - a program that uses two functions in one file */ /* from Stephen Prata C Primer Plus ISBN
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 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
Anders Sjögren Funktioner något in och något annat ut.
TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder.
TDP004 Objektorienterad Programmering Fö 5 Minneshantering.
IT Fördjupning Jon Wide
Presentationens avskrift:

F. Drewes, Inst. f. datavetenskap1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring

F. Drewes, Inst. f. datavetenskap2 Underprogram till skillnad från procedurer returnerar funktioner ett värde definitionen består av funktions-/procedurhuvud och body 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).

F. Drewes, Inst. f. datavetenskap3 Räckvidd både underprogram och block skapar lokala omgivningar för att begränsa räckvidden av lokala identifierare en identifierare är icke-lokal i en programdel om den är synlig men inte deklarerad i denna del Räckvidden av en identifierare (eng. scope) är den del av programmet i vilken identifieraren är synlig (dvs i vilken den kan användas).

F. Drewes, Inst. f. datavetenskap4 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 föräldern U 1 av U 0 3.i den statiska föräldern U 2 av U 1 4.osv tills den närmaste deklarationen har hittats Vilken variabel namnet x refererar till framgår direkt av programtextens hierarkisk struktur program P; var x: integer; procedure A; var x: real; … x … end A; procedure B; … x … end B end P

F. Drewes, Inst. f. datavetenskap5 Dynamisk räckvidd Vid dynamisk räckvidd letas en variabel i de dynamiska föräldrarna av 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

F. Drewes, Inst. f. datavetenskap6 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

F. Drewes, Inst. f. datavetenskap7 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  fysikalisk överföringdata 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.

F. Drewes, Inst. f. datavetenskap8 Parameteröverföringsmodeller (2) Värdeparameter (pass-by-value)  aktuella parameterns värde initialiserar den formella (  in-modus)  vanligtvis fysikalisk överföring Resultatparameter (pass-by-result)  aktuella parametern (som måste vara en variabel) uppda- teras med den formella parameterns värde (  ut-modus)  vanligtvis fysikalisk överföring  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)

F. Drewes, Inst. f. datavetenskap9 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 »aliaser 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)