lecture 6 specifications testing
play

Lecture 6: Specifications & Testing (Sections 4.9, 9.5) CS 1110 - PowerPoint PPT Presentation

http://www.cs.cornell.edu/courses/cs1110/2020sp Lecture 6: Specifications & Testing (Sections 4.9, 9.5) CS 1110 Introduction to Computing Using Python Orange text indicates updates made after lecture [E. Andersen, A. Bracy, D. Fan, D.


  1. http://www.cs.cornell.edu/courses/cs1110/2020sp Lecture 6: Specifications & Testing (Sections 4.9, 9.5) CS 1110 Introduction to Computing Using Python Orange text indicates updates made after lecture [E. Andersen, A. Bracy, D. Fan, D. Gries, L. Lee, S. Marschner, C. Van Loan, W. White]

  2. No-laptop Announcements Announcements front zone on your left ok • No laptop use stage right (your left) • We will use clickers, but not for credit. Therefore no need to register your clicker. • To access video of lecture, log in using NetID and password “through Canvas”, but we don’t use Canvas otherwise. Course website is https://www.cs.cornell.edu/courses/cs1110/2020sp/ • Before next lecture, read Chapter 15 2

  3. More announcements More announcements • Download code from lecture and experiment with it— run, modify, run again, … • Assignment 1 will be posted today or Friday  Have over a week to do it  Can choose to work with one partner and together submit one assignment  Can revise and resubmit after getting grading feedback • Starting next week: optional 1 ‐ on ‐ 1 with a staff member to help just you with course material. Sign up for a slot on CMS under “SPECIAL: one ‐ on ‐ ones“. 3

  4. Continue from previous lecture: String print vs return

  5. String: Text as a Value • String are quoted characters Type : str  'abc d' (Python prefers)  "abc d" (most languages) • How to write quotes in quotes? Char Meaning \' single quote  Delineate with “other quote” \" double quote  Example : " ' " or ' " ' \n new line  What if need both " and ' ? \t tab • Solution : escape characters \\ backslash  Format: \ followed by letter (character)  Special or invisible chars 5

  6. Not All Functions Need a Return Not All Functions Need a Return def greet(n): """Prints a greeting to the name n Parameter n: name to greet Precondition: n is a string""" Displays these print('Hello '+n+'!') strings on the print('How are you?') screen No assignments or return (returns None ) 6

  7. vs. vs. print return • Displays a value on screen • Sends a value from a function call frame back to the caller • Used primarily for testing • Important for calculations • Not useful for calculations • Does not display anything def print_plus(n): def return_plus(n): ? print(n+1) return n+1 >>> print_plus(2) >>> return_plus(2) 3 3 >>> >>> 7

  8. unexpected printing courtesy of: Python Interactive Mode • executes both statements and expressions • if expression: 1. evaluates 2. prints value (if one exists) evaluates (performs addition) >>> 2+2 prints value (4) 4 evaluates (makes function call, >>> return_plus(2) gets return value) prints value (3) 3 >>> 8

  9. return_plus in action return_plus 1 def return_plus(n): call frame return n+1 2 n RETURN 3 Python Interactive Mode 1. Evaluates : makes >>> return_plus(2) function call, evaluates to 3 return value >>> 2. Python interactive mode prints that value 9

  10. print_plus in action print_plus 1 def print_plus(n): call frame print(n+1) 2 n RETURN NONE Python Interactive Mode 1. Evaluates : makes >>> print_plus(2) function call, evaluates to 3 return value ( NO NONE NE ) >>> 2. does not print value b/c it’s NO NONE NE 10

  11. hybrid_plus in action print_plus 1 2 def hybrid_plus(n): call frame print(n) 2 n return n+1 RETURN 3 Python Interactive Mode 1. Evaluates : makes >>> print_plus(2) function call, evaluates to 2 return value 3 2. Python interactive >>> mode prints that returned value 11

  12. Exercise 1 Exercise 1 Module Text Python Interactive Mode # module.py >>> import module >>> print(module.x) def foo(x): … What does Python Code shown in x = x+3 give me? lecture was 1+2. x = 3*x Some students were confused because A: 9 the argument x B: 10 wasn’t used. It C: 1 wasn’t an error, but D: None we changed the E: Error code now to avoid any distraction. 13

  13. Exercise 1, Solution Exercise 1, Solution Module Text Python Interactive Mode # module.py >>> import module >>> print(module.x) def foo(x): … What does Python Code shown in x = x+3 give me? lecture was 1+2. x = 3*x Some students were confused because A: 9 the argument x B: 10 wasn’t used. It C: 1 wasn’t an error, but D: None we changed the E: Error CORRECT code now to avoid any distraction. 14

  14. Exercise 2 Exercise 2 Module Text Python Interactive Mode # module.py >>> import module >>> print(module.y) def foo(x): … What does Python Code shown in x = x+3 give me? lecture was 1+2. x = 3*x Some students were confused because A: 9 the argument x B: 10 y = foo(0) wasn’t used. It C: 1 wasn’t an error, but D: None we changed the E: Error code now to avoid any distraction. 15

  15. Exercise 2, Exercise 2, Solution Solution Module Text Python Interactive Mode # module.py >>> import module >>> print(module.y) def foo(x): … What does Python Code shown in x = x+3 give me? lecture was 1+2. x = 3*x Some students were confused because A: 9 the argument x B: 10 y = foo(0) wasn’t used. It C: 1 wasn’t an error, but D: None CORRECT we changed the E: Error code now to avoid any distraction. 16

  16. Exercise 3 Exercise 3 Module Text Python Interactive Mode # module.py >>> import module >>> module.y def foo(x): … What does Python Code shown in x = x+3 give me? lecture was 1+2. x = 3*x Some students were confused because A: 9 return x+1 the argument x B: 10 wasn’t used. It C: 1 wasn’t an error, but y = foo(0) D: None we changed the E: Error code now to avoid any distraction. 17

  17. Exercise 3, Exercise 3, Solution Solution Module Text Python Interactive Mode # module.py >>> import module >>> module.y def foo(x): … What does Python Code shown in x = x+3 give me? lecture was 1+2. x = 3*x Some students were confused because A: 9 return x+1 the argument x B: 10 CORRECT wasn’t used. It C: 1 wasn’t an error, but y = foo(0) D: None we changed the E: Error code now to avoid any distraction. 18

  18. Exercise 4 Exercise 4 Function Definition Function Call def foo(a,b): >>> x = 2 >>> foo(3,4) x = a 1 >>> x What does Python y = b 2 … give me? return x*y+y 3 A: 2 B: 3 C: 16 D: None E: I do not know 19

  19. Exercise 4, Exercise 4, Solution Solution Function Definition Function Call def foo(a,b): >>> x = 2 >>> foo(3,4) x = a 1 >>> x What does Python y = b 2 … give me? return x*y+y 3 CORRECT A: 2 B: 3 C: 16 D: None E: I do not know http://cs1110.cs.cornell.edu/tutor/#mode=edit 20

  20. Specifications & Testing

  21. Recall the Python API Recall the Python API https://docs.python.org/3/library/math.html Function Function name Possible arguments What the function What the function Module Module • This is a specifica specification ion evaluates to  How to use use the function  No Not t how to implement it • Write them as docs docstrings trings 23

  22. Anatomy of a Specification Anatomy of a Specification def greet(name): Short description, """Prints a greeting to person name followed by blank line followed by conversation starter. As needed , more detail in <more details could go here> 1 (or more) paragraphs Parameter description name: the person to greet Precondition: name is a string""" Precondition specifies print('Hello ‘+name+’!’) assumptions we make print('How are you?’) about the arguments 24

  23. Anatomy of a Specification Anatomy of a Specification Short description, def get_campus_num(phone_num): followed by blank line """Returns the on-campus version of a 10-digit phone number. Information about the return value Returns: str of form “X-XXXX” Parameter description Precondition specifies phone_num: number w/area code assumptions we make Precondition: phone_numis a 10 about the arguments digit string of only numbers""" return phone_num[5]+"-"+phone_num[6:10] 25

  24. A Precondition Is a Contract A Precondition Is a Contract • Precondition is met: >>> get_campus_num (“6072554444”) The function will work! The function will work! ‘5-4444’ • Precondition not met? >>> get_campus_num (“6072531234”) Sorry, no guarantees… Sorry, no guarantees… ‘3-1234’ Software bugs Software bugs occur if: >>> get_campus_num (6072531234) • Precondition is not Traceback (most recent call last): documented properly File "<stdin>", line 1, in<module> • Function use violates the File "/Users/bracy/cornell_phone.py", line 12, in precondition get_campus_num Precondition violated: return phone_num[5]+"-"+phone_num[6:10] TypeError: 'int' object is not subscriptable err error message! or message! >>> get_campus_num (“607-255-4444”) Precondition violated: ‘5-5-44’ no err no error message! or message! 26

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend