csci-ga.3033.003 scripting languages - cornell university

22
CS 5142 Cornell University 9/18/13 1 CSCI-GA.3033.003 Scripting Languages 9/25/2013 Prelim 1 Review

Upload: others

Post on 09-Feb-2022

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 9/18/13

1

CSCI-GA.3033.003 Scripting Languages

9/25/2013 Prelim 1 Review

Page 2: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 9/18/13

2

Outline

•  Associativity and Precedence •  Typing •  Properties •  Callbacks

Page 3: CSCI-GA.3033.003 Scripting Languages - Cornell University

(…) Subexpression; Call; Indexing ^ 2 L Exponentiation +, - 1 Identity, negation *, / 2 L Multiplicative \ 2 L Integer division Mod 2 L Modulus +, - 2 L Additive; String concatenation & 2 L String concatenation <<, >> 2 L Bit shift =, <>, <, <=, >, >=, Is 2 L Comparison Not 1 Negation And, Or, Xor, Eqv, Imp 2 L Logic (not all same precedence) [Set] … = … 2 Assignment statement

CS 5142 Cornell University 8/30/13

3

Operator Characterization • Concepts

• Arity: • 1 = unary • 2 = binary

• Associativity: • L = left

• R = right

• Precedence: • from high

to low

Page 4: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 8/30/13

4

• Concepts

Arity, Precedence, Associativity

Arity Number of operands

-2 2 - 2

unary binary

Precedence Binding strength

2+2*2 (2+2)*2 2+(2*2)

* has higher precedence than +

Associativity Grouping direction

2/2/2 (2/2)/2 2/(2/2)

/ is left-associative

• Precedence and associativity in programming usually follows the conventions from math.

Page 5: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 9/18/13

5

Outline

•  Associativity and Precedence •  Typing •  Properties •  Callbacks

Page 6: CSCI-GA.3033.003 Scripting Languages - Cornell University

Typing •  Strong typing = no implicit type conversion •  Weak typing = implicit type conversion •  Static typing = check for type errors at compile time •  Dynamic typing = check for type errors at run time •  Gradual typing = checks for some errors at compiler

time, some at run time. Directed by which parts of the program have explicit types. (Ex. option explicit in VBA)

CS 5142 Cornell University 9/18/13

6

Page 7: CSCI-GA.3033.003 Scripting Languages - Cornell University

Typing •  Explicit typing = declare the type in your code

–  Java

•  Implicit typing = compiler infers the type –  ML language, –  VBA type declaration characters $ means string

CS 5142 Cornell University 9/18/13

7

Page 8: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 9/18/13

8

Weak/Strong, Static/Dynamic Typing Concepts

ML Java

JavaScript PHP

Scheme

Perl assembler

C

Static typing (compile-time checks)

Strong typing (explicit conversions)

Weak typing (implicit conversions)

Dynamic typing (runtime checks)

VBA

Page 9: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 9/18/13

9

Outline

•  Associativity and Precedence •  Typing •  Properties •  Callbacks

Page 10: CSCI-GA.3033.003 Scripting Languages - Cornell University

Properties

•  Read and written like fields (dot syntax) •  Accesses are translated to set/get

methods •  Have easy-to-read syntax, but can

implement complex functionality •  Can be indexed. Seems like an array,

but associates a behavior with each read/write

CS 5142 Cornell University 9/18/13

10

Page 11: CSCI-GA.3033.003 Scripting Languages - Cornell University

Properties Public Function GetLength() As Double GetLength = Sqr(X ^ 2 + Y ^ 2) End Function Public Sub SetLength(NewLen As Double) OldLen = GetLength If OldLen = 0 Then X = NewLen Y = 0 Else X = X * NewLen / OldLen Y = Y * NewLen / OldLen End If End Sub

CS 5142 Cornell University 9/18/13

11

Page 12: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 08/04/13

12

Properties vs. Fields •  Both: dot notation look&feel

–  Writable: a1.color = "red” –  Readable: Debug.print a1.color

•  Properties only: active (associated behavior) –  E.g., update graphical representation

•  Properties only: may be indexed, like arrays –  cake.ingredient("topping") = a1

•  Other languages with properties: –  E.g., PHP, Delphi, C#

• Concepts

Page 13: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 08/04/13

13

Common Uses of Properties • Concepts

Simple (field-like) •  Visual update •  Invariant checking

–  Filter illegal values –  Read-only –  Copy on write

•  Logging

Indexed (array-like) •  Collections

–  Resizable array –  Hash map

•  Persistence –  File –  Database –  Cookie

Page 14: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 08/04/13

14

Collections • VBA

• Dim col As Slides • Set col = ActivePresentation.Slides • Dim i As Integer • Debug.Print "for-loop, indexed property access" • For i = 1 To col.Count •  Debug.Print col.Item(i).Name • Next i • Debug.Print "for-loop, default property access" • For i = 1 To col.Count •  Debug.Print col(i).Name • Next i • Dim s As Slide • Debug.Print "for-each loop" • For Each s In col •  Debug.Print s.Name • Next s

Page 15: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 08/04/13

15

Powerpoint Object Model • Reference

•  The complete object model is much larger

•  See Visual Basic help in editor

•  Also in MSDN library: → Office development → Microsoft Office 2003 → Office 2003 → VBA reference → Powerpoint help → Object model

• Application

•  CommandBars •  CommandBar

•  DocumentWindows •  Selection

•  ShapeRange > •  Presentations

•  Presentation > • ActiveWindow

•  Selection •  SlideRange

•  Shapes •  Shape

• ActivePresentation •  Slides

•  Slide •  Shapes >

Page 16: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 08/04/13

16

Object Model

•  Object-oriented API for embedded scripts

•  Other examples: –  Object models for

other Microsoft apps –  DOM = document

object model for XML

• Concepts

• Application

•  CommandBars •  CommandBar

•  DocumentWindows

•  Selection

•  ShapeRange >

•  Presentations

•  Presentation >

• ActiveWindow

•  Selection •  SlideRange

•  Shapes

•  Shape

• ActivePresentation

•  Slides

•  Slide

•  Shapes >

• Top-level “creatable objects”

• “has-a” / “contains” relationship

• “>”: more objects (not shown)

• Gray box: simple object

• White box: collection

Page 17: CSCI-GA.3033.003 Scripting Languages - Cornell University

Object Model Usage

CS 5142 Cornell University 9/18/13

17

Dim S As PowerPoint.Slide Set S = ActivePresentation.Slides( _ ActivePresentation.Slides.Count)

Page 18: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 9/18/13

18

Outline

•  Associativity and Precedence •  Typing •  Properties •  Callbacks

Page 19: CSCI-GA.3033.003 Scripting Languages - Cornell University

Callbacks

CS 5142 Cornell University 9/18/13

19

•  A callback is a function or block of code that is passed to some other code as a parameter.

•  It is expected that the callee will “call back” to the called at the appropriate time

Page 20: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 08/06/12

20

Callback Mechanisms VBA form Subroutine in form with mangled name VBA class WithEvent / RaiseEvent statements

Java Pass object on which to call method Perl, Python, JavaScript Pass anonymous function (lambda)

C, C++ Pass function pointer C++ Pass object on which to call “()” operator

SmallTalk Pass code block PHP Pass name of function as string

• Concepts

Page 21: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 08/06/12

21

Call-backs • VBA code • Interpreter • User

• frmLemonStar.Show() • wait for user input

• edit text box

• click button

• cmdPaint_Click()

• return from handler

• return from “Show”

• Concepts

Page 22: CSCI-GA.3033.003 Scripting Languages - Cornell University

CS 5142 Cornell University 9/18/13

22

Last Slide •  Good luck! •  Bring a pencil or pen •  Closed book. No notes, phones, etc.

Administrative