书签 分享 收藏 举报 版权申诉 / 43
上传文档赚钱

类型程序设计语言概念(ConceptsofProgramming-Languages)-英文-第10版第课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5202260
  • 上传时间:2023-02-16
  • 格式:PPT
  • 页数:43
  • 大小:730KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《程序设计语言概念(ConceptsofProgramming-Languages)-英文-第10版第课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    程序设计语言 概念 ConceptsofProgramming Languages 英文 10 课件
    资源描述:

    1、Chapter 5Chapter 5Names,Bindings,and ScopesCopyright 2012 Addison-Wesley.All rights reserved.1-2Chapter 5 TopicsIntroduction NamesVariablesThe Concept of BindingScope Scope and LifetimeReferencing EnvironmentsNamed ConstantsCopyright 2012 Addison-Wesley.All rights reserved.1-3Introduction Imperative

    2、 languages are abstractions of von Neumann architecture Memory Processor Variables are characterized by attributes To design a type,must consider scope,lifetime,type checking,initialization,and type compatibilityCopyright 2012 Addison-Wesley.All rights reserved.1-4Names Design issues for names:Are n

    3、ames case sensitive?Are special words reserved words or keywords?Copyright 2012 Addison-Wesley.All rights reserved.1-5Names(continued)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 l

    4、imited 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-6Names(continued)Special characters PHP:all variable names must begin with dollar signs Perl:all variable names begin with speci

    5、al characters,which specify the variables type Ruby:variable names that begin with are instance variables;those that begin with are class variablesCopyright 2012 Addison-Wesley.All rights reserved.1-7Names(continued)Case sensitivity Disadvantage:readability(names that look alike are different)Names

    6、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-8Names(continued)Special words An aid to readability;used to delimit or separate state

    7、ment 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

    8、 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-9Variables A variable is an abstraction of a memory cell Variables can be characterized as a sextuple of attributes:Name Address Value Type Lifetime Scop

    9、eCopyright 2012 Addison-Wesley.All rights reserved.1-10Variables Attributes 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

    10、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

    11、.1-11Variables 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 precisionValue-the contents of the location with which the variable is associated -The l-valu

    12、e of a variable is its address -The r-value of a variable is its valueAbstract memory cell-the physical cell or collection of cells associated with a variable Copyright 2012 Addison-Wesley.All rights reserved.1-12The Concept of Binding A binding is an association between an entity and an attribute,s

    13、uch as between a variable and its type or value,or between an operation and a symbolBinding time is the time at which a binding takes place.Copyright 2012 Addison-Wesley.All rights reserved.1-13Possible Binding Times Language design time-bind operator symbols to operations Language implementation ti

    14、me-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 nonstatic local variable to a memory cellCopyright 2012 Addison-Wesley.All rights reserved.1-14Static and Dynamic Binding A bind

    15、ing 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-15Type Binding How is a type specified?When do

    16、es 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-16Explicit/Implicit Declaration An explicit declaration is a program statement used for declaring the types of variables An implicit decla

    17、ration 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:reliab

    18、ility(less trouble with Perl)Copyright 2012 Addison-Wesley.All rights reserved.1-17Explicit/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 BA

    19、SIC 9.0+,ML,Haskell,F#,and Go use type inferencing.The context of the appearance of a variable determines its typeCopyright 2012 Addison-Wesley.All rights reserved.1-18Dynamic Type Binding Dynamic Type Binding(JavaScript,Python,Ruby,PHP,and C#(limited)Specified through an assignment statement e.g.,J

    20、avaScript list=2,4.33,6,8;list=17.3;Advantage:flexibility(generic program units)Disadvantages:High cost(dynamic type checking and interpretation)Type error detection by the compiler is difficultCopyright 2012 Addison-Wesley.All rights reserved.1-19Variable Attributes(continued)Storage Bindings&Lifet

    21、ime Allocation-getting a cell from some pool of available cells Deallocation-putting a cell back into the pool The lifetime of a variable is the time during which it is bound to a particular memory cellCopyright 2012 Addison-Wesley.All rights reserved.1-20Categories of Variables by Lifetimes Static-

    22、bound to memory cells before execution begins and remains bound to the same memory cell throughout execution,e.g.,C and C+static variables in functions Advantages:efficiency (direct addressing),history-sensitive subprogram support Disadvantage:lack of flexibility (no recursion)Copyright 2012 Addison

    23、-Wesley.All rights reserved.1-21Categories of Variables by Lifetimes Stack-dynamic-Storage bindings are created for variables when their declaration statements are elaborated.(A declaration is elaborated when the executable code associated with it is executed)If scalar,all attributes except address

    24、are statically bound local variables in C subprograms(not declared static)and Java methods Advantage:allows recursion;conserves storage Disadvantages:Overhead of allocation and deallocation Subprograms cannot be history sensitive Inefficient references(indirect addressing)Copyright 2012 Addison-Wesl

    25、ey.All rights reserved.1-22Categories of Variables by LifetimesExplicit heap-dynamic-Allocated and deallocated by explicit directives,specified by the programmer,which take effect during execution Referenced only through pointers or references,e.g.dynamic objects in C+(via new and delete),all object

    26、s in Java Advantage:provides for dynamic storage management Disadvantage:inefficient and unreliableCopyright 2012 Addison-Wesley.All rights reserved.1-23Categories of Variables by LifetimesImplicit heap-dynamic-Allocation and deallocation caused by assignment statements all variables in APL;all stri

    27、ngs and arrays in Perl,JavaScript,and PHP Advantage:flexibility(generic code)Disadvantages:Inefficient,because all attributes are dynamic Loss of error detectionCopyright 2012 Addison-Wesley.All rights reserved.1-24Variable Attributes:Scope The scope of a variable is the range of statements over whi

    28、ch it is visible The local variables of a program unit are those that are declared in that unit The nonlocal variables of a program unit are those that are visible in the unit but not declared thereGlobal variables are a special category of nonlocal variables The scope rules of a language determine

    29、how references to names are associated with variablesCopyright 2012 Addison-Wesley.All rights reserved.1-25Static Scope Based on program text To connect a name reference to a variable,you(or the compiler)must find the declarationSearch process:search declarations,first locally,then in increasingly l

    30、arger enclosing scopes,until one is found for the given name Enclosing static scopes(to a specific scope)are called its static ancestors;the nearest static ancestor is called a static parent Some languages allow nested subprogram definitions,which create nested static scopes(e.g.,Ada,JavaScript,Comm

    31、on LISP,Scheme,Fortran 2003+,F#,and Python)Copyright 2012 Addison-Wesley.All rights reserved.1-26Scope(continued)Variables can be hidden from a unit by having a closer variable with the same name Ada allows access to these hidden variables E.g.,unit.nameCopyright 2012 Addison-Wesley.All rights reser

    32、ved.1-27Blocks A method of creating static scopes inside program units-from ALGOL 60 Example in C:void sub()int count;while(.)int count;count+;.-Note:legal in C and C+,but not in Java and C#-too error-proneCopyright 2012 Addison-Wesley.All rights reserved.1-28Declaration Order C99,C+,Java,and C#allo

    33、w variable declarations to appear anywhere a statement can appear In C99,C+,and Java,the scope of all local variables is from the declaration to the end of the block In C#,the scope of any variable declared in a block is the whole block,regardless of the position of the declaration in the block Howe

    34、ver,a variable still must be declared before it can be usedCopyright 2012 Addison-Wesley.All rights reserved.1-29The LET Construct Most functional languages include some form of let construct A let construct has two parts The first part binds names to values The second part uses the names defined in

    35、 the first part In Scheme:(LET(name1 expression1)(namen expressionn)Copyright 2012 Addison-Wesley.All rights reserved.1-30The LET Construct(continued)In ML:let val name1=expression1 val namen=expressionnin expressionend;In F#:First part:let left_side=expression(left_side is either a name or a tuple

    36、pattern)All that follows is the second partCopyright 2012 Addison-Wesley.All rights reserved.1-31Declaration Order(continued)In C+,Java,and C#,variables can be declared in for statements The scope of such variables is restricted to the for constructCopyright 2012 Addison-Wesley.All rights reserved.1

    37、-32Global Scope C,C+,PHP,and Python support a program structure that consists of a sequence of function definitions in a file These languages allow variable declarations to appear outside function definitions C and C+have both declarations(just attributes)and definitions(attributes and storage)A dec

    38、laration outside a function definition specifies that it is defined in another fileCopyright 2012 Addison-Wesley.All rights reserved.1-33Global Scope(continued)PHP Programs are embedded in HTML markup documents,in any number of fragments,some statements and some function definitions The scope of a v

    39、ariable(implicitly)declared in a function is local to the function The scope of a variable implicitly declared outside functions is from the declaration to the end of the program,but skips over any intervening functions Global variables can be accessed in a function through the$GLOBALS array or by d

    40、eclaring it globalCopyright 2012 Addison-Wesley.All rights reserved.1-34Global Scope(continued)Python A global variable can be referenced in functions,but can be assigned in a function only if it has been declared to be global in the functionCopyright 2012 Addison-Wesley.All rights reserved.1-35Eval

    41、uation of Static Scoping Works well in many situations Problems:In most cases,too much access is possible As a program evolves,the initial structure is destroyed and local variables often become global;subprograms also gravitate toward become global,rather than nestedCopyright 2012 Addison-Wesley.Al

    42、l rights reserved.1-36Dynamic Scope Based on calling sequences of program units,not their textual layout(temporal versus spatial)References to variables are connected to declarations by searching back through the chain of subprogram calls that forced execution to this pointCopyright 2012 Addison-Wes

    43、ley.All rights reserved.1-37Scope Example function big()function sub1()var x=7;function sub2()var y=x;var x=3;Static scoping Reference to x in sub2 is to bigs x Dynamic scoping Reference to x in sub2 is to sub1s x big calls sub1sub1 calls sub2sub2 uses xCopyright 2012 Addison-Wesley.All rights reser

    44、ved.1-38Scope Example Evaluation of Dynamic Scoping:Advantage:convenienceDisadvantages:While a subprogram is executing,its variables are visible to all subprograms it calls Impossible to statically type check3.Poor readability-it is not possible to statically determine the type of a variableCopyrigh

    45、t 2012 Addison-Wesley.All rights reserved.1-39Scope and Lifetime Scope and lifetime are sometimes closely related,but are different concepts Consider a static variable in a C or C+functionCopyright 2012 Addison-Wesley.All rights reserved.1-40Referencing Environments The referencing environment of a

    46、statement is the collection of all names that are visible in the statement In a static-scoped language,it is the local variables plus all of the visible variables in all of the enclosing scopes A subprogram is active if its execution has begun but has not yet terminated In a dynamic-scoped language,

    47、the referencing environment is the local variables plus all visible variables in all active subprogramsCopyright 2012 Addison-Wesley.All rights reserved.1-41Named Constants A named constant is a variable that is bound to a value only when it is bound to storage Advantages:readability and modifiabili

    48、ty Used to parameterize programs The binding of values to named constants can be either static(called manifest constants)or dynamic Languages:Ada,C+,and Java:expressions of any kind,dynamically bound C#has two kinds,readonly and const -the values of const named constants are bound at compile time -The values of readonly named constants are dynamically boundp 经常不断地学习,你就什么都知道。你知道得越多,你就越有力量p Study Constantly,And You Will Know Everything.The More You Know,The More Powerful You Will Be写在最后谢谢你的到来学习并没有结束,希望大家继续努力Learning Is Not Over.I Hope You Will Continue To Work Hard演讲人:XXXXXX 时 间:XX年XX月XX日

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:程序设计语言概念(ConceptsofProgramming-Languages)-英文-第10版第课件.ppt
    链接地址:https://www.163wenku.com/p-5202260.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库