Download Seminar 0 - STWing@UPenn

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Programming Seminar 2009
Night 0
Why we’re holding this seminar
• You’re probably not a computer science major
– Or even anything remotely close (e.g. EE)
• We think that programming is an important
skill
– Useful (sometimes)
– Interesting (often)
• This will be a combination of practice, theory,
and examples.
What I’m assuming about you
• You have (almost) no experience writing code
of any sort.
• The words [“syntax”, “variable”, ”function”]
might mean something.
– If you took certain math or linguistics courses.
• The methodology for building a program (or
parts of it) is somewhat mysterious
So what is a “program” anyway?
• A number
• A set of instructions and data
– For a computer to execute
• Human-readable source code
– Readable for some humans, anyway
• A (hopefully) consistent way to accomplish
some task
Enter Python
• Python is a new, friendly, language with an
amazing library of functionality
• Most of the text is English, with a few
abbreviations and some other characters
• We will be using Python 3
– Unless the computers really don’t want to, in
which case we will be using Python 2.6
• Or in the case they don’t have that either, Python 2.5
Let’s get started!
• The first item for action is running the Python
interpreter.
– Or perhaps IDLE, a Python IDE
• You can do this by finding Python in the
system menu, or by starting a terminal and
typing “python”
• If you see a line beginning with >>>, you are
fine.
• All together? Good.
As tradition dictates…
• Type
>>> print(“Hello World!”)
• And Python prints “Hello World!” to the
console window.
– Don’t you feel accomplished?
• Here’s what you’ve learned:
>>> print(“(something)”)
prints (something)
• You can put two strings together with +
On Statements
• In general, code falls into one of four
categories:
– Declaration – saying that something exists
– Assignment – telling the program to remember a
value
– Definition – detailing how something works
– Control – ordering the program what to do next
Assignments
• Try telling Python
>>> sentence = “Arma virumque
cano”
>>> print(sentence)
• This does exactly what you might expect
>>> print(“Arma virumque cano”)
• Both print the first few words of the Aeneid
– If you didn’t expect this, what did you expect?
• Every time I say you might have expected something, please
speak up if you didn’t!
Assignments, continued
• Try
>>> x = 3
>>> print(x * x)
– You might have guessed that this prints the
number 9 to the console
• What do you think these lines do?
>>> x = 4
>>> y = 3
>>> print(x * y – (x + y))
So Python can do math…
• Congratulations! Your computer can be used
as a (very expensive) calculator.
• Most arithmetic operators make sense
–+-/*
– This works for real numbers (e.g. 1.56), as well.
• Quick! What is 1234*9876?
…But programming math is (generally)
not real math
• If you say “x = 5” when proving that the natural
numbers are in bijection with the rationals, x is
always 5.
• In Python (and most other programming
languages)
>>> x = 5
>>> x = 6
>>> print(“x = “ + x)
prints 6
Assignment is storage
• Remember when I said that assignment tells
the program to remember a value?
>>> x = 5
tells Python “x has the value 5”
– And x holds the number 5
• But this value can change.
>>> x = x + 1
increases the value of x from 5 to 6.
Wait – what!?
• x = x + 1 doesn’t even make sense!
– Subtract x from both sides and you get 0 = 1.
• But remember, programming “math” is not math
• x = x + 1 can be read
– “Increment x by 1”
– Find the value I previously assigned to x. Add 1 to
it. Now assign the new value to x.
Other ways to assign
>>> word = “coconut”
tells Python to remember that word represents
the value “coconut”
• Which variables represent what ?
– What is the output?
>>>
>>>
>>>
>>>
pi = 3.14
radius = 5
area = pi * radius * radius
print(area)
So what good is any of this?
• It gets a little more interesting when we have
user input
• We do this with the input() function.
– In previous versions it was raw_input()
• We can make programs interactive!
>>> name = input(“What is your name?”)
>>> print(“Hello, ” + name + “!”)
Okay, but no program I’ve even used
does only one thing every time I run it
• Good point.
• Enter Control statements
• Conditional execution:
– If condition is true, do something, otherwise do
something else
– While condition, do something, and continue to
do that something until condition is false.
– For each item in a collection, do something
If statements
>>> number = int(input(“Enter a number: ”))
>>> if number > 0:
>>>
print(“A square with side length”,
number, “ has area ”, number * number)
>>> else:
>>>
print(“I need a positive number!”)
The general format is
if condition:
do_something()
else:
do_something_else()
For statements
>>> for item in (2,3,5,7,11,13):
>>>
print(item * item, “ has and odd
number of factors.” )
• The general form is
for var in collection:
do_something()
A few more examples…
>>> limit = int(input(“Give me an
upper limit: ”))
>>> if limit < 0:
>>>
print(“Too low!”)
>>> elif limit > 50:
>>>
print(“Too high!”)
>>> else:
>>>
for i in range(limit):
>>>
print(i, “squared is ”,
i*i)
…examples
>>> sentence = input(“A
sentence, please”)
>>> words = 1
>>> for c in sentence:
>>>
if c == ‘ ’:
>>>
words = words + 1
>>> print(“The sentence you
entered had”, words, “words”)
Your turn!
• Write a program to count the number of vowels
in a sentence which the user inputs
• Write a guessing game that gives the player 5
chances to guess a number correctly
– We will make the number’s selection random later
• Write a simple calculator; that is, a program
which asks for two numbers and whether it
should add, subtract, multiply, or divide them.
The program should then output the calculation
and its result.
More about modules
• As previously stated, Python has an extensive,
useful library of functionality
• Some of this functionality is included by
default
– E.g. abs(), print(), range(),…
• The rest is in a number of modules
– Math-related stuff is in the math module.
>>>
>>>
import math
print(math.sqrt(5))
Modules, continued
• Can also import specific functions
>>> import cos from math
>>> from math import atan
• There is a module for almost everything
– Want to enter passwords? Import getpass
– Want OS functionality? Import os, sys
– Want to handle options passed on the command
line? Import optparse
On Functions
• Certain pieces of code that are used
repeatedly in a succinct fashion
• Input(), split(), abs(), print()
• Functions run specified code every time we
“call” them.
Programming is not Math, revisited
• Programming functions are not like math
functions!
– The return value can change
• Input() rarely returns the same result
– Functions often do some action each time we
“call” them
• Print() prints output to the screen
– We don’t evaluate functions, we “call” them to do
their job
Defining a Function
>>> def name(arguments):
>>>
…actions…
• Here is an example:
>>> def square(n):
>>>
print(n*n)
Your turn, once more
• Create a function that will print a row of n
stars (*), with n passed as an argument
• Use this function to create a function that will
print an isosceles right triangle of stars
• Write a function fib(n), which prints the nth
Fibonacci number. The first and second
Fibonacci numbers are both considered to be
1
– Do not use recursion, if you know what it is.