Shorthand for values: variables

Similar documents
Animations involving numbers

The name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet.

Input, output, and sequence

Intro. Scheme Basics. scm> 5 5. scm>

1 Getting started with Processing

CMSC 201 Fall 2016 Lab 09 Advanced Debugging

The compiler is spewing error messages.

Functions that return lists

Properties and Definitions

CS125 : Introduction to Computer Science. Lecture Notes #4 Type Checking, Input/Output, and Programming Style

Have the students look at the editor on their computers. Refer to overhead projector as necessary.

OrbBasic Lesson 1 Goto and Variables: Student Guide

Part II Composition of Functions

L A TEX Primer. Randall R. Holmes. August 17, 2018

OrbBasic 1: Student Guide

CSCI 1100L: Topics in Computing Lab Lab 11: Programming with Scratch

Section 1. The essence of COBOL programming. Mike Murach & Associates

Section 0.3 The Order of Operations

Excel Basics: Working with Spreadsheets

1.2 Adding Integers. Contents: Numbers on the Number Lines Adding Signed Numbers on the Number Line

Chapter 1: Getting Started

Lab 1: Setup 12:00 PM, Sep 10, 2017

Programming with Python

Lecture 05 I/O statements Printf, Scanf Simple statements, Compound statements

9 R1 Get another piece of paper. We re going to have fun keeping track of (inaudible). Um How much time do you have? Are you getting tired?

Software Design and Analysis for Engineers

CS Problem Solving and Object-Oriented Programming

Fundamentals. Fundamentals. Fundamentals. We build up instructions from three types of materials

VLOOKUP() takes three mandatory parameters and one default/optional parameter:

Text Input and Conditionals

Initial Coding Guidelines

Animations that make decisions

Creating a new form with check boxes, drop-down list boxes, and text box fill-ins. Customizing each of the three form fields.

Conditionals. Chapter Making decisions

You just told Matlab to create two strings of letters 'I have no idea what I m doing' and to name those strings str1 and str2.

1. Please, please, please look at the style sheets job aid that I sent to you some time ago in conjunction with this document.

Arrays/Branching Statements Tutorial:

SPRITES Moving Two At the Same Using Game State

VARIABLES. Aim Understanding how computer programs store values, and how they are accessed and used in computer programs.

Fundamentals: Expressions and Assignment

ORB Education Quality Teaching Resources

Creating a Brochure in Publisher

MySQL: an application

Decisions, Decisions. Testing, testing C H A P T E R 7

CS1046 Lab 4. Timing: This lab should take you 85 to 130 minutes. Objectives: By the end of this lab you should be able to:

1.7 Limit of a Function

For this chapter, switch languages in DrRacket to Advanced Student Language.

These are notes for the third lecture; if statements and loops.

2 Sets. 2.1 Notation. last edited January 26, 2016

Intro to Programming. Unit 7. What is Programming? What is Programming? Intro to Programming

We know have to navigate between Karel s World view, Karel s Program view and Karel s Execution (or Run) view.

RACKET BASICS, ORDER OF EVALUATION, RECURSION 1

9. MATHEMATICIANS ARE FOND OF COLLECTIONS

Programming for the Non-Programmer Examples of programming concepts and terms for the rest of us. Laurie Weaver

Hello World! Computer Programming for Kids and Other Beginners. Chapter 1. by Warren Sande and Carter Sande. Copyright 2009 Manning Publications

Foundations, Reasoning About Algorithms, and Design By Contract CMPSC 122

Using Flash Animation Basics

How to Make a Book Interior File

Working with Track Changes: A Guide

CISC-124. Casting. // this would fail because we can t assign a double value to an int // variable

Outlook is easier to use than you might think; it also does a lot more than. Fundamental Features: How Did You Ever Do without Outlook?

3Using and Writing. Functions. Understanding Functions 41. In this chapter, I ll explain what functions are and how to use them.

Statistics Case Study 2000 M. J. Clancy and M. C. Linn

Introduction to Programming with JES

COPYRIGHTED MATERIAL. Getting Started with Google Analytics. P a r t

Difference Between Dates Case Study 2002 M. J. Clancy and M. C. Linn

Installing Dolphin on Your PC

QUICK EXCEL TUTORIAL. The Very Basics

Table of Laplace Transforms

Your First Windows Form

Adding content to your Blackboard 9.1 class

Section 1.1 Definitions and Properties

Coordinate System Techniques

Variables, expressions and statements

Boolean Expressions. Is Equal and Is Not Equal

QUIZ. What is wrong with this code that uses default arguments?

Boolean Expressions. Is Equal and Is Not Equal

The Dynamic Typing Interlude

(Refer Slide Time 3:31)

Robotics II. Module 5: Creating Custom Made Blocks (My Blocks)

Lecture 4 CSE July 1992

Excel Basics Rice Digital Media Commons Guide Written for Microsoft Excel 2010 Windows Edition by Eric Miller

2 Adding Contacts, Sending Attachment s and Sending s to More Than 1 Person.

STATS 507 Data Analysis in Python. Lecture 2: Functions, Conditionals, Recursion and Iteration

12 Macros. Localmake. is an abbreviation for the two instructions. localmake "fred 87. local "fred make "fred 87

COMP : Practical 9 ActionScript: Text and Input

CS/IT 114 Introduction to Java, Part 1 FALL 2016 CLASS 3: SEP. 13TH INSTRUCTOR: JIAYIN WANG

Homework 7: Subsets Due: 11:59 PM, Oct 23, 2018

This chapter is intended to take you through the basic steps of using the Visual Basic

Chapter 17. Fundamental Concepts Expressed in JavaScript

SIMPLE INPUT and OUTPUT:

Defining Program Syntax. Chapter Two Modern Programming Languages, 2nd ed. 1

STAT 113: R/RStudio Intro

CSC 467 Lecture 3: Regular Expressions

CS112 Lecture: Variables, Expressions, Computation, Constants, Numeric Input-Output

Getting Started. Excerpted from Hello World! Computer Programming for Kids and Other Beginners

Getting Started with Amicus Document Assembly

CS193P: HelloPoly Walkthrough

CMSC 201 Fall 2015 Lab 12 Tuples and Dictionaries

Starting Boolean Algebra

Transcription:

Chapter 2 Shorthand for values: variables 2.1 Defining a variable You ve typed a lot of expressions into the computer involving pictures, but every time you need a different picture, you ve needed to find it (e.g. in a Web browser) and copy-andpaste it into DrRacket. This is repetitive and a pain. It would be much more convenient if you could give each picture a name and refer to it that way. To do this, DrRacket provides a built-in function named define. To see how it works, type (in the Interactions pane) the line > ( define calendar ) and hit ENTER/RETURN. You won t see any result, but now you can use the word calendar any time you want that picture: > calendar > (beside calendar calendar) > (flip-vertical calendar) (Note that if you leave out the space between define and calendar, or between beside and calendar, or between any two typed words, Racket won t know where one word ends and the next begins, and you ll get an error message like reference to undefined identifier: definecalendar.) There s nothing magical about the name calendar you could have named it anything else, like fred or antidisestablishmentarianism, but since it stands for a picture of a calendar, the name calendar is a lot easier to remember. Practice Exercise 2.1.1 Define another variable to hold another picture you ve found 25

26 CHAPTER 2. VARIABLES on the Web. Write some expressions using each of the two variables, and some using both. You can also define a variable to hold the result of another expression, e.g. (define two-calendars (beside calendar calendar)) Practice Exercise 2.1.2 Define a variable six-calendars whose value is a six-pack of calendars: two wide and three high. Test your definition by typing the name of the variable, all by itself, in the Interactions pane and hitting ENTER/RETURN; you should see the picture of six calendars. If not, you ve done something wrong. Hint: This is simpler if you use the already-defined the variable two-calendars. Practice Exercise 2.1.3 Choose a reasonably small picture from this book or the Web, and store it in a variable. Then define another variable named two-copies whose value is two copies of that picture, side by side, by using the previous variable. Then define a third variable named six-copies whose value is a six-pack of the picture, two wide by three high, by using two-copies. Practice Exercise 2.1.4 Construct another interesting picture from pieces in this book or on the Web, and store it in a variable with an appropriate name. Test it as before. If you use a particular piece more than once, you may want to give that piece a name of its own, so you can use its name in constructing the whole picture. Common beginner mistakes Recall from Chapter 1 that a literal is a simple expression that doesn t stand for anything else; if you type it into the Interactions window, the value you get back is the same thing you typed in. By contrast, a variable does stand for something else: if you type in the name of a variable, you get back a picture rather than the variable name you typed. You can only define a variable; you cannot define a literal. Furthermore, (in Beginner DrRacket) you cannot define a variable more than once: once you ve decided what value it stands for, that s its value until the next time you click Run. Practice Exercise 2.1.5 Type each of the following expressions into a newly-opened interactions pane, one by one. For each one, predict what you think it will do, then hit ENTER and see whether you were right. Explain the results. Several of them will produce error messages: in each such case, read and understand the error message. calendar (define calendar) (define calendar calendar) (define calendar )

2.2. THE DEFINITIONS PANE 27 calendar (define other-pic book) (define other-pic calendar) (define calendar ) other-pic Note that when you type an expression to be evaluated, all variables in it must already be defined, or you get the error message reference to an identifier before its definition... On the other hand, when you define a variable, it must not already be defined, or you get the error message define: cannot redefine name... And of course, when you define a variable, it must be an identifier rather than a literal like, or you get the error message define: expected a function name, constant name, or function header for define, but found... 2.2 Defining variables and the Definitions pane As its name suggests, the Definitions pane(normally the top half of the DrRacket window) is intended to hold definitions. Try typing several variable definitions into the Definitions pane, then click the Run button. Everything you ve typed in the Interactions pane will disappear, but the variable definitions are available so you can use them as much as you wish in the Interactions pane. One benefit of this is that, once you ve found or constructed several interesting pictures, you can save them all to a file so you can easily work with the same named pictures again the next time you start DrRacket. Practice Exercise 2.2.1 Type the (legal) definitions from Section 2.1 into the Definitions pane, save it to a file, quit DrRacket, double-click the file, and hit the Run button. Type some expressions involving those variables (calendar, two-calendars, etc.) into the Interactions pane and check that they do what you expect. 2.3 What s in a name? We ve been using the names of functions for some time already, and now we re making up new names for things. So what qualifies as a name? (The technical term in computer science is identifier.) The rules differ slightly from one programming language to another, but in Racket, an identifier can be made up of letters, numerals, and punctuation marks. It may not contain spaces, commas, # signs, parentheses, square brackets, curly braces, quotation marks, apostrophes, or vertical bars.

28 CHAPTER 2. VARIABLES An identifier may contain upper- and/or lower-case letters, and it makes a difference which one you use (e.g. calendar is different from Calendar or CALENDAR). An identifier may not consist entirely of numerals (if you type such a thing, DrRacket treats it as a number instead; we ll learn more about this in Chapter 3.) For example, rotate-cw is a legal identifier, which happens to represent a predefined function. rotate$cw would also be a legal identifier, although it doesn t already stand for anything. rotate cw contains a space, so DrRacket would treat it as two identifiers, not one. 2.4 More syntax rules Why are these new expressions, involving define and defined variables, legal? Based on the grammar rules you ve seen so far (Syntax Rules 1 and 2 from Section 1.8), they re not. So we need some more syntax rules (for easy reference, we repeat the first two): Syntax Rule 1 Any literal picture is a legal expression; its value is itself. Syntax Rule 2 A left-parenthesis followed by a function name, one or more legal expressions, and a right parenthesis, is a legal expression. Its value is what you get by applying the named function to the values of the smaller expressions inside it. Syntax Rule 3 Any identifier, if already defined, is a legal expression. Its value is what it was defined to stand for. Syntax Rule 4 A left-parenthesis followed by the word define, a previously-undefined identifier, a legal expression, and a right-parenthesis is a legal expression. Think of it as anything matching the pattern (define new-identifier expression) It has no value, but the side effect of defining the variable to stand for the value of the expression. Worked Exercise 2.4.1 Draw a box diagram to prove that ( define calendar ) is a legal expression. Assume that calendar is not already defined. Solution: The picture is obviously a legal expression, by rule 1: 1 (define calendar ) The word calendar is a legal identifier. It does not qualify as a legal expression in its own right, since it isn t already defined; however, by rule 4 an undefined identifier can be combined with define and the picture to make a legal expression. 4 1 (define calendar )

2.5. VARIABLES AND THE STEPPER 29 Exercise 2.4.2 Draw a box diagram to prove that ( rotate-cw calendar ) is a legal expression. Assume that calendar is already defined. Exercise 2.4.3 Draw a box diagram to prove that your solution to Exercise 2.1.2 or 2.1.3 is a legal expression. Exercise 2.4.4 Draw a box diagram for ( define snark boojum calendar) Assume that calendar is already defined, and snark and boojum are not. The whole thing is not a legal expression; why not? 2.5 Variables and the Stepper Variable definitions provide another opportunity to see what s going on behind the scenes by using the Stepper. Make sure you ve got some variable definitions in the Definitions pane, then add some expressions at the end like ( beside (flip-vertical calendar) calendar ) Click the Step button. It ll skip over all the simple definitions, until you get to an expression involving Syntax Rule 2 (applying a function to something) or 3 (getting the value of a variable). Any variable names in the original expression will be replaced (one by one) with the values of those variables, and then the function (if any) can be applied as usual. Practice Exercise 2.5.1 Make up some expressions involving variables, type them into the Definitions window, and step through them. At each step, make sure you understand what s being replaced with what, and why. 2.6 Review of important words and concepts A variable is a word that stands for some other value. An identifier is any word; it may contain some punctuation marks, but it cannot contain spaces, parentheses, quotation marks, or commas. Every variable is an identifier, but not every identifier is a variable. For example, define, rotate-180, beside, etc. are identifiers but not variables: they stand for operations rather than values. A variable can be defined by using Syntax Rule 4 on a previously-undefined identifier. After that, you can use it anywhere that you could use any other expression, according to Syntax Rule 2. By chaining a sequence of variable definitions, you can build complex pictures without getting nearly as confused as you might if you tried to write the whole thing as one big expression. 2.7 Reference: functions for defining variables The only new function introduced in this chapter is define.