© Peter Andreae What is Programming About COMP 102 #2 2015 T1 Peter Andreae Computer Science...
-
Upload
anne-logan -
Category
Documents
-
view
212 -
download
0
Transcript of © Peter Andreae What is Programming About COMP 102 #2 2015 T1 Peter Andreae Computer Science...
© Peter Andreae
What is Programming About
COMP 102 #2
2015 T1
Peter AndreaeComputer Science
Victoria University of Wellington
© Peter Andreae
COMP 102 2:2Menu
• More course details• Strategies for learning in COMP102.• Programs and programming languages• Object Oriented Programming
Reading: • Text Book Chapter 1
Announcements:• Sign up for a lab session! (Labs start Today)• Voting for a Class Rep
• Put a message about yourself on the forum if you want to be class representative; the class will vote on Monday.
• Trouble with passwords? Go to school office: CO 358
© Peter Andreae
COMP 102 2:3Lectures vs Textbook
Lectures • Interactive • Multiple media • Real time
Good for • Overview • Motivation • Problem solving methods• Understanding• Illustration
Textbook • One way • Visual only • Static • Re-readable • Carefully checked and edited
Good for• Detailed explanations• Lists of facts and rules• Careful definitions• Large examples
How do you use lectures effectively?You didn’t have lectures at school!!
© Peter Andreae
COMP 102 2:4
A program is a specification for the behaviour of a computer:
• What the computer should do when: • the program is started• the user types something• the user clicks with the mouse• a message arrives over the network• some input from a camera/switch/sensor arrives.• ……
• Responses may be simple or very complex.
• A program consists of • descriptions of responses to events/requests • written as instructions • in a language the computer can understand:
• Low level, High level, Specialised
What is a Program
© Peter Andreae
COMP 102 2:5Machine & Assembly
Language• What the computer can understand
• Different for each computer
• Very detailed, low-level control of the computer
• Horrible to read
::
000XX00X 0X00XXXX 0XX0X00X 00XXX0X0 00X0X00X X0XX0X0X
::
copy the contents of memory location 143 into register 1.
add the contents of memory location 116 to the contents of register 1.
copy the contents of register 1 to memory location 181.
::
LD d1 143AD d1 116ST d1 181
::
Pattern of bits controls the switches that operate the CPU
© Peter Andreae
COMP 102 2:6High Level Programming
Languages• Designed for people to use• Designed to be translated into
machine language• compiled (translated all at once), or• interpreted (translated one step at a time), or• compiled to an intermediate language, then
interpreted(examples at: http://www.99-bottles-of-beer.net/ )
Must be • Precise: no ambiguity about what to do• Expressive: must be able to specify whatever you want
done.• Readable: People must be able to read the
instructions.• Translatable: able to be translated into machine
language• Concise: not “long-winded” or redundant
SmalltalkML
AdaC++
EiffelProlog
HaskellMiranda
JavaC#
PythonScratch
GameMakerAlice
FORTRANLISPAlgol
COBOLBasic
CPascalSimulaModula
PHPJavascript
© Peter Andreae
COMP 102 2:7Specialised language:
MazeMouse• Writing a program to control a Mouse in a Maze
• The mouse should get out of the maze• No matter what shape the maze is!!
• The program must cope with “the general case”!
• Very simple language:• Sequence of Forward, Left, and/or Right
eg: FLFR
• What should the mouse do when • there’s a space ahead
• there’s a space only to the left
• there’s a space only to the right
• there’s space only to the sides
• it’s in a dead-end
??
© Peter Andreae
COMP 102 2:8Programming Languages
• Different languages support different “paradigms”:(ways of designing) • imperative, • object-oriented, • functional, • logic programming, ...
Object Oriented programming languages:• Organise program around Classes (types) of objects
• Each class of objects can perform a particular set of actions
• Most instructions consist of asking an object to performone of its actions
© Peter Andreae
COMP 102 2:9Java
• A high-level Object-Oriented programming language
• Designed by Sun Microsystems, early-mid 1990's.
• Widely used in teaching and industry.
• Related to C++, but simpler. Similar to C#.
• Good for interactive applications.
• Extensive libraries of predefined classesto support, UIs, graphics, databases, web applications, ...
• Very portable between kinds of computers.
© Peter Andreae
COMP 102 2:10Constructing Programs
Design
Edit
Test
• The Design—Edit—Test cycle:
Given a task:
© Peter Andreae
COMP 102 2:11Building programs
• Specification:• Work out what you want the program to accomplish
• Design• Work out what the computer must do to accomplish the task
• Edit• Express the design in a programming language
• instructions for individual steps, • structure of the program
• Test• Run the program and see whether it works as intended
• may need to try it out on lots of different cases.
© Peter Andreae
COMP 102 2:12A program for the Maze
MouseSpecification
• Program to get the mouse out of any maze with a reachable exit(Mouse always starts in the top left corner facing right)
Design • "make the mouse move into an empty space,
When there is a choice, go forward if possible, otherwise to the left"
Edit• space ahead
• space only to the left
• space only to the right
• space only to the sides
• dead-end
??F
LF
RF
LF
LLF
Program
© Peter Andreae
Testing the program
• (Try it out with the MazeMouse demo)
COMP 102 2:13
© Peter Andreae
A different task:
Specification:• Find the average of a sequence of numbers from the user
• Design:
• Initialise a count and a running total to 0• Ask the user to enter the numbers• Repeat until there are no more numbers:
• read the next number• add it to the total• increase the count by 1
• If there was at least one number• Print out the total / count
• Otherwise, print a message.
COMP 102 2:14
© Peter Andreae
COMP 102 2:15A Java Program
import ecs100.*;/** Program to compute the average of a sequence of numbers
*/public class MeanFinder {
public void findMean () {double total= 0;int count =0;UI.print( "Enter numbers (followed by 'done'): " );while ( UI.hasNextDouble( ) ) {
total = total + UI.nextDouble( );count = count + 1;
}if (count > 0) {
UI.printf( "Mean = %5.2f \n", (total/count) ); }else {
UI.println( "You entered no numbers"); }
}}
© Peter Andreae
COMP 102 2:16Learning to Program in Java
What’s involved?
• Understand what the computer can do and what the language can specify
• Problem solving:• program design,• data structuring,
• Programming language (Java):• syntax and semantics• style and common patterns• libraries of code written by other people
• Testing and Debugging (fixing).
• Common patterns in program design.• Important data structures and algorithms.