Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avLina Isaksson
1
2002-11-26F. Drewes, Inst. f. datavetenskap1 Föreläsning 8: Underprogram Underprogram Räckvidd Parameteröverföring
2
2002-11-26F. 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).
3
2002-11-26F. 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).
4
2002-11-26F. 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
5
2002-11-26F. 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
6
2002-11-26F. 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
7
2002-11-26F. 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.
8
2002-11-26F. 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)
9
2002-11-26F. 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)
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.