unit 1: introduction - cs.mcgill.cacs202/2011-09/lectures/dan/unit1/unit1abridged.pdfcomp-202 -...
TRANSCRIPT
COMP-202Unit 1: Introduction
CONTENTS:What Is Programming?How a Computer WorksProgramming LanguagesJava Basics
Assignment 1• Assignment 1 posted on WebCt and
course website. It is due September 22ndst at 23:30
Tutorial 0• Help with setting up your computer
to compile and run a Java program• Trottier room 3120• See course website for more details
on schedule.
Last Class
• Solving many little problems to avoid thinking about too much at once!
•
• A tiny bit about java
Correction from Last Class
The Inuit actually did NOT have several dozen words for snow. This is a misnomer.
The Sami people did have many.
http://en.wikipedia.org/wiki/Eskimo_words_for_snow
Today
• What is programming?•
• How computers think•
• A tiny bit more about java: The structure of a program
Part 1: What Is Programming?
COMP-202 - Introduction 8
Programming and Computers•In order to understand what programming is, we need to know what a computer is
COMP-202 - Introduction 9
Programming and Computers•In order to understand what programming is, we need to know what a computer is•A computer is a machine that executes lists of instructions–We feed a list of instructions to the computer and the computer executes them–The computer may apply the instructions on additional information fed to the computer (the input)–The computer may produce information as a result of executing this list of instructions (the output)
COMP-202 - Introduction 10
Programming and Computers Programming a computer involves two things:
1) Designing lists of instructions that will make the computer solve specific problems (a.k.a. writing your program)
2) Having the computer execute the instructions (a.k.a. running your program)
COMP-202 - Introduction 11
Why do we want to program?Before we go any further, it's important to answer the
question:
“What's the benefit of programming?”
COMP-202 - Introduction 12
Why do we want to program?
COMP-202 - Introduction 13
Benefits of programming• Programming computers allows us to sleep much more
easily knowing that nothing ever could go wrong.• Our programs will always work perfectly and will never
crash or make any sort of mistakes.
COMP-202 - Introduction 14
Actually....maybe not
Anyone used Windows Vista?
COMP-202 - Introduction 15
Benefits of programmingAll jokes aside, generally we program computers because
we either can't or don't want to do the task ourselves.
Some reasons:
-very repetitive task-arithmetic of large numbers-searching through millions of documents
-having someone “help” us without having to bother a real human
-playing a game against a computer-researching information
COMP-202 - Introduction 16
Giving a computer instructionsA very good way to think about giving a computer
instructions is the following:
1)First figure out what is given in the problem and where it is you are trying to go.
2)Figure out a broad picture of how you want to get from your start to the goal. When you do this, you should figure out, at each step, what you are given, and what you want to produce. Now you have several, smaller problems.
You can solve the smaller problems the same way.
COMP-202 - Introduction 17
Example: Planning Dinner
Start: Goal:
We need to construct a path from the start to the goal
COMP-202 - Introduction 18
Example: Planning Dinner
Start: Goal:
COMP-202 - Introduction 19
Giving a computer instructionsAt each partial step, we need to make sure we have very
precisely determined what we have at the moment and what we need to produce in that step.
For example:Step 1)Shopping:
We have : a recipea burning desire to eat foodmoney
We want to produce:raw ingredients
COMP-202 - Introduction 20
Giving a computer instructions
Here we can also notice that one of the things we have is not really needed to solve this partial problem.
For example:Step 1)Shopping:
We have : a recipea burning desire to eat foodmoney
We want to produce:raw ingredients
COMP-202 - Introduction 21
Giving a computer instructionsAt each partial step, we need to make sure we have very
precisely determined what we have at the moment and what we need to produce in that step.
Step 2)Chopping:
We have : raw ingredients
We want to produce:chopped ingredients
What is very important about this?
COMP-202 - Introduction 22
Giving a computer instructionsStep 2)Chopping:
We have : raw ingredients
We want to produce:chopped ingredients
The input of step 2 is part of the output of step 1. This means that we can use it.
If step 2 required something else (for example, if we also needed to buy knives), then this wouldn't be a complete solution.
COMP-202 - Introduction 23
Giving a computer instructionsAt each partial step, we need to make sure we have very
precisely determined what we have at the moment and what we need to produce in that step.
Step 3)Cooking
We have : chopped ingredients
We want to produce:cooked food
And we've found a path from one to the other.
COMP-202 - Introduction 24
Giving a computer instructionsWhen you are giving instructions to a computer, most of
the time, you will repeat this divide and conquer process.
For example:Shopping could be split into:1)Pick up onions2)Pick up bread3)Pick up meat4)Wait in line at the cash register5)Pay the cashieretc.
Giving the instructions to a computer
Once you have mapped out a solution to a problem in small enough instructions, you can program a computer to execute the instructions
Two things to remember about computers
1)They require very specific instructions:
-You can't tell a computer to cook dinner. It has to be much more detailed!
Two things to remember about computers
2)They “interpret” instructions very literally.
-No sense of idioms as we do in human languages.
COMP-202 - Introduction 28
Amelia Bedilia
COMP-202 - Introduction 29
Amelia Bedilia
“Draw the drapes”
“Make a sponge cake”
“Pitch the tent”
COMP-202 - Introduction 30
Human and Computer Languages
Consider the following English sentence:"The lady hit the man with a baby"
Does this mean 1)A lady hit a man who had a baby? (Dude, what a jerk!)2)A lady used a baby to hit a man? (Good lord!)3)A lady and a baby ganged up on a man and hit him. (Kids today!)
Computer statements, on the other hand, always have only one possible interpretation—although sometimes no one knows how a computer will interpret something!
COMP-202 - Introduction 31
Human and Computer Languages
One of the challenges is to learn the different interpretations the computer will give to commands.
The computer will not normally tell you how it is interpreting things. It is up to you to figure it out, both by looking at your code and observing the output.
COMP-202 - Introduction 32
Feedback from the computer•
If you omit the proper instructions or include the wrong instructions, generally 4 things can happen:
1)You get incredibly lucky and on that particular input it works anyway
2)The program gives the incorrect output3)The program crashes4)The program goes on forever and ever•
•
COMP-202 - Introduction 33
Java!Now, let's go over our very first program!
COMP-202 - Introduction 34
Java Program: Hello Worldpublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
COMP-202 - Introduction 35
Java Program: Hello Worldpublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
One thing to notice is all these { and }
These are used to denote “blocks” of code.
The purpose of a block is mainly to help the programmer keep track of what parts of code are related.
COMP-202 - Introduction 36
Java Program: Hello Worldpublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
{'s always mark the beginning of a “block” (or segment) of code.
Each { always has a corresponding } to mark the end.You can tell which corresponds to which because the first
{ opened, will correspond with the last }
COMP-202 - Introduction 37
Java Program: Hello Worldpublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
Try at home: What happens if you remove the final }, so that there are not matching braces? What happens if you add an extra } at the end so that there are 3 }s?
COMP-202 - Introduction 38
Java Program: Hello Worldpublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
Most (but not all) of the time, right before a { will be some code specifying what kind of block of code something is.
For the first {, the code is “public class HelloWorld”
COMP-202 - Introduction 39
class in Javapublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
One of the key units of organizing things in Java is called a class. A class can have many different things in it which we'll see throughout the term.
COMP-202 - Introduction 40
class in Javapublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
Here we are saying: “I want to create a class called HelloWorld and I want it to be public”
The first { signifies the start of the definition of the classThe final } signifies the end of the definition of the class
COMP-202 - Introduction 41
Java Program: Hello Worldpublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
On the second line we have another {
In this case, the code before is defining a method
COMP-202 - Introduction 42
methods in Javapublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
A method is also a key unit of organization in Java.
COMP-202 - Introduction 43
methods in Javapublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
Here we are saying: “I want to create a method called main
There are several other words (public, static, void, String[], args) that we'll talk about later.
COMP-202 - Introduction 44
methods in Javapublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
The second { signifies the start of the method called main.
The first } signifies the end of the definition of the method called main.
COMP-202 - Introduction 45
methods in Javapublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
Since the definition of the method called main is inside the definition of the class called HelloWorld, it means that the method main is a part of the class HelloWorld.
COMP-202 - Introduction 46
Methods and classesAlmost every line of code you write in Java will be inside
a class. This helps keep things nicely organized.
Almost every line of code you write in Java will also be inside of a method. This also helps keep things nicely organized.
Every method you ever write, will be part of a class.
COMP-202 - Introduction 47
main methodThe main method is a very particular method.
When you run a Java program, you actually run a Java class
When you do this, the execution of your program will always start at the beginning of the method called main inside whatever class you run.
COMP-202 - Introduction 48
Java Program: Hello Worldpublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
Inside of a method, you can put many statements or commands.
The highlighted line is an example of a statement.
All statements in Java end in a semi-colon.
COMP-202 - Introduction 49
Java Program: Hello Worldpublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }}
The command System.out.println is a way to print something to the screen.
It will print everything between (“ and “) as long as it's on 1 line.
COMP-202 - Introduction 50
Summary:-Important to break problems down into many pieces-Classes and methods are just 2 of the ways that Java
helps us to organize things. These are important because they'll help make sure we don't need to think about too much at once.
COMP-202 - Introduction 51
HomeworkRead the lecture titled unit1 on the course webpage.
The material is mostly not directly examinable, but it's good to keep in mind while coding.
COMP-202 - Introduction 52
Next Class• Printing more complex statements• Getting input from the user to make our programs
more useful!