Placeholder Image

字幕列表 影片播放

  • The following content is provided under a Creative

  • Commons license.

  • Your support will help MIT OpenCourseWare

  • continue to offer high-quality, educational resources for free.

  • To make a donation, or view additional materials

  • from hundreds of MIT courses, visit MIT OpenCourseWare

  • at ocw.mit.edu.

  • ANA BELL: All right.

  • Let's begin.

  • As I mentioned before, this lecture

  • will be recorded for OCW.

  • Again, in future lectures, if you

  • don't want to have the back of your head show up,

  • just don't sit in this front area here.

  • First of all, wow, what a crowd, you guys.

  • We're finally in 26-100.

  • 6.0001 made it big, huh?

  • Good afternoon and welcome to the very first class of 6.0001,

  • and also 600, this semester.

  • My name is Ana Bell.

  • First name, Ana.

  • Last name, Bell.

  • I'm a lecturer in the EECS Department.

  • And I'll be giving some of the lectures for today,

  • along with later on in the term, Professor Eric Grimson, who's

  • sitting right down there, will be giving some of the lectures,

  • as well.

  • Today we're going to go over some basic administrivia,

  • a little bit of course information.

  • And then, we're going to talk a little bit

  • about what is computation?

  • We'll discuss at a very high level

  • what computers do just to make sure we're all

  • on the same page.

  • And then, we're going to dive right into Python basics.

  • We're going to talk a little bit about mathematical operations

  • you can do with Python.

  • And then, we're going to talk about Python variables

  • and types.

  • As I mentioned in my introductory email, all

  • the slides and code that I'll talk about during lectures

  • will be up before lecture, so I highly

  • encourage you to download them and to have them open.

  • We're going to go through some in-class exercises which will

  • be available on those slides.

  • And it's fun to do.

  • And it's also great if could take notes about the code just

  • for future reference.

  • It's true.

  • This is a really fast-paced course,

  • and we ramp up really quickly.

  • We do want to position you to succeed in this course.

  • As I was writing this, I was trying

  • to think about when I was first starting

  • to program what helped me get through my very

  • first programming course.

  • And this is really a good list.

  • The first thing was I just read the psets as soon

  • as they came out, made sure that the terminology just sunk in.

  • And then, during lectures, if the lecturer

  • was talking about something that suddenly I remembered,

  • oh, I saw that word in the pset and I didn't know what it was.

  • Well, hey, now I know what it is.

  • Right?

  • So just give it a read.

  • You don't need to start it.

  • If you're new to programming, I think the key word is practice.

  • It's like math or reading.

  • The more you practice, the better you get at it.

  • You're not going to absorb programming

  • by watching me write programs because I already know how

  • to program.

  • You guys need to practice.

  • Download the code before lecture.

  • Follow along.

  • Whatever I type, you guys can type.

  • And I think, also, one of the big things

  • is if you're new to programming, you're

  • kind of afraid that you're going to break your computer.

  • And you can't really do that just by running Anaconda

  • and typing in some commands.

  • So don't be afraid to just type some stuff in

  • and see what it does.

  • Worst case, you just restart the computer.

  • Yeah.

  • That's probably the big thing right there.

  • I should have probably highlighted it,

  • but don't be afraid.

  • Great.

  • So this is pretty much a roadmap of all of 6.0001 or 600

  • as I've just explained it.

  • There's three big things we want to get out of this course.

  • The first thing is the knowledge of concepts,

  • which is pretty much true of any class that you'll take.

  • The class will teach you something through lectures.

  • Exams will test how much you know.

  • This is a class in programming.

  • The other thing we want you to get out of it

  • is programming skills.

  • And the last thing, and I think this

  • is what makes this class really great,

  • is we teach you how to solve problems.

  • And we do that through the psets.

  • That's really how I feel the roadmap of this course

  • looks like.

  • And underlying all of these is just practice.

  • You have to just type some stuff away and code a lot.

  • And you'll succeed in this course, I think.

  • OK.

  • So what are the things we're going to learn in this class?

  • I feel like the things we're going learn in this class

  • can be divided into basically three different sections.

  • The first one is related to these first two items here.

  • It's really about learning how to program.

  • Learning how to program, part of it

  • is figuring out what objects to create.

  • You'll learn about these later.

  • How do you represent knowledge with data structures?

  • That's sort of the broad term for that.

  • And then, as you're writing programs,

  • you need to-- programs aren't just linear.

  • Sometimes programs jump around.

  • They make decisions.

  • There's some control flow to programs.

  • That's what the second line is going to be about.

  • The second big part of this course

  • is a little bit more abstract, and it

  • deals with how do you write good code, good style,

  • code that's readable.

  • When you write code, you want to write it such

  • that-- you're in big company, other people will read it,

  • other people will use it, so it has

  • to be readable and understandable by others.

  • To that end, you need to write code

  • that's well organized, modular, easy to understand.

  • And not only that, not only will your code

  • be read by other people, but next year, maybe,

  • you'll take another course, and you'll

  • want to look back at some of the problems

  • that you wrote in this class.

  • You want to be able to reread your code.

  • If it's a big mess, you might not be able to understand--

  • or reunderstand-- what you were doing.

  • So writing readable code and organizing code

  • is also a big part.

  • And the last section is going to deal with-- the first two

  • are actually part of the programming in Introduction

  • to Programming and Computer Science in Python.

  • And the last one deals mostly with the computer science part

  • in Introduction to Programming and Computer Science in Python.

  • We're going to talk about, once you have learned

  • how to write programs in Python, how do

  • you compare programs in Python?

  • How do you know that one program is better than the other?

  • How do you know that one program is

  • more efficient than the other?

  • How do you know that one algorithm

  • is better than the other?

  • That's what we're going to talk about in the last part

  • of the course.

  • OK.

  • That's all for the administrative part

  • of the course.

  • Let's start by talking at a high level what does a computer do.

  • Fundamentally, it does two things.

  • One, performs calculations.

  • It performs a lot of calculations.

  • Computers these days are really, really fast,

  • a billion calculations per second is probably not far off.

  • It performs these calculations and it

  • has to store them somewhere.

  • Right?

  • Stores them in computer memory.

  • So a computer also has to remember results.

  • And these days, it's not uncommon to find computers

  • with hundreds of gigabytes of storage.

  • The kinds of calculations that computers do,

  • there are two kinds.

  • One are calculations that are built into the language.

  • These are the very low level types

  • of calculations, things like addition,

  • subtraction, multiplication, and so on.

  • And once you have a language that

  • has these primitive calculation types, you, as a programmer,

  • can put these types together and then define

  • your own calculations.

  • You can create new types of calculations.

  • And the computer will be able to perform those, as well.

  • I think, one thing I want to stress--

  • and we're going to come back to this

  • again during this entire lecture, actually--

  • is computers only know what you tell them.

  • Computers only do what you tell them to do.

  • They're not magical.

  • They don't have a mind.

  • They just know how to perform calculations really,

  • really quickly.

  • But you have to tell them what calculations to do.

  • Computers don't know anything.

  • All right.

  • We've come to that.

  • Let's go into the types of knowledge.

  • The first type of knowledge is declarative knowledge.

  • And those are things like statements of fact.

  • And this is where my email came into play.

  • If you read it all the way to the bottom,

  • you would have entered a raffle.

  • So a statement of fact for today's lecture

  • is, someone will win a prize before class ends.

  • And the prize was a Google Cardboard.

  • Google state-of-the-art virtual reality glasses.

  • And I have them right here.

  • Yea.

  • I delivered on my promise.

  • That's a statement of fact.

  • So pretend I'm a machine.

  • OK?

  • I don't know anything except what you tell me.

  • I don't know.

  • I know that you tell me this statement.

  • I'm like, OK.

  • But how is someone going to win a Google Cardboard

  • before class ends, right?

  • That's where imperative knowledge comes in.

  • Imperative knowledge is the recipe, or the how-to,

  • or the sequence of steps.

  • Sorry.

  • That's just my funny for that one.

  • So the sequence of steps is imperative knowledge.

  • If I'm a machine, you need to tell me

  • how someone will win a Google Cardboard before class.

  • If I follow these steps, then technically,

  • I should reach a conclusion.

  • Step one, I think we've already done that.

  • Whoever wanted to sign up has signed up.

  • Now I'm going to open my IDE.

  • I'm just basically being a machine

  • and following the steps that you've told me.

  • The IDE that we're using in this class is called Anaconda.

  • I'm just scrolling down to the bottom.

  • Hopefully, you've installed it in problem set zero.

  • I've opened my IDE.

  • I'm going to follow the next set of instructions.

  • I'm going to choose a random number between the first

  • and the nth responder.

  • Now, I'm going to actually use Python to do this .

  • And this is also an example of how just

  • a really simple task in your life,

  • you can use computers or programming to do that.

  • Because if I chose a random number,

  • I might be biased because, for example,

  • I might like the number 8.

  • To choose a random number, I'm going to go and say, OK,

  • where's the list of responders?

  • It starts at 15.

  • Actually, it starts at 16 because that's me.

  • We're going to choose a random number between 16

  • and the end person 266.

  • Oh, we just got-- oh.

  • OK.

  • OK.

  • I'm going to cut it off right here.

  • 271.

  • OK.

  • 16 and 271.

  • Perfect.

  • OK.

  • I'm going to choose a random number.

  • I'm going to go to my IDE.

  • And you don't need to know how to do this yet,

  • but by the end of this class, you will.

  • I'm just going to use Python.

  • I'm just going to get the random number package that's going

  • to give me a random number.

  • I'm going to say random.randint.

  • And I'm going to choose a random number between 16 and 272,

  • OK.

  • 75.

  • OK.

  • Great.

  • I chose a random number.

  • And I'm going to find the number in the responder's sheet.

  • What was the number again?

  • Sorry.

  • 75.

  • OK.

  • Up we go.

  • There we go.

  • Lauren Z-O-V. Yeah.

  • Nice.

  • You're here.

  • Awesome.

  • All right.

  • That's an example of me being a machine and also,

  • at the same time, using Python in my everyday life,

  • just lecturing, to find a random number.

  • Try to use Python wherever you can.

  • And that just gives you practice.

  • That was fun.

  • But we're at MIT.

  • We're MIT students.

  • And we love numbers here at MIT.

  • Here's a numerical example that shows

  • the difference between declarative and imperative

  • knowledge.

  • An example of declarative knowledge

  • is the square root of a number x is y such that y times y

  • is equal to x.

  • That's just a statement of fact It's true.

  • Computers don't know what to do with that.

  • They don't know what to do with that statement.

  • But computers do know how to follow a recipe.

  • Here's a well-known algorithm.

  • To find the square root of a number x,

  • let's say x is originally 16, if a computer follows

  • this algorithm, it's going to start with a guess, g,

  • let's say, 3.

  • We're trying to find the square root of 16.

  • We're going to calculate g times g is 9.

  • And we're going to ask is if g times g

  • is close enough to x, then stop and say, g is the answer.

  • I'm not really happy with 9 being really close to 16.

  • So I'm going to say, I'm not stopping here.

  • I'm going to keep going.

  • If it's not close enough, then I'm

  • going to make a new guess by averaging g and x over g.

  • That's x over g here.

  • And that's the average over there.

  • And the new average is going to be my new guess.

  • And that's what it says.

  • And then, the last step is using the new guess,

  • repeat the process.

  • Then we go back to the beginning and repeat the whole process

  • over and over again.

  • And that's what the rest of the rows do.

  • And you keep doing this until you decide

  • that you're close enough.

  • What we saw for the imperative knowledge

  • in the previous numerical example

  • was the recipe for how to find the square root of x.

  • What were the three parts of the recipe?

  • One was a simple sequence of steps.

  • There were four steps.

  • The other was a flow of control, so there were

  • parts where we made decisions.

  • Are we close enough?

  • There were parts where we repeated some steps.

  • At the end, we said, repeat steps 1, 2, 3.

  • That's the flow of control.

  • And the last part of the recipe was a way to stop.

  • You don't want a program that keeps going and going.

  • Or for a recipe, you don't want to keep baking bread forever.

  • You want to stop at some point.

  • Like 10 breads is enough, right?

  • So you have to have a way of stopping.

  • In the previous example, the way of stopping

  • was that we decided we were close enough.

  • Close enough was maybe being within .01, .001,

  • whatever you pick.

  • This recipe is there for an algorithm.

  • In computer science speak, it's going to be an algorithm.

  • And that's what we're going to learn about in this class.

  • We're dealing with computers.

  • And we actually want to capture a recipe

  • inside a computer, a computer being a mechanical process.

  • Historically, there were two different types of computers.

  • Originally, there were these things

  • called fixed-program computers.

  • And I'm old enough to have used something

  • like this, where there's just numbers and plus, minus,

  • multiplication, divide, and equal.

  • But calculators these days are a lot more complicated.

  • But way back then, an example of a fixed-program computer

  • is this calculator.

  • It only knows how to do addition, multiplication,

  • subtraction, division.

  • If you want to plot something, you can't.

  • If you want to go on the internet, send email with it,

  • you can't.

  • It can only do this one thing.

  • And if you wanted to create a machine that did another thing,

  • then you'd have to create another fixed-program computer

  • that did a completely separate test.

  • That's not very great.

  • That's when stored-program computers came into play.

  • And these were machines that could store

  • a sequence of instructions.

  • And these machines could execute the sequence of instructions.

  • And you could change the sequence of instructions

  • and execute this different sequence of instructions.

  • You could do different tasks in the same machine.

  • And that's the computer as we know it these days.

  • The central processing unit is where all of these decisions

  • get made.

  • And these are all the peripherals.

  • The basic machine architecture-- at the heart of every computer

  • there's just this basic architecture--

  • and it contains, I guess, four main parts.

  • The first is the memory.

  • Input and output is the other one.

  • The ALU is where all of the operations are done.

  • And the operations that the ALU can do

  • are really primitive operations, addition, subtraction,

  • and so on.

  • What the memory contains is a bunch of data

  • and your sequence of instructions.

  • Interacting with the Arithmetic Logic Unit is the Control Unit.

  • And the Control Unit contains one program counter.

  • When you load a sequence of instructions,

  • the program counter starts at the first sequence.

  • It starts at the sequence, at the first instruction.

  • It gets what the instruction is, and it sends it to the ALU.

  • The ALU asks, what are we doing operations on here?

  • What's happening?

  • It might get some data.

  • If you're adding two numbers, it might get two numbers

  • from memory.

  • It might do some operations.

  • And it might store data back into memory.

  • And after it's done, the ALU is going to go back,

  • and the program counter is going to increase

  • by 1, which means that we're going

  • to go to the next sequence in the instruction set.

  • And it just goes linearly, instruction by instruction.

  • There might be one particular instruction

  • that does some sort of test.

  • It's going to say, is this particular value

  • greater or equal to or the same as this other particular value?

  • That's a test, an example of a test.

  • And the test is going to either return true or false.

  • And depending on the result of that test,

  • you might either go to the next instruction,

  • or you might set the program counter

  • to go all the way back to the beginning, and so on.

  • You're not just linearly stepping

  • through all the instructions.

  • There might be some control flow involved,

  • where you might skip an instruction,

  • or start from the beginning, or so on.

  • And after you're done, when you finished

  • executing the last instruction, then you

  • might output something.

  • That's really the basic way that a computer works.

  • Just to recap, you have the stored program computer

  • that contains these sequences of instructions.

  • The primitive operations that it can do

  • are addition, subtraction, logic operations, tests--

  • which are something equal to something else, something

  • less than, and so on-- and moving data,

  • so storing data, moving data around, and things like that.

  • And the interpreter goes through every instruction

  • and decides whether you're going to go to the next instruction,

  • skip instructions, or repeat instructions, and so on.

  • So we've talked about primitives.

  • And in fact, Alan Turing, who was a really great computer

  • scientist, he showed that you can compute anything

  • using the six primitives.

  • And the six primitives are move left, move right, read, write,

  • scan, and do nothing.

  • Using those six instructions and the piece of tape,

  • he showed that you can compute anything.

  • And using those six instructions,

  • programming languages came about that

  • created a more convenient set of primitives.

  • You don't have to program in only these six commands.

  • And one interesting thing, or one really important thing,

  • that came about from these six primitives

  • is that if you can compute something in Python,

  • let's say-- if you write a program that computes something

  • in Python, then, in theory, you can

  • write a program that computes the exact same thing

  • in any other language.

  • And that's a really powerful statement.

  • Think about that today when you review your slides.

  • Think about that again.

  • That's really powerful.

  • Once you have your set of primitives

  • for a particular language, you can start creating expressions.

  • And these expressions are going to be

  • combinations of the primitives in the programming language.

  • And the expressions are going to have some value.

  • And they're going up some meaning in the programming

  • language.

  • Let's do a little bit of a parallel with English

  • just so you see what I mean.

  • In English, the primitive constructs

  • are going to be words.

  • There's a lot of words in the English language.

  • Programming languages-- in Python, there are primitives,

  • but there aren't as many of them.

  • There are floats, Booleans, these

  • are numbers, strings, and simple operators,

  • like addition, subtraction, and so on.

  • So we have primitive constructs.

  • Using these primitive constructs,

  • we can start creating, in English, phrases, sentences,

  • and the same in programming languages.

  • In English, we can say something like, "cat, dog, boy.

  • That, we say, is not syntactically valid.

  • That's bad syntax.

  • That's noun, noun, noun.

  • That doesn't make sense.

  • What does have good syntax in English is noun, verb, noun.

  • So, "cat, hugs boy" is syntactically valid.

  • Similarly, in a programming language,

  • something like this-- in Python, in this case-- a word

  • and then the number five doesn't really make sense.

  • It's not syntactically valid.

  • But something like operator, operand, operator is OK.

  • So once you've created these phrases, or these expressions,

  • that are syntactically valid, you

  • have to think about the static semantics of your phrase,

  • or of your expression.

  • For example, in English, "I are hungry" is good syntax.

  • But it's weird to say.

  • We have a pronoun, a verb, and an adjective, which

  • doesn't really make sense.

  • "I am hungry" is better.

  • This does not have good static semantics.

  • Similarly, in programming languages--

  • and you'll get the hang of this the more

  • you do it-- something like this, "3.2 times 5, is OK.

  • But what does it mean?

  • What's the meaning to have a word added to a number?

  • There's no meaning behind that.

  • Its syntax is OK, because you have

  • operator, operand, operator.

  • But it doesn't really make sense to add a number to a word,

  • for example.

  • Once you have created these expressions that

  • are syntactically correct and static, semantically correct,

  • in English, for example, you think about the semantics.

  • What's the meaning of the phrase?

  • In English, you can actually have more than one

  • meaning to an entire phrase.

  • In this case, "flying planes can be dangerous"

  • can have two meanings.

  • It's the act of flying a plane is dangerous,

  • or the plane that is in the air is dangerous.

  • And this might be a cuter example.

  • "This reading lamp hasn't uttered a word

  • since I bought it.

  • What's going on?"

  • So that has two meanings.

  • It's playing on the word "reading lamp."

  • That's in English.

  • In English, you can have a sentence

  • that has more than one meaning, that's

  • syntactically correct and static, semantically correct.

  • But in programming languages, the program that you write,

  • the set of instructions that you write, only has one meaning.

  • Remember, we're coming back to the fact

  • that the computer only does what you tell it to do.

  • It's not going to suddenly decide

  • to add another variable for some reason.

  • It's just going to execute whatever statements you've

  • put up.

  • In programming languages, there's only one meaning.

  • But the problem that comes into play in programming languages

  • is it's not the meaning that you might have

  • intended, as the programmer.

  • That's where things can go wrong.

  • And there's going to be a lecture

  • on debugging a little bit later in the course.

  • But this is here just to tell you

  • that if you see an error pop up in your program,

  • it's just some text that says, error.

  • For example, if we do something like this,

  • this is syntactically correct.

  • Incorrect.

  • Syntactically incorrect.

  • See?

  • There's some angry text right here.

  • What is going on?

  • The more you program, the more you'll

  • get the hang of reading these errors.

  • But this is basically telling me the line

  • that I wrote is syntactically incorrect.

  • And it's pointing to the exact line and says, this is wrong,

  • so I can go back and fix it as a programmer.

  • Syntax errors are actually really easily caught by Python.

  • That was an example of a syntax error.

  • Static semantic errors can also be

  • caught by Python as long as, if your program has some decisions

  • to make, as long as you've gone down the branch where

  • the static semantic error happens.

  • And this is probably going to be the most frustrating one,

  • especially as you're starting out.

  • The program might do something different than what

  • you expected it to do.

  • And that's not because the program suddenly-- for example,

  • you expected the program to give you an output of 0

  • for a certain test case, and the output that you got was 10.

  • Well, the program didn't suddenly

  • decide to change its answer to 10.

  • It just executed the program that you wrote.

  • That's the case where the program gave you

  • a different answer than expected.

  • Programs might crash, which means they stop running.

  • That's OK.

  • Just go back to your code and figure out what was wrong.

  • And another example of a different meaning

  • than what you intended was maybe the program won't stop.

  • It's also OK.

  • There are ways to stop it besides restarting

  • the computer.

  • So then Python programs are going

  • to be sequences of definitions and commands.

  • We're going to have expressions that are going to be evaluated

  • and commands that tell the interpreter to do something.

  • If you've done problem set 0, you'll

  • see that you can type commands directly

  • in the shell here, which is the part on the right where

  • I did some really simple things, 2 plus 4.

  • Or you can type commands up in here, on the left-hand side,

  • and then run your program.

  • Notice that, well, we'll talk about this-- I

  • won't talk about this now.

  • But these are-- on the right-hand side, typically,

  • you write very simple commands just if you're

  • testing something out.

  • And on the left-hand side here in the editor,

  • you write more lines and more complicated programs.

  • Now we're going to start talking about Python.

  • And in Python, we're going to come back to this,

  • everything is an object.

  • And Python programs manipulate these data objects.

  • All objects in Python are going to have a type.

  • And the type is going to tell Python the kinds of operations

  • that you can do on these objects.

  • If an object is the number five, for example,

  • you can add the number to another number,

  • subtract the number, take it to the power of something,

  • and so on.

  • As a more general example, for example, I am a human.

  • So that's my type.

  • And I can walk, speak English, et cetera.

  • Chewbacca is going to be a type Wookie.

  • He can walk, do that sound that I can't do.

  • He can do that, but I can't.

  • I'm not even going to try, and so on.

  • Once you have these Python objects,

  • everything is an object in Python.

  • There are actually two types of objects.

  • One are scalar objects.

  • That means these are very basic objects in Python from which

  • everything can be made.

  • These are scalar objects.

  • That can't be subdivided.

  • The other type of object is a non-scalar object.

  • And these are objects that have some internal structure.

  • For example, the number five is a scalar

  • object because it can't be subdivided.

  • But a list of numbers, for example, 5, 6,

  • 7,8, is going to be a non-scalar object

  • because you can subdivide it.

  • You can subdivide it into-- you can find parts to it.

  • It's made up of a sequence of numbers.

  • Here's the list of all of the scalar objects in Python.

  • We have integers, for example, all of the whole numbers.

  • Floats, which are all of the real numbers, anything

  • with a decimal.

  • Bools are Booleans.

  • There's only two values to Booleans.

  • That's True and False.

  • Note the capitalization, capital T and capital F.

  • And this other thing called NoneType.

  • It's special.

  • It has only one value called None.

  • And it represents the absence of a type.

  • And it sometimes comes in handy for some programs.

  • If you want to find the type of an object,

  • you can use this special command called type.

  • And then in the parentheses, you put down

  • what you want to find the type of.

  • You can write into the shell "type of 5,"

  • and the shell will tell you, that's an integer.

  • If you happen to want to convert between two different types,

  • Python allows you to do that.

  • And to do that, you put the type that you

  • want to convert to right before the object

  • that you want to convert to.

  • So float(3) will convert the integer 3 to the float 3.0.

  • And similarly, you can convert any float into an integer.

  • And converting to an integer just truncates.

  • It just takes away the decimal and whatever's

  • after it-- it does not round-- and keeps just the integer

  • part.

  • For this slide, I'm going to talk about it.

  • But if you'd like if you have the slides up,

  • go to go to this exercise.

  • And after I'm done talking about the slide,

  • we'll see what people think for that exercise.

  • One of the most important things that you

  • can do in basically any programming,

  • in Python also, is to print things out.

  • Printing out is how you interact with the user.

  • To print things out, you use the print command.

  • If you're in the shell, if you simply type "3 plus 2,"

  • you do see a value here.

  • Five, right?

  • But that's not actually printing something out.

  • And that becomes apparent when you actually

  • type things into the editor.

  • If you just do "3 plus 2," and you run the program-- that's

  • the green button here-- you see on the right-hand side here,

  • it ran my program.

  • But it didn't actually print anything.

  • If you type this into the console,

  • it does show you this value, but that's

  • just like peeking into the value for you as a programmer.

  • It's not actually printing it out to anyone.

  • If you want to print something out,

  • you have to use the print statement like that.

  • In this case, this is actually going to print this number

  • five to the console.

  • That's basically what it says.

  • It just tells you it's an interaction within the shell

  • only.

  • It's not interacting with anyone else.

  • And if you don't have any "Out," that

  • means it got printed out to the console.

  • All right.

  • We talked a little bit about objects.

  • Once you have objects, you can combine objects and operators

  • to form these expressions.

  • And each expression is going to have a value.

  • So an expression evaluates to a value.

  • The syntax for an expression is going

  • to be object, operator, object, like that.

  • And these are some operators you can do on ints and floats.

  • There's the typical ones, addition, subtraction,

  • multiplication, and division.

  • If, for the first three, the answer

  • that you get-- the type of the answer that you get--

  • is going to depend on the type of your variables.

  • If both of the variables of the operands are integers,

  • then the result you're going to get is of type integer.

  • But if at least one of them is a float, then

  • the result you're going to get is a float.

  • Division is a little bit special in that

  • no matter what the operands are, the result

  • is always going to be a float.

  • The other operations you can do, and these are also useful,

  • are the remainder, so the percent sign.

  • If you use the percent sign between two operands,

  • that's going to give you the remainder when you divide i

  • by j.

  • And raising something to the power of something else

  • is using the star star operator.

  • And i star stars j is going to take i to the power of j.

  • These operations have the typical precedence

  • that you might expect in math, for example.

  • And if you'd like to put precedence

  • toward some other operations, you

  • can use parentheses to do that.

  • All right.

  • So we have ways of creating expressions.

  • And we have operations we can do on objects.

  • But what's going to be useful is to be able to save values

  • to some name.

  • And the name is going to be something that you pick.

  • And it should be a descriptive name.

  • And when you save the value to a name,

  • you're going to be able to access that value later

  • on in your program.

  • And that's very useful.

  • To save a value to a variable name, you use the equal sign.

  • And the equal sign is an assignment.

  • It assigns the right-hand side, which

  • is a value, to the left-hand side, which

  • is going to be a variable name.

  • In this case, I assigned the float 3.14159

  • to the variable pi.

  • And in the second line, I'm going

  • to take this expression, 22 divided by 7,

  • I'm going to evaluate it.

  • It's going to come up with some decimal number.

  • And I'm going to save it into the variable pi_approx.

  • values are stored in memory.

  • And this assignment in Python, we

  • say the assignment binds the name to the value.

  • When you use that name later on in your program,

  • you're going to be referring to the value in memory.

  • And if you ever want to refer to the value

  • later on in your code, you just simply type

  • the name of the variable that you've assigned it to.

  • So why do we want to give names to expressions?

  • Well, you want to reuse the names instead of the values.

  • And it makes your code look a lot nicer.

  • This is a piece of code that calculates

  • the area of a circle.

  • And notice, I've assigned a variable pi to 3.14159.

  • I've assigned another variable called radius to be 2.2.

  • And then, later on in my code, I have another line

  • that says area-- this is another variable-- is

  • equal to-- this is an assignment--

  • to this expression.

  • And this expression is referring to these variable names, pi

  • and radius.

  • And it's going look up their values in memory.

  • And it's going to replace these variable names

  • with those values.

  • And it's going to do the calculation for me.

  • And in the end, this whole expression

  • is going to be replaced by one number.

  • And it's going to be the float.

  • Here's another exercise, while I'm talking about the slide.

  • I do want to make a note about programming versus math.

  • In math, you're often presented with a problem

  • that says, solve for x.

  • x plus y is equal to something something.

  • Solve for x, for example.

  • That's coming back to the fact that computers don't

  • know what to do with that.

  • Computers need to be told what to do.

  • In programming, if you want to solve for x,

  • you need to tell the computer exactly how to solve for x.

  • You need to figure out what formula

  • you need to give the computer in order to be

  • able to solve for x.

  • That means always in programming the right-hand side is

  • going to be an expression.

  • It's something that's going to be evaluated to a value.

  • And the left-hand side is always a variable.

  • It's going to be an assignment.

  • The equal sign is not like in math

  • where you can have a lot of things to the left

  • and a lot of things to the right of the equal sign.

  • There's only one thing to the left of the equal sign.

  • And that's going to be a variable.

  • An equal sign stands for an assignment.

  • Once we've created expressions, and we have these assignments,

  • you can rebind variable names using new assignment

  • statements.

  • Let's look at an example for that.

  • Let's say this is our memory.

  • Let's type back in the example with finding the radius.

  • Let's say, pi is equal to 3.14.

  • In memory, we're going to create this value 3.14.

  • We're going to bind it to the variable named pi.

  • Next line, radius is equal to 2.2.

  • In memory, we're creating this value 2.2.

  • And we're going to bind it to the variable named radius.

  • Then we have this expression here.

  • It's going to substitute the values for pi

  • from memory and the value for radius from memory.

  • It's going to calculate the value that this expression

  • evaluates to.

  • It's going to pop that into the memory.

  • And it's going to assign-- because we're

  • using the equal sign-- it's going

  • to assign that value to that variable area.

  • Now, let's say we rebind radius to be something else.

  • Radius i is bound to the value 2.2.

  • But when we do this line, radius is equal to radius plus 1,

  • we're going to take away the binding to 2.2.

  • We're going to do this calculation.

  • The new value is 3.2.

  • And we're going to rebind that value to that same variable.

  • In memory, notice we're still going

  • to have this value, 2.2, floating around.

  • But we've lost the handle for it.

  • There's no way to get it back.

  • It's just in memory sitting there.

  • At some point, it might get collected by what

  • we call the garbage collector.

  • In Python, And it'll retrieve these lost values,

  • and it'll reuse them for new values, and things like that.

  • But radius now points to the new value.

  • We can never get back 2.2.

  • And that's it.

  • The value of area-- notice, this is very important.

  • The value of area did not change.

  • And it did not change because these are all the instructions

  • we told the computer to do.

  • We just told it to change radius to be radius plus 1.

  • We never told it to recalculate the value of area.

  • If I copied that line down here, then the value of area

  • would change.

  • But we never told it to do that.

  • The computer only does what we tell it to do.

  • That's the last thing.

  • Next lecture, we're going to talk about adding control

  • flow to our programs, so how do you tell the computer

  • to do one thing or another?

  • All right.

The following content is provided under a Creative

字幕與單字

單字即點即查 點擊單字可以查詢單字解釋

B1 中級

1.什麼是計算? (1. What is Computation?)

  • 5 0
    林宜悉 發佈於 2021 年 01 月 14 日
影片單字