Summer
2001 07.02
Lecture Outline for W 6.27
A Review of the first Lab
assignment
·
What
you were really doing: In CodeWarrior there are two kinds of files, project
files and text files.
·
Programming
languages are precise: notice what happens when you change random things
·
That's
the real secret for learning how to program: playing around. You'll never ever learn to program just by
listening to someone talk about it or by having someone just show you. You only learn how to program by programming.
Programming Languages
·
A
high level language like Java is almost like English. It was designed that way on purpose. It's really asking too much to have people talk the language that
computers actually understand. The days
of punch cards are over!
·
Learning
a programming language is exactly like learning a foreign language. Unfortunately, unlike say in French, where
we start with simple words and then build up to sentences (and then later to
essays), in learning a programming language, we have to start almost
immediately by writing 'essays'.
·
So
it's a little more difficult to learn Java in the beginning because you have to
absorb a lot of information rather quickly
·
On
the other hand, Java is a much simpler language than most human languages. There isn't a huge dictionary of definitions
for every conceivable circumstance. Once you learn the basics, you'll be able
to write your own essays and do them rather well.
·
All
programs can be written in terms of three control structures:
·
Direct
sequencing
·
Conditional
branching
·
Conditional
looping
·
Direct sequencing
The
sequencing structure is built into Java. Unless directed otherwise, the
computer executes Java statements in the order in which they are written.
·
Conditional branching
Java
provides three types of conditional branching (or selection structures). They are the if, if/else, and switch statements. We probably will not cover the switch statement in CS 99, but we
shall learn the other two statements rather thoroughly (starting next week).
·
Conditional looping
Java
provides for three types of conditional branching (or repetition structures):
the while,
do/while and for. We really
don't need all three, but it's useful to have the variations for different
situations.
·
The
words if,
else,
switch,
while,
do,
and for
are Java keywords. These words are reserved by Java to
implement various features in the language.
You can't use them separately for your own purposes.
·
Control
structures vary only a little from programming language to language. The
implementation details may differ,
but not the ideas. In learning thoroughly how these structures
work in Java, you're learning something quite universal. You'll be able to apply the same ideas to
other programming languages rather easily.
Are control structures all we
need?
·
No.
Having these control structures is enough to specify any possible algorithm, but the computer also has to
be able to do the things you want it
to do
·
For
instance, say you're writing a program for a robotic chef. If there comes a point in the algorithm
where the robot has to 'Beat Eggs', then the computer's language must have the
ability to tell the robot 'Beat Eggs' - and the robot will know what to do when
it's given that command
·
how
to 'Beat Eggs' isn't essential to the
language, but it's necessary in this circumstance for the programming
application to do its job
·
Another
example: System.out.println … this is also not an essential language construct,
but you need it or something like it for the computer to give you output.
·
To
summarize, in addition to the control structures, the language must have other
functions that enable it to both talk to us and do other things we may want it
to do
Variables
·
But
even that's not the end of the story
·
A
computer has to be able to remember
things as well, to store data.
·
If
I want to write a program that tells me the largest value in a sequence of
values I give it, how is the computer going to remember what that largest value
is?
·
Indeed,
for a program to be interesting, we usually have to supply it data (otherwise
it'll always do the same thing; unless of course it's got some kind of
randomization aspect to it, but even that is input of a kind)
·
A
computer stores data in variables.
·
Because
there are all kinds of things we might want a computer to remember - numbers,
names, other kinds of data - you can imagine that we have to be able to tell
the computer the kinds of data we
want it to remember
·
Recall,
the computer only knows 1s and 0s and switches and registers, so to remember
various kinds of data, we have to tell it how much memory to allocate
·
So
there are different types of data
·
In
Java, there are ints, floats, doubles, chars, Strings, booleans, and other kinds that may
be defined by the user or are supplied by Java natively, such as Color, Graphics, etc.
·
More
on that next week.