49
9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial: creating computer programs •Variables and constants •Input and output •Operators •Common programming errors •Formatted output •Programming style James Tam Reminder! These course notes are mandatory http://pages.cpsc.ucalgary.ca/~ tamj/2016/231F/index.html#Course_Top ics_and_Notes_for_lectures Get them before class and go over them before attending (If all else fails then look through them afterwards – at the very least to see what concepts/topics you are responsible for knowing). It’s the *first* step you should complete if you’ve missed lecture and need to catch up. (The second step is to get the in class notes of a classmate). After going through these notes the third step is to ask us for help in filling in any conceptual gaps.

Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

  • Upload
    others

  • View
    19

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 1

Getting Started With Python Programming

•Tutorial: creating computer programs

•Variables and constants

•Input and output

•Operators

•Common programming errors

•Formatted output

•Programming style

James Tam

Reminder!

• These course notes are mandatory– http://pages.cpsc.ucalgary.ca/~tamj/2016/231F/index.html#Course_Top

ics_and_Notes_for_lectures

• Get them before class and go over them before attending

• (If all else fails then look through them afterwards – at the very least to see what concepts/topics you are responsible for knowing).– It’s the *first* step you should complete if you’ve missed lecture and

need to catch up.

– (The second step is to get the in class notes of a classmate).

– After going through these notes the third step is to ask us for help in filling in any conceptual gaps.

Page 2: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 2

James Tam

Tips For Success: Programming Sections

• (The previous 4 tips are still applicable but there’s some tips specific to programming):– Take extensive notes: everything in class not just what the instructor

“writes down” but also what he/she “says in class”.

• Some students may find when studying the lecture slides for the exam that they cannot understand concepts.

• The extra “filling of the blanks” occurs during lecture so you need to annotate the slides with your own notes

– After lectures have covered a particular concept/example

• If you have time try writing the program on your own (without looking at the online examples or notes) in order to create a program that fulfills the same task as the example program

• (It’s one thing to see the solution to a problem explained, your depth of understanding will be deeper if you have to re-create it from scratch yourself).

• JT’s note: you may find this unnecessary for the simple examples in this section but it will be beneficial to do this when more complex concepts are covered (e.g. nested loops onwards)

James Tam

Python

• This is the name of the programming language that will be used to illustrate different programming concepts this semester:–My examples will be written in Python–Your assignments will be written in Python

• Some advantages (from Python dot org)–Free–Powerful–Widely used (Google, NASA, Yahoo, Electronic Arts, some Linux

operating system scripts etc.)

• Named after a British comedy “Monty Python’s Flying Circus”–Official website (Python the programming language, not the Monty

Python comedy troop): http://www.python.org

–An overview of the web site: https://www.python.org/about/gettingstarted/

Page 3: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 3

James Tam

Python History

• Developed in the early 1990s by Guido an Rossum.

• Python was designed with a tradeoff in mind (from “Python for everyone” (Horstman and Necaise):– Pro: Python programmers could quickly write programs

(and not be burdened with an overly difficult language)

– Con: Python programs weren’t optimized to run as efficiently as programs written in some other languages.

From: http://www.python.org/~guido/

James Tam

Working From Home

• SAFEST APPROACH for working at home (recommended).– Remotely login to the Computer Science network– Example: Connect using a remote login program such as SSH or Putty

• Info: http://pages.cpsc.ucalgary.ca/~tamj/2016/231F/starting/index.html

• Downloads: – Working from home, use Putty: http://www.ucalgary.ca/cpsc/files/cpsc/putty.zip– Transferring files to/from home, use Filezilla: https://filezilla-project.org/– (The remote login software SSH comes with MacOS so no download is needed).

• Advantage: – The interface will be the same in the CPSC lab vs. working at home.– If you login to the correct machine then your program is guaranteed to work in the

lab (pick a “Linux” based machine).

• Sometime later in the semester, in tutorial, the Teaching Assistants will show you how to use these programs.

Page 4: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 4

James Tam

Working From Home (Installing Python)

• Alternative (OK for 231 but not recommended for 233): Getting Python (get version 3.X and not version 2.X)– http://www.python.org/download/

James Tam

Online Help: Official Python Site

• Basic explanation of concepts (for beginners: along with examples to illustrate)

– http://docs.python.org/py3k/tutorial/index.html

– (You may want to skip Step #1 and proceed immediately onto Step 2.1 and continue onto Step #3)

Page 5: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 5

James Tam

The Process Of Creating A Computer Program

Program Creation

• A person (programmer) writes a computer program

(series of instructions).

• The program is written and saved using a text

editor.

• The instructions in the programming language (e.g.,

Python) are high level (look much like a human

language).

Translation

• A special computer program (translator) translates

the program written by the programmer into the

only form that the computer can understand

(machine language/binary)

Execution

• The machine/binary

language instructions can

now be directly executed by

the computer.

# Details later this termlist = [1,2,’a’]for element in list

print(element)

# Details in 2nd year1000000110010100 1000010010000001 01010100

slide 9 (Images curtesy of James Tam)

‘Typical’programmer

James Tam

Types Of Translators

1) Interpreters (e.g., Python is an interpreted language)

• Each time the program is run the interpreter translates the program (translating a part at a time).

• If there are any translation errors during the process of interpreting the program, the program will stop execution right when the error is encountered.

2) Compilers (e.g., ‘C’, C++ are compiled languages)

• Before the program is run the compiler translates the program all at once.

• If there are any translation errors during the compilation process, no machine language executable will be produced (nothing to execute)

• If there are no translation errors during compilation then a machine language program is created which can then be executed .

Page 6: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 6

James Tam

Location Of My Online Examples

• Finding them via the WWW:– URL: http://pages.cpsc.ucalgary.ca/~tamj/2016/231F/examples

• Finding them in UNIX when you are logged onto a computer in the lab (or remotely logged in using Putty)– Directory: /home/231/examples

• The locations of the example programs that are specific to this section of notes (each section will have be located in a sub-directory/sub-link):– http://pages.cpsc.ucalgary.ca/~tamj/2016/231F/examples/intro

– /home/231/examples/intro

– FYI: examples I give TA’s for tutorials will be in a different location:– http://pages.cpsc.ucalgary.ca/~tamj/2016/231F/tutorialSchedule.html

– /home/231/tutorials

James Tam

The First Python Program

• Program name: small.py

print ("hello",end="")

Filename: small.py

Page 7: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 7

James Tam

Creating/Running Programs: One Operating System

• The process is similar on other platforms/OS’s (the TA’s will show you how to do it on the lab computers (Linux) during tutorials).

Step 1: Writing your program

–You need a text editor (e.g., WordPad, Notepad) to enter the program.

–It can be done using any editor that you want, but don’t use a word processor (e.g., MS-Word) and remember to save it as a text file ending with the suffix dot-py “.py”

James Tam

Creating/Running Programs: One Operating System (2)

Step 2: Translating and running your program

– You need to open a command line to translate/run your Python program.

– The name of the Python translator is “Python”

– To translate/run your program type “python filename.py” at the command line.

• The first example program would be executed by typing “python small.py”• For a program whose filename is called “output1.py” you would type “python

output1.py”. Running /translating the program

Output of program (result of running the

program)

Page 8: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 8

James Tam

Important Reminders

• Make sure you type the whole file name (including the part after the period) when you translate/run your program.

– E.g., “python small.py”

• Unless you are very familiar with your operating system when you translate/run a program you should first navigate to the directory/folder where your Python program resides.

– JT: the ‘cd’ command changes your directory (Windows and UNIX)

– Suppose my program was under:C:\231 (Windows)

OR

/home/231 (UNIX)

– To reach this location you could (shortcuts excluded for now) then type:cd c:\231 (Windows)

OR

cd /home/231 (UNIX)

James Tam

Section Summary: Writing A Small “Hello World” Program

• You should know exactly what is required to create/run a simple, executable Python program.– While you may not be able to create a new program from scratch at this

point, you should be able to enter/run small.py yourself.

Page 9: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 9

James Tam

Variables

• Set aside a location in memory.• Used to store information (temporary).

– This location can store one ‘piece’ of information.

• Putting another piece of information at an existing location overwrites previous information.

– At most the information will be accessible as long as the program runs i.e., it’s temporary

• Some types of information which can be stored in variables include: integer (whole), floating point (fractional), strings (essentially any characters you can type and more)

Format (creating):<name of variable> = <Information to be stored in the variable>

Examples (creating):– Integer (e.g., num1 = 10)

– Floating point (e.g., num2 = 10.0)– Strings: alpha, numeric, other characters enclosed in quotes.

• e.g., name = "james"

• To be safe get in the habit of using double quotesImage curtesy of James Tam

slide 17

James Tam

The Assignment Operator: =

• The assignment operator '=' used in writing computer programs does not have the same meaning as mathematics.

– Don’t mix them up!

• Example:y = 3

x = y

x = 6

y = 13

• What is the end result? How was this derived (what are the intermediate results)?

• See the program ‘assignment.py’

Page 10: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 10

James Tam

Variable Naming Conventions

• Python requirements: – Rules built into the Python language for writing a program.

– Somewhat analogous to the grammar of a ‘human’ language.

– If the rules are violated then the typical outcome is the program cannot be translated (nor run).

• A language such as Python may allow for a partial execution (it runs until the error is encountered).

• Style requirements:– Approaches for producing a well written program.

– (The real life analogy is that something written in a human language may follow the grammar but still be poorly written).

– If style requirements are not followed then the program can still be translated but there may be other problems (more on this during the term).

James Tam

Variable Naming Conventions (2)

1. Style requirement: The name should be meaningful.

2. Style and Python requirement: Names must start with a letter (Python requirement) and should not begin with an underscore (style requirement).

3. Style requirement: Names are case sensitive but avoid distinguishing variable names only by case.

Examples

#1:

age (yes) x, y (no)

#2height (yes) 2x, _height (no)

#3Name, name, nAme (no to this trio)

Page 11: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 11

James Tam

Variable Naming Conventions (2)

4. Style requirement: Variable names should generally be all lower case (see next point for the exception).

5. Style requirement: For names composed of multiple words separate each word by capitalizing the first letter of each word (save for the first word) or by using an underscore. (Either approach is acceptable but don’t mix and match.)

6. Python requirement: Can't be a keyword (see next slide).

Examples

#4:

age, height, weight (yes)

Age, HEIGHT (no)

#5

firstName, last_name(yes to either approach)

James Tam

Key Words In Python1

and del from not while

as elif global or with

assert else if pass yield

break except import print

class exec in raise

continue finally is return

def for lambda try

1 From “Starting out with Python” by Tony Gaddis

Page 12: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 12

James Tam

Variable Naming Conventions: Bottom Line

• Both Python and style requirements should be followed when creating your variables.

James Tam

Extra Practice

• Come up with example names that violate and conform to the naming conventions.– (You will have to go through this process as you write your programs

anyhow so it’s a good idea to take about 5 – 10 minutes to make sure that you know the requirements).

Page 13: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 13

James Tam

Section Summary: Variables

• What is a variable

• What are some types of variables available in Python

• How to create a variable in Python

• What are naming conventions for variables

James Tam

Displaying Output Using The Print() Function

• This function takes zero or more arguments (inputs)– Multiple arguments are separated with commas

– print() will display all the arguments followed by a blank line (move the cursor down a line). – end="" isn’t mandatory but can be useful to prevent Python from adding the

extra line (when precise formatting is needed)

– Zero arguments just displays a blank line

• Simple Examples (output1.py)print("hi")

print("hey",end="")

print("-sup?")

Page 14: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 14

James Tam

Print("… ") Vs. Print(<name>)

• Enclosing the value in brackets with quotes means the value in between the quotes will be literally displayed onscreen.

• Excluding the quotes will display the contents of a memory location.

• Example: output3.pyaString = "Some message"

print(aString)

print("aString")

James Tam

Print("… ") Vs. Print(<name>): 2

Format:print(arg1,arg2 … )1

Example: output2.pynum = 10.0

name = "james"

print("Sup?")

print("num=", end="")

print(num)

print()

print("My name: ", name)

1 From what you’ve learned thus far each argument can be a constant string or name of a variable.

Exercise 1: remove these quotes and see if you can correctly predict the results.

Exercise 2: remove parts: 1) end=“” 2) print() and see if you can correctly predict the results.

Page 15: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 15

James Tam

•Used to format text output (free form and to reduce the number of calls to the print() function)

•The way in which the text is typed into the program is exactly the way in which the text will appear onscreen.

•Program name: formatting1.py

From Python Programming (2nd Edition) by

Michael Dawson

Triple Quoted Output

From a CPSC 231 assignment courtesy of James Tam

James Tam

• Example:num = 1/3

print("num=",num)

By Default Output Is Unformatted

Sometimes you get extra spaces (or blank lines)

The number of places of precision is determined by the language not the programmer

• There may be other issues e.g., you want to display output in columns of fixed width, or right/left aligned output

• There may be times that specific precision is needed in the displaying of floating point values

Page 16: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 16

James Tam

Formatting Output

• Output can be formatted in Python through the use of format specifiers and escape codes

James Tam

Format Specifiers (If There Is Time)

• Format:print ("%<type of info to display/code>" %<source of the info to display>)

• Example (starting with simple cases):– Program name: formatting2.py

num = 123

st = "cpsc 231"

print("num=%d" %num)

print("course: %s" %st)

num = 12.5

print("%f %d" %(num,num))

Doesn’t literally display this: Placeholder (for information to be displayed)

Page 17: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 17

James Tam

Types Of Information That Can Be Formatted Via Format Specifiers (Placeholder) (If There Is Time)

Specifier Type of Information to display

%s String

%d Integer (d = decimal / base 10)

%f Floating point

James Tam

Formatting Effects Using Format Specifiers (If There Is Time)

• Format:%<width>1.<precision>2<type of information>

• Examples (format specifiers to format output):– Program name: formatting3.pnum = 12.55

print ("%4.1f" %num)

print ("%5.1f" %num)

print ("%3.1f" %num)

print ("%3s%-3s" %("ab", "ab"))

print ("%-3s%3s" %("ab", "ab"))

1 A positive integer will add leading spaces (right align), negatives will add trailing spaces (left align).

Excluding a value will set the field width to a value large enough to display the output

2 For floating point data only.

Page 18: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 18

James Tam

One Application Of Format Specifiers (If There Is Time)

• It can be used to align columns of text.

• Example (movie credits, tabular or financial information)

James Tam

Section Summary: Formatting Output (If There Is Time)

• How to use format specifiers (field width, precision) to format output

Page 19: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 19

James Tam

• The back-slash character enclosed within quotes won’t be displayed but instead indicates that a formatting (escape) code will follow the slash:

Escape Codes/Characters

Escape sequence Description

\a Alarm: Causes the program to beep.

\n Newline: Moves the cursor to beginning of

the next line.

\t Tab: Moves the cursor forward one tab stop.

\' Single quote: Prints a single quote.

\" Double quote: Prints a double quote.

\\ Backslash: Prints one backslash.

James Tam

Percent Sign1 (If There Is Time)

• If no format specifiers are used then simply enclose the ‘%’ within the quotes of a print() statementprint("12%") → 12%

• If format specifiers are used within a call to print() then use one percent sign to act as an escape code for another percent sign to followprint("%f%%", %(100)) → 100.000000%

1 Since the question inevitably comes up each term I’m answering it here

Page 20: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 20

James Tam

Escape Codes (2)

• Program name: formatting4.py

print ("\a*Beep!*")

print ("hi\nthere")

print ('it\'s')

print ("he\\y \"you\"")

James Tam

Escape Codes: Application

• It can be used to nicely format text output (alignment output, provide separators within and between lines)

• Program example: formatting5.pyfirstName = "James"

lastName = "Tam"

mobile = "123-4567"

print("Last name:\t", lastName)

print("First name:\t", firstName)

print("Contact:\t", mobile)

• Escape codes for aligning text is even more valuable if the width of a field (data to be displayed) is variable e.g., comes from user input or a text file.

Page 21: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 21

James Tam

Section Summary: Escape Codes

• How to use escape codes to format output

James Tam

Extra Practice

• Traces:– Modify the examples (output using format specifiers and escape codes)

so that they are still valid Python statements.

• Alternatively you can try finding some simple ones online or from a textbook.

– Hand trace the code (execute on paper) without running the program.

– Then run the program and compare the actual vs. expected result.

• Program writing:– Write a program the will right-align text into 3 columns of data.

– Write a program the will left-align text into 3 columns of data.

Page 22: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 22

James Tam

Reminder: Variables

• By convention variable names are all lower case

• The exception is long (multi-word) names

• As the name implies their contents can change as a program runs e.g.,income = 300000

income = income + interest

Income = income + bonuses

James Tam

Named Constants

•They are similar to variables: a memory location that’s been given a name.

•Unlike variables their contents shouldn’t change.

•The naming conventions for choosing variable names generally apply to constants but the name of constants should be all UPPER CASE. (You can separate multiple words with an underscore).

•Example PI = 3.14

–PI = Named constant, 3.14 = Unnamed constant

•They are capitalized so the reader of the program can distinguish them from variables.–For some programming languages the translator will enforce the

unchanging nature of the constant.

–For languages such as Python it is up to the programmer to recognize a named constant and not to change it.

Page 23: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 23

James Tam

Why Use Named Constants

1. They make your program easier to read and understand# NO

populationChange = (0.1758 – 0.1257) * currentPopulation

Vs.

#YES

BIRTH_RATE = 17.58

MORTALITY_RATE = 0.1257

currentPopulation = 1000000

populationChange = (BIRTH_RATE - MORTALITY_RATE) *

currentPopulation

Avoid unnamed constants

whenever possible!

James Tam

Why Use Named Constants (2)

2) Makes the program easier to maintain– If the constant is referred to several times throughout the program,

changing the value of the constant once will change it throughout the program.

– Using named constants is regarded as “good style” when writing a computer program.

Page 24: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 24

James Tam

Purpose Of Named Constants (3)

BIRTH_RATE = 0.998

MORTALITY_RATE = 0.1257

populationChange = 0

currentPopulation = 1000000

populationChange = (BIRTH_RATE - MORTALITY_RATE) * currentPopulation

if (populationChange > 0):

print("Increase")

print("Birth rate:", BIRTH_RATE, " Mortality rate:", MORTALITY_RATE, " Population change:", populationChange)

elif (populationChange < 0):

print("Decrease")

print("Birth rate:", BIRTH_RATE, " Mortality rate:", MORTALITY_RATE, "Population change:", populationChange)

else:

print("No change")

print("Birth rate:", BIRTH_RATE, " Mortality rate:", MORTALITY_RATE, "Population change:", populationChange)

James Tam

Purpose Of Named Constants (4)

BIRTH_RATE = 0.998

MORTALITY_RATE = 0.1257

populationChange = 0

currentPopulation = 1000000

populationChange = (BIRTH_RATE - MORTALITY_RATE) * currentPopulation

if (populationChange > 0):

print("Increase")

print("Birth rate:", BIRTH_RATE, " Mortality rate:", MORTALITY_RATE, " Population change:", populationChange)

elif (populationChange < 0):

print("Decrease")

print("Birth rate:", BIRTH_RATE, " Mortality rate:", MORTALITY_RATE, "Population change:", populationChange)

else:

print("No change")

print("Birth rate:", BIRTH_RATE, " Mortality rate:", MORTALITY_RATE, "Population change:", populationChange)

One change in the initialization of the constant changes every reference to that constant

Page 25: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 25

James Tam

Purpose Of Named Constants (5)

BIRTH_RATE = 0.1758

MORTALITY_RATE = 0.0001

populationChange = 0

currentPopulation = 1000000

populationChange = (BIRTH_RATE - MORTALITY_RATE) * currentPopulation

if (populationChange > 0):

print("Increase")

print("Birth rate:", BIRTH_RATE, " Mortality rate:", MORTALITY_RATE, " Population change:", populationChange)

elif (populationChange < 0):

print("Decrease")

print("Birth rate:", BIRTH_RATE, " Mortality rate:", MORTALITY_RATE, "Population change:", populationChange)

else:

print("No change")

print("Birth rate:", BIRTH_RATE, " Mortality rate:", MORTALITY_RATE, "Population change:", populationChange)

One change in the initialization of the constant changes every reference to that constant

James Tam

When To Use A Named Constant?

• (Rule of thumb): If you can assign a descriptive, useful, self-explanatory name to a constant then you probably should.

• Example 1 (easy to provide self explanatory constant name)INCH_CM_RATIO = 2.54

height = height * INCH_CM_RATIO

• Example 2 (providing self explanatory names for the constants is difficult) calories used = (10 x weight) + (6.25 x height) - [(5 x age) - 161]

Page 26: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 26

James Tam

Extra Practice

• Provide a formula where it would be appropriate to use named constants (should be easy).

• Provide a formula where unnamed constants may be acceptable (may be trickier).

• Search for formulas in science articles online if you can’t think of any.

James Tam

Section Summary: Named Constants

• What is a named constant– How does it differ from a variable

– How does it differ from an unnamed constant

– What are some reasons for using named constants

• Naming conventions for named constants

Page 27: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 27

James Tam

Arithmetic Operators

Operator Description Example

= Assignment num = 7

+ Addition num = 2 + 2

- Subtraction num = 6 - 4

* Multiplication num = 5 * 4

/ Division num = 9 / 2

// Integer division num = 9 // 2

% Modulo num = 8 % 3

** Exponent num = 9 ** 2

4.5

4

2

81

James Tam

• First level of precedence: top to bottom

• Second level of precedence– If there are multiple operations that are on the same level then

precedence goes from left to right.

Order Of Operation

() Brackets (inner before

outer)

** Exponent

*, /, //, % Multiplication, division,

modulo

+, - Addition, subtraction

= Assignment

Examplex = 3 * 2 ** 3

Vs.x = (3 * 2) ** 3

Page 28: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 28

James Tam

Order Of Operation And Style

• Even for languages where there are clear rules of precedence (e.g., Java, Python) it’s good style to explicitly bracket your operations and use blank spaces as separators.x = (a * b) + (c / d)

• It not only makes it easier to read complex formulas but also a good habit for languages where precedence is not always clear (e.g., C++, C).

James Tam

Input

•The computer program getting string information from the user.

•Strings cannot be used for calculations (information for getting numeric input will provided shortly).

•Format:<variable name> = input()

OR

<variable name> = input("<Prompting message>")

•Example: Program name: input1.pyprint("What is your name: ")name = input()

ORname = input("What is your name: ")

ORprint("What is your name: ", end="")name = input()

Avoid alignment issues such as this

Page 29: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 29

James Tam

Variables: Storing Information (If There Is Time)

• On the computer all information is stored in binary (2 states)– Example: RAM/memory stores information in a series of on-off

combinations

– A single off/off combination is referred to as a ‘bit’

Biton offOR

Byte

•8 bits

James Tam

Variables: Storing Information (If There Is Time)

• Information must be converted into binary to be stored on a computer.

User enters13

slide 58

Can be stored as

Page 30: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 30

James Tam

Storing Integer Information (If There Is Time)

• 1 bit is used to represent the sign, the rest is used to store the size of the number– Sign bit: 1/on = negative, 0/off = positive

• Format:

• Previous example

slide 59

Positive

number

Size of number, in this case = 13

Digits representing the size of the

number (all the remaining bits)

Negative

number

Positive

number

1 bit

James Tam

Storing Real Numbers In The Form Of Floating Point (If There Is Time)

– Mantissa: digits of the number being stored

– Exponent: the direction (negative = left, positive=right) and the number of places the decimal point must move (‘float’) when storing the real number as a floating point value.

• Examples with 5 digits used to represent the mantissa:– e.g. One: 123.45 is represented as 12345 * 10-2

– e.g. Two: 0.12 is represented as 12000 * 10-5

– e.g. Three: 123456 is represented as 12345 * 101

• Remember: Using floating point numbers may result in a loss of accuracy (the float is an approximation of the real value to be stored).

Sign Mantissa Exponent

1 bit Several bits Several bits

Page 31: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 31

James Tam

• Typically characters are encoded using ASCII

• Each character is mapped to a numeric value– E.g., ‘A’ = 65, ‘B’ = 66, ‘a’ = 97, ‘2’ = 50

• These numeric values are stored in the computer using binary

Storing Character Information (If There Is Time)

Character ASCII numeric

code

Binary

code

‘A’ 65 01000001

‘B’ 66 01000010

‘a’ 97 01100001

‘2’ 50 00110010

James Tam

Storing Information: Bottom Line

• Why it important to know that different types of information is stored differently?– One motivation: sometimes students don’t why it’s significant that

“123” is not the same as the number 123.

– Certain operations only apply to certain types of information and can produce errors or unexpected results when applied to other types of information.

• Examplenum = input("Enter a number")

numHalved = num / 2

Page 32: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 32

James Tam

Converting Between Different Types Of Information

• Example motivation: you may want numerical information to be stored as a string (for built in string functions e.g., check if a string consists only of numbers) but also you want to perform calculations).

• Some of the conversion mechanisms (functions) available in Python:

Format:int(<value to convert>)

float(<value to convert>)

str(<value to convert>)

Examples:

Program name: convert1.py

x = 10.9

y = int(x)

print(x,y)

Conversion function

( )

Value to convert

Converted result

James Tam

Converting Between Different Types Of Information (2)

Examples:

Program name: convert2.py

x = '100'

y = '-10.5'

print(x + y)

print(int(x) + float(y))

Page 33: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 33

James Tam

Converting Types: Extra Practice

• Determine the output of the following program:print(12+33)

print('12'+'33')

x = 12

y = 21

print(x+y)

print(str(x)+str(y))

1221

James Tam

Converting Between Different Types Of Information: Getting Numeric Input

• The ‘input()’ function only returns string information so the value returned must be converted to the appropriate type as needed.– Example

Program name: convert3.py

# No conversion performed: problem!

HUMAN_CAT_AGE_RATIO = 7

age = input("What is your age in years: ")

catAge = age * HUMAN_CAT_AGE_RATIO

print ("Age in cat years: ", catAge)

• ‘Age’ refers to a string

not a number.

• The ‘*’ is not

mathematical

multiplication

Page 34: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 34

James Tam

Converting Between Different Types Of Information: Getting Numeric Input (2)

# Input converted: Problem solved!

HUMAN_CAT_AGE_RATIO = 7

age = int(input("What is your age in years: "))

catAge = age * HUMAN_CAT_AGE_RATIO

print("Age in cat years: ", catAge)

• ‘Age’ converted to

an integer.

• The ‘*’ now

multiplies a

numeric value.

James Tam

Section Summary: Input, Representations

• How to get user input in Python

• How do the different types of variables store/represent information (optional/extra for now)

• How/why to convert between different types

Page 35: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 35

James Tam

Program Documentation

• Program documentation: Used to provide information about a computer program to another programmer (writes or modifies the program).

• This is different from a user manual which is written for people who will use the program.

• Documentation is written inside the same file as the computer program (when you see the computer program you can see the documentation).

• The purpose is to help other programmers understand the program: what the different parts of the program do, what are some of it’s limitations etc.

James Tam

Program Documentation (2)

• Doesn’t contain instructions for the computer to execute.

• Not translated into machine language.

• Consists of information for the reader of the program:– What does the program as a while do e.g., calculate taxes.

– What are the specific features of the program e.g., it calculates personal or small business tax.

– What are it’s limitations e.g., it only follows Canadian tax laws and cannot be used in the US. In Canada it doesn’t calculate taxes for organizations with yearly gross earnings over $1 billion.

– What is the version of the program

• If you don’t use numbers for the different versions of your program then simply use dates (tie versions with program features – more on this in a moment “Program versioning and backups”).

Page 36: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 36

James Tam

Program Documentation (3)

• Format:

# <Documentation>

• Examples:# Tax-It v1.0: This program will electronically calculate

# your tax return. This program will only allow you to complete

# a Canadian tax return.

The number sign ‘#” flags the

translator that the remainder of the

line is documentation.

James Tam

Program Versioning And Back Ups

• As significant program features have been completed (tested and the errors removed/debugged) a new version should be saved in a separate file.

# Version: Sept 20, 2012# Program features:# (1) Load game# (2) Show game world

Game.Sept20# Version: Sept 20, 2012# Program features:# (1) Load game# (2) Show game world

Game.py

Make backup file

Page 37: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 37

James Tam

Program Versioning And Back Ups

• As significant program features have been completed (tested and the errors removed/debugged) a new version should be saved in a separate file.

# Version: Oct 2, 2012# Program features:# (1) Save game

# Version: Sept 20, 2012# Program features:# (1) Load game# (2) Show game world

Game.py

# Version: Oct 2, 2012# Program features:# (1) Save game

# Version: Sept 20, 2012# Program features:# (1) Load game# (2) Show game world

Game.Oct2

Make new backup file

# Version: Sept 20, 2012# Program features:# (1) Load game# (2) Show game world

Game.Sept20

James Tam

Backing Up Your Work

• Do this every time that you have completed a significant milestone in your program.– What is ‘significant’ will vary between people but make sure you do this

periodically.

• Ideally the backup file should be stored in a separate directory/folder (better yet on a separate device and/or using an online method such as an email attachment or ‘cloud’ storage).

• Common student reason for not making copies: “Backing up files takes time!”

• Compare: – Time to copy a file: ~10 seconds (generous in some cases).

– Time to re-write your program to implement the feature again: 10 minutes (might be overly conservative in some cases).

• Failing to backup your work is not a sufficient reason for receiving an extension.

Page 38: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 38

James Tam

Types Of Documentation

• Header documentation

• Inline documentation

James Tam

Header Documentation

• Provided at the beginning of the program.

• It describes in a high-level fashion the features of the program as a whole (major features without a great deal of detail).

# HEADER DOCUMENTATION# Word Processor features: print, save, spell check, insert images etc.

<program statement><program statement>

Page 39: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 39

James Tam

Inline Documentation

• Provided throughout the program.

• It describes in greater detail the specific features of a part of the program (function, loop, branch, group of related statements).

# Documentation: Saving documents# ‘save’: save document under the current name# ‘save as’ rename the document to a new name<program statement><program statement>

# Documentation: Spell checking# The program can spell check documents using the following English variants:# English (British), English (American), English (Canadian)<program statement><program statement>

James Tam

Over-Documenting A Program

• Except for very small programs documentation should be included

• However it is possible to over-document a program

• (Stating the obvious)num = num + 1 # Variable num increased by one

• (Documentation can be useful in this case)lastRow = SIZE – 1 # Row numbering begins at zero

Page 40: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 40

James Tam

Section Summary: Documentation

• What is program documentation

• What sort of documentation should be written for your programs

• How program documentation ties into program versioning and backups

James Tam

Prewritten Python Functions

• Python comes with many functions that are a built in part of the language e.g., ‘print()’, ‘input()’

• (If a program needs to perform a common task e.g., finding the absolute value of a number, then you should first check if the function has already been implemented).

• For a list of all prewritten Python functions.– https://docs.python.org/3/library/functions.html

– Note: some assignments may have specific instructions which list functions you are allowed to use (assume that you cannot use a function unless: (1) it’s extremely common e.g., input and output (2) it’s explicitly allowed )

– Read the requirements specific to each assignment

– When in doubt don’t use the pre-created code either ask or don’t use it and write the code yourself. (If you end up using a pre-created function rather than writing the code yourself you could receive no credit).

Page 41: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 41

James Tam

Types Of Programming Errors

1. Syntax/translation errors

2. Runtime errors

3. Logic errors

James Tam

1. Syntax/ Translation Errors

• Each language has rules about how statements are to be structured.

• An English sentence is structured by the grammar of the English language:– My cat sleeps the sofa.

• Python statements are structured by the syntax of Python:5 = num

Grammatically incorrect (FYI: missing the preposition to

introduce the prepositional phrase ‘the sofa’)

Syntactically incorrect: the left hand side of an assignment

statement cannot be a literal (unnamed) constant (or variable

names cannot begin with a number)

Page 42: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 42

James Tam

1. Syntax/ Translation Errors (2)

• The translator checks for these errors when a computer program is translated to machine language.

James Tam

1. Some Common Syntax Errors

• Miss-spelling names of keywords– e.g., ‘primt()’ instead of ‘print()’

• Forgetting to match closing quotes or brackets to opening quotes or brackets e.g., print(“hello)

• Using variables before they’ve been named (allocated in memory).

• Program name: error_syntax.pyprint(num)

num = 123

Page 43: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 43

James Tam

2. Runtime Errors

• Occur as a program is executing (running).

• The syntax of the language has not been violated (each statement follows the rules/syntax).

• During execution a serious error is encountered that causes the execution (running) of the program to cease.

• With a language like Python where translation occurs just before execution (interpreted) the timing of when runtime errors appear won’t seem different from a syntax error.

• But for languages where translation occurs well before execution (compiled) the difference will be quite noticeable.

• A common example of a runtime error is a division by zero error.– We will talk about other run time errors later.

James Tam

2. Runtime Error1: An Example

• Program name: error_runtime.py

num2 = int(input("Type in a number: "))

num3 = int(input("Type in a number: "))

num1 = num2 / num3 # When zero is entered

print(num1)

1 When ‘num3’ contains zero

Page 44: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 44

James Tam

3. Logic Errors

• The program has no syntax errors.• The program runs from beginning to end with no runtime

errors.• But the logic of the program is incorrect (it doesn’t do what it’s

supposed to and may produce an incorrect result).• Program name: error_logic.py

print ("This program will calculate the area of a rectangle")

length = int(input("Enter the length: "))

width = int(input("Enter the width: "))

area = length + width

print("Area: ", area)

James Tam

Some Additional Examples Of Errors

• All external links (not produced by your instructor):– http://level1wiki.wikidot.com/syntax-error

– http://www.cs.bu.edu/courses/cs108/guides/debug.html

– http://cscircles.cemc.uwaterloo.ca/1e-errors/

– http://www.greenteapress.com/thinkpython/thinkCSpy/html/app01.html

Page 45: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 45

James Tam

Practice Exercise

• (This one will be an ongoing task).

• As you write you programs, classify the type of errors that you encounter as: syntax/translation, runtime or logical.

James Tam

Section Summary: The 3 Error Types

• What are different categories of errors

• What is the difference between the categories of errors and being able to identify examples of each

Page 46: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 46

James Tam

Layout And Formatting

• Similar to written text: all computers programs (except for the smallest ones) should use white space to group related instructions and to separate different groups.# These are output statements to prompt for user information

Instruction1

Instruction2

Instruction3

Instruction4

# These are instructions to perform calculations on the user

# input and display the results

Instruction5

Instruction6

James Tam

Layout And Formatting: Example

Page 47: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 47

James Tam

Section Summary: Layout And Formatting

• Why is layout and formatting of programs important, how to do it

James Tam

Extra: In Case You’re Interested

• Different languages may have unique style guides

• Here is the style guide for Python:– http://legacy.python.org/dev/peps/pep-0008/

Page 48: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 48

James Tam

After This Section You Should Now Know

• How to create, translate and run Python programs.

• Variables:– What they are used for

– How to access and change the value of a variable

– Conventions for naming variables

– How information is stored differently with different types of variables, converting between types

• Output:– How to display messages that are a constant string or the value stored in

a memory location (variable or constant) onscreen with print()

• How/why use triple quoted output

• How to format output through:– The use of format specifiers

– Escape codes

James Tam

After This Section You Should Now Know (2)

• Named constants:– What are named constants and how they differ from regular variables

– What are the benefits of using a named constant vs. unnamed constant

• What are the Python operators for common mathematical operations

• How do the precedence rules/order of operation work in Python

• Input:– How to get a program to acquire and store information from the user of

the program

• What is program documentation and what are some common things that are included in program documentation

• The existence of prewritten Python functions and how to find descriptions of them

Page 49: Getting Started With Python Programmingpages.cpsc.ucalgary.ca/~tamj/2016/231F/notes/pdf/... · 9/15/2016 Programming introduction 1 Getting Started With Python Programming •Tutorial:

9/15/2016

Programming introduction 49

James Tam

After This Section You Should Now Know (3)

• What are the three programming errors, when do they occur and what is the difference between each one

• How to use formatting to improve the readability of your program