+ All Categories
Home > Documents > Programming November 13, 2001. Administrivia From [email protected] Thu Nov 8 12:05:31 2001...

Programming November 13, 2001. Administrivia From [email protected] Thu Nov 8 12:05:31 2001...

Date post: 20-Dec-2015
Category:
View: 212 times
Download: 0 times
Share this document with a friend
Popular Tags:
36
Programming November 13, 2001
Transcript
Page 1: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Programming

November 13, 2001

Page 2: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Administrivia

From [email protected] Thu Nov 8 12:05:31 2001

Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST)

From: [email protected]

no goodies for you

just a lump of coal

Page 3: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Administrivia

From [email protected] Thu Nov 8 12:05:31 2001Return-Path: <[email protected]>Received: from Princeton.EDU (postoffice.Princeton.EDU [128.112.129.120]) by upright.CS.Princeton.EDU (8.11.6/8.11.6) with ESMTP id fA8H5QQ29528 for <[email protected]>; Thu, 8 Nov 2001 12:05:31 -0500 (EST)Received: from yuma.Princeton.EDU (yuma.Princeton.EDU [128.112.128.89]) by Princeton.EDU (8.9.3/8.9.3) with SMTP id MAA29199 for dpd; Thu, 8 Nov 2001 12:04:36 -0500 (EST)Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST)From: [email protected]: <[email protected]>Status: RO

no goodies for youjust a lump of coal

Page 4: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Where we are

• Built a machine

• Built an operating system to control the machine

• Now, want to run programs under the operating system

Page 5: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

What is programming

• We did machine language– Single instructions that tell the hardware what to do

– Primitive• Arithmetic, simple branching, communication with memory

• We built state machines– States using memory– Transitions modeling tasks

Page 6: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Problem solving

We’ve seenTruth tables

Logic gates

States and transitions in a state machine

Machine language

Now, higher level programming language

Page 7: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

To build a computer program

• Figure out what you want to do– Understand the rules that guide the process you

are automating• Make sure that your rules are complete

• Translate the rules into the computer language– Build structures to hold your data– Build tools to manipulate them

• Make sure that the program does what the rules say

Page 8: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Figuring out the rules

• For traffic lights, – We stored data that told us the current color of lights

– We read input from sensors

– We had rules that told us whether to change state

– We had rules that told us how to change state

Page 9: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Light

ATraffic Light Behavior

IF A=1

AND B=0

Always

IF A=0

AND B=1

Otherwise

Light BOtherwise

Always

Page 10: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Turn Memory Into Variables

• Store data to tell current color of lights– Dim LightA, LightB as Integer

• ‘ 0 for red, 1 for yellow, 2 for green

• Read input from sensors– Dim SensorA, SensorB as Integer

• ‘ tell if cars are waiting

Page 11: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Turn Rules Into Statements

• Decide whether to change state– If LightA = 2 And SensorA = 0 And SensorB = 1 Then

• ‘ here we want to specify that the colors change

– If LightB = 2 And SensorA = 1 And SensorB = 0 Then• ‘ again, we want to specify that the colors change

Page 12: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Build shell of program

Dim LightA, LightB as Integer Dim SensorA, SensorB as Integer If LightA = 2 And SensorA = 0 And SensorB = 1 Then

ChangeGreenToYellow(LightA)ChangeYellowToRed(LightA)ChangeRedToGreen(LightB)

If LightB = 2 And SensorA = 1 And SensorB = 0 ThenChangeGreenToYellow(LightB)ChangeYellowToRed(LightB)ChangeRedToGreen(LightA)

Page 13: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Some Rules

• Statements have to be in blocks• How does the computer know that it is

If LightA = 2 And SensorA = 0 And SensorB = 1 ThenChangeGreenToYellow(LightA)ChangeYellowToRed(LightA)ChangeRedToGreen(LightB)

• And NotIf LightA = 2 And SensorA = 0 And SensorB = 1 Then

ChangeGreenToYellow(LightA)

ChangeYellowToRed(LightA)ChangeRedToGreen(LightB)

Page 14: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Some Rules

• Statements have to be in blocksIf LightA = 2 And SensorA = 0 And SensorB = 1 Then

ChangeGreenToYellow(LightA)

ChangeYellowToRed(LightA)

ChangeRedToGreen(LightB)

End If

Page 15: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

More Rules

• We have to tell the program to loopDo While condition

action Loop

Page 16: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

More Rules

• We have to tell the program to loop

Do While StillWantToControlTraffic RunMyTrafficControlProgram

Loop

Page 17: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Procedures

• Must fill in functions to change lightsPrivate Sub ChangeGreenToYellow(Light As Integer)

Light = 1End SubPrivate Sub ChangeYellowToRed(Light As Integer)

Light = 2End SubPrivate Sub ChangeRedToGreen(Light As Integer)

Light = 0End Sub

Page 18: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Could build Procedure of Procedures

ChangeGreenToYellow(LightA)ChangeYellowToRed(LightA)ChangeRedToGreen(LightB)

Could become the command ChangeLights(LightA,LightB)

Private Sub ChangeLights(Light1 As Integer, Light2 As Integer)

ChangeGreenToYellow(Light1)

ChangeYellowToRed(Light1)ChangeRedToGreen(Light2)

End Sub

Page 19: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Using the procedure

ChangeLights(LightB,LightA) then does

ChangeGreenToYellow(LightB)

ChangeYellowToRed(LightB)

ChangeRedToGreen(LightA)

Page 20: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

The program

Private Sub ChangeGreenToYellow(Light As Integer)Light = 1

End SubPrivate Sub ChangeYellowToRed(Light As Integer)

Light = 2End SubPrivate Sub ChangeRedToGreen(Light As Integer)

Light = 0End SubPrivate Sub ChangeLights(Light1 As Integer, Light2 As Integer)

ChangeGreenToYellow(Light1)

ChangeYellowToRed(Light1)ChangeRedToGreen(Light2)

End Sub

Page 21: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

The program (cont.)

Dim LightA, LightB as Integer

Dim SensorA, SensorB as Integer

If LightA = 2 And SensorA = 0 And SensorB = 1 Then

ChangeLights(LightA,LightB)

End If

If LightB = 2 And SensorA = 1 And SensorB = 0 Then

ChangeLights(LightB,LightA)

Page 22: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Make it happen forever

Dim LightA, LightB as Integer

Dim SensorA, SensorB as Integer

Dim StillWantToControlTraffic as Integer

StillWantToControlTraffic = 1

Do While StillWantToControlTraffic If LightA = 2 And SensorA = 0 And SensorB = 1 Then

ChangeLights(LightA,LightB)

End If

If LightB = 2 And SensorA = 1 And SensorB = 0 Then

ChangeLights(LightB,LightA)

End If

Loop

Page 23: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

What could go wrong?

• Program could get confused– Check for consistency

• ReplacePrivate Sub ChangeGreenToYellow(Light As Integer)

Light = 1End Sub

• WithPrivate Sub ChangeGreenToYellow(Light As Integer)

If (Light = 0) ThenLight = 1

ElseReportInconsistency()

End IfEnd Sub

Page 24: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Building a bigger program

• Could write this as a subroutine– Private sub

ControlTrafficLight(light1,light2,sensor1,sensor2)

• Could reuse the subroutine to do a whole string of lights.

• But how would we keep track of hundreds of lights?

Page 25: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Arrays

• Build arrays– LightNS[1], LightNS[2], LightNS[3], …– LightEW[1]. LightEW[2]. LightEW[3], …– SensorNS[1], SensorNS[2], SensorNS[3], …– SensorEW[1], SensorEW[2], SensorEW[3], …

Page 26: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Arrays (con’t).

• Keep track of things in arrayControlTrafficLight(lightNS[i],lightEW[i],sensorNS[i],sensorEW[i])

• Control all the traffic lights in ManhattanFor i = 1 To 100

ControlTrafficLight(lightNS[i],lightEW[i],sensorNS[i],sensorEW[i]) Next i

• But, – lights may want to communicate

– Light at an intersection carries more information

Page 27: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Object oriented programming

• Figure out characteristics of your data– objects

• Figure out operations you will want to perform – Methods

• Modern idea in programming.

Page 28: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Objects

• Traffic light at intersection involves– Lights in each direction

• Call them red, yellow and green and not 0,1,2

– Sensors in each direction– Timing (rate of change in each direction)

• Timings needn’t be the same

– Neighboring Lights• May affect change as much as sensors

Page 29: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Methods

• Method of querying color of light

• Method of changing color of light

• Method of scheduling a color change later

• …

Page 30: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

What happens to the program?

• Compiled or interpreted– Eventually it gets translated into machine

language

• If compiled– Can store executable and run again

• If interpreted– Interpret each time it is executed

Page 31: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

What does the compiler do?

• Identifies variables (need space in RAM)– Uses stores and loads to get values to registers

• Parses commands– Turns each command into a string of machine

language commands

• Sets things up for execution

Page 32: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

History of Programming Languages

• Fortran (1954) for scientific • Cobol (1959) for business

• Algol (1958) more universal Fortran

• Lisp (1958) string/concept oriented

• APL (1960) formula oriented

Page 33: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

History of Programming Languages

• PL/1 (1964) from Algol + Fortran

• Basic (1964) for everyone to use

• Simula (1967) combines with Algol to yield Smalltalk (1969) – object oriented

• BCPL B C (1971)

• Algol Pascal (1971) Modula 1,2,3,

Page 34: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

History of Programming Languages

• C++ (1983) C with object oriented features– Often C is still used

• Awk (1978) Perl (1987) report generators– Web programming language

• Java (1991) object oriented and portable– Web applets, devices

• Visual Basic(1991) macros and programs– Core of Microsoft systems

Page 35: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

What makes a good language

• Does the task you want

• Keeps you from making mistakes

• Supports debugging when you need it

• Has a strong tool kit

Page 36: Programming November 13, 2001. Administrivia From santaclaus@northpole.org Thu Nov 8 12:05:31 2001 Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST) From: santaclaus@northpole.org.

Next class

• Look at a bigger system

• Some internals of how the compiler works

• Some notable bugs

• How do we know if we’ve gotten it right?


Recommended