DOC PREVIEW
UT Dallas CS 4337 - #Sebesta ch05 name bind scope - handout

This preview shows page 1-2-3-19-20-38-39-40 out of 40 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 40 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 40 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 40 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 40 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 40 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 40 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 40 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 40 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 40 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Chapter 5IntroductionNamesNames (continued)Slide 5Slide 6Slide 7VariablesAttribute of VariableVariables Attributes (continued)The Concept of BindingPossible Binding TimesStatic and Dynamic BindingType BindingExplicit/Implicit Type-DeclarationExplicit/Implicit Declaration (continued)Dynamic Type BindingVariable Attributes (continued)Categories of Variables by LifetimesSlide 20Slide 21Slide 2210/03 => to continueVariable Attributes: ScopeStatic ScopeBlocksDeclaration OrderThe LET ConstructThe LET Construct (continued)Declaration Order (continued)Global ScopeGlobal Scope (continued)Slide 33Evaluation of Static ScopingDynamic ScopeScope ExampleSlide 37Scope and LifetimeReferencing EnvironmentsNamed ConstantsChapter 5Names, Bindings, and ScopesCopyright © 2012 Addison-Wesley. All rights reserved. 1-2Introduction•Imperative languages are abstractions of von Neumann architecture–Memory–Processor•Variables are characterized by attributes–To design a type, you must consider scope, lifetime, type checking, initialization, and type compatibilityCopyright © 2012 Addison-Wesley. All rights reserved. 1-3Names•Design issues for names:–Are names case sensitive?–Are special words reserved words or keywords?Copyright © 2012 Addison-Wesley. All rights reserved. 1-4Names (continued)•Design issues for names:–Are names case sensitive?–Are special words reserved words or keywords?•Length–If too short, they cannot be connotative–Language examples:•FORTRAN 95: maximum of 31•C99: no limit but only the first 63 are significant; also, external names are limited to a maximum of 31•C#, Ada, and Java: no limit, and all are significant•C++: no limit, but implementers often impose oneCopyright © 2012 Addison-Wesley. All rights reserved. 1-5Names (continued)•Special characters–PHP: all variable names must begin with dollar signs–Perl: all variable names begin with special characters, which specify the variable’s type–Ruby: variable names that begin with @ are instance variables; those that begin with @@ are class variablesNames (continued)•Case sensitivity–Disadvantage: readability (names that look alike are different)•Names in the C-based languages are case sensitive•Names in others are not•Worse in C++, Java, and C# because predefined names are mixed case (e.g. IndexOutOfBoundsException)Copyright © 2012 Addison-Wesley. All rights reserved. 1-6Copyright © 2012 Addison-Wesley. All rights reserved. 1-7Names (continued)•Special words–An aid to readability; used to delimit or separate statement clauses•A keyword is a word that is special only in certain contexts, e.g., in Fortran–Real VarName (Real is a data type followed with a name, therefore Real is a keyword)–Real = 3.4 (Real is a variable) – A reserved word is a special word that cannot be used as a user-defined name–Potential problem with reserved words: If there are too many, many collisions occur (e.g., COBOL has 300 reserved words!)Copyright © 2012 Addison-Wesley. All rights reserved. 1-8Variables•A variable is an abstraction of a memory cell•Variables can be characterized as a six-tuple of attributes:–Name–Address–Value–Type–Lifetime–ScopeCopyright © 2012 Addison-Wesley. All rights reserved. 1-9Attribute of Variable•Name - not all variables have them•Address - the memory address with which it is associated –A variable may have different addresses at different times during execution–A variable may have different addresses at different places in a program–If two variable names can be used to access the same memory location, they are called aliases–Aliases are created via pointers, reference variables, C and C++ unions–Aliases are harmful to readability (program readers must remember all of them)Copyright © 2012 Addison-Wesley. All rights reserved. 1-10Variables Attributes (continued)•Type –Determines the range of values of variables and the set of operations that are defined for values of that type; in the case of floating point, type also determines the precision•Value –the contents of the location with which the variable is associated l-value of a variable is its address (location) r-value of a variable is its value •Abstract memory cell -the physical cell or collection of cells associated with a variable -Note: variable is an abstraction of a memory cell-Copyright © 2012 Addison-Wesley. All rights reserved. 1-11The Concept of Binding•binding is an association between an entity and an attribute, such as between a variable and its type or value, or between an operation and a symbol•binding time is the time at which a binding takes place.Copyright © 2012 Addison-Wesley. All rights reserved. 1-12Possible Binding Times•Language design or implementation time -- bind operator symbols to operations -- bind floating point type to a representation•Compile time -- bind a variable to a type in C or Java•Load time -- bind a C or C++ static variable to a memory cell•Runtime -- bind a non-static local variable to a memory cellCopyright © 2012 Addison-Wesley. All rights reserved. 1-13Static and Dynamic Binding•A binding is static if it first occurs before run time and remains unchanged throughout program execution.•A binding is dynamic if it first occurs during execution or can change during execution of the programCopyright © 2012 Addison-Wesley. All rights reserved. 1-14Type Binding•How is a type specified?•When does the binding take place?•If static, the type may be specified by either an explicit or an implicit declarationCopyright © 2012 Addison-Wesley. All rights reserved. 1-15Explicit/Implicit Type-Declaration•Explicit declaration is a program statement used for declaring the types of variables•Implicit declaration is a default mechanism for specifying types of variables through default conventions, rather than declaration statements–Fortran, BASIC, Perl, Ruby, JavaScript, and PHP provide implicit declarations (Fortran has both explicit and implicit)•Advantage: writability (a minor convenience)•Disadvantage: reliability (less trouble with Perl)Explicit/Implicit Declaration (continued)•Some languages use type inferencing to determine types of variables (context)–C# - a variable can be declared with var and an initial value. The initial value sets the type.–Visual BASIC 9.0+, ML, Haskell, F#, and Go use type inferencing. The context of the appearance of a variable determines its


View Full Document

UT Dallas CS 4337 - #Sebesta ch05 name bind scope - handout

Download #Sebesta ch05 name bind scope - handout
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view #Sebesta ch05 name bind scope - handout and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view #Sebesta ch05 name bind scope - handout 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?