当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

南京大学:《计算机程序的构造和解释 Structure and Interpretation of Computer Programs》课程教学资源(PPT课件讲稿)04-Environment Diagrams

资源类别:文库,文档格式:PPTX,文档页数:20,文件大小:868.37KB,团购合买
点击下载完整版文档(PPTX)

Environment Diagrams

Environment Diagrams

What are Environment Diagrams? A visual tool to keep track of bindings state of a computer program In this class,we use Python as our primary language o The diagrams we teach can be applied to similar languages

What are Environment Diagrams? ● A visual tool to keep track of bindings & state of a computer program ● In this class, we use Python as our primary language ○ The diagrams we teach can be applied to similar languages

Why do we use Environment Diagrams? Environment Diagrams are conceptual understand why programs work the way they do confidently predict how a program will behave Environment Diagrams are helpful for debugging When you're really stuck, diagramming code staring at lines of code Environment Diagrams will be used in future courses CS 61C (Machine Structures) CS 164 (Programming Languages and Compilers)

Why do we use Environment Diagrams? • Environment Diagrams are conceptual • understand why programs work the way they do • confidently predict how a program will behave • Environment Diagrams are helpful for debugging • When you're really stuck, diagramming code > staring at lines of code • Environment Diagrams will be used in future courses • CS 61C (Machine Structures) • CS 164 (Programming Languages and Compilers)

What do we've seen so far Assignment Statements Global frame X=1 X 3 X =XX+X Def Statements Global frame function def square(x): square(x)】 square return xx square Call Expressions X 4 square(4) Frame Return 16 value

What do we've seen so far Assignment Statements x = 1 x = x + x + x Def Statements def square(x): return x * x Call Expressions square(4) Frame

Terminology:Frames Global frame function square(x) A frame keeps track of varia square Every call expression has a corr square Global,a.k.a.the global fr 4 arting frame. It doesn't correspond to a speci Return 1. 16 Parent frames value The parent of a function is the frame in which it was defined. If you can't find a variable in the current frame,you check it's parent,and so on.If you can't find the variable,NameError Demo

Terminology: Frames A frame keeps track of variable-to-value bindings. ● Every call expression has a corresponding frame. Global, a.k.a. the global frame, is the starting frame. ● It doesn't correspond to a specific call expression. Parent frames ● The parent of a function is the frame in which it was defined. ● If you can't find a variable in the current frame, you check it's parent, and so on. If you can't find the variable, NameError Demo

Check Your Understanding Draw the environment diagram def square(x): return xX def sum_of_squares(x,y): return square(x)+square(y) sum_of_squares(3,4)

Draw the environment diagram def square(x): return x * x def sum_of_squares(x, y): return square(x) + square(y) sum_of_squares(3, 4) Check Your Understanding

Review:Evaluation Order Demo Remember to evaluate the operator,then the operand(s),then apply the operator onto the operand(s). def add_one(x): Evaluate the operator.A Evaluate the operand.. y=X+1 function value is returned return y Returns 10 Returns 100 def square(x): Evaluate the operator.A Evaluate the operand.Now we have evaluate another return xx function value is returned expression. What will the environment diagram look like?(When are frames created?) The environment diagram should reflect Python's evaluation

square(add_one(9)) Review: Evaluation Order def add_one(x): y = x + 1 return y def square(x): return x * x Remember to evaluate the operator, then the operand(s), then apply the operator onto the operand(s). What will the environment diagram look like? (When are frames created?) The environment diagram should reflect Python’s evaluation. Evaluate the operator. A function value is returned Evaluate the operand. Now we have evaluate another expression. Evaluate the operator. A function value is returned Evaluate the operand.. Returns 10 Returns 100 Demo

Variable Lookup

Variable Lookup

Local Names Variable Lookup: Lookup name in the current frame 。 Lookup name in parent frame,its parent frame,etc.. Stop at the global frame If not found,an error is thrown Global frame >func f(x.y)[parent=Global] An error is thrown func g(z)[parent=Global] g f1:f【parent=Global] def f(x,y): Name"x"is not found,again ×5 y10 return g(x) Name"x"is not found 2 8 parent=Global] z5 def g(z): Important:There was no lookup done in f1 since return z x the parent of f2 was Global What happens here? result f(5,10)

Where do we look next? Local Names Variable Lookup: • Lookup name in the current frame • Lookup name in parent frame, its parent frame, etc.. • Stop at the global frame • If not found, an error is thrown def f(x, y): return g(x) def g(z): return z + x result = f(5, 10) Name “x” is not found Name “x” is not found, again An error is thrown What happens here? Important: There was no lookup done in f1 since the parent of f2 was Global

Demo Evaluation vs Apply def a_plus_bc(a,b,c): I II I >>> a-p1us_bc(2,3,4)#2+3*4 14 Apply operator How many frames are a_plus_bc function to created? n operand 4,3,81. In what order? a_plus_bc(square(2),3,square(square(3))) Apply operator Apply operator square function to Apply operator square function to operand 2. square function to operand 9. operand 3

Evaluation vs Apply def a_plus_bc(a, b, c): """ >>> a_plus_bc(2, 3, 4) # 2 + 3 * 4 14 """ bc = b * c a_plus_bc(square( return a 2+ ), bc 3, square(square(3))) Demo How many frames are created? In what order? Apply operator square function to operand 2. Apply operator square function to operand 3. Apply operator square function to operand 9. Apply operator a_plus_bc function to operand 4, 3, 81

点击下载完整版文档(PPTX)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共20页,试读已结束,阅读完整版请下载
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有