Programming - PowerPoint PPT Presentation

About This Presentation
Title:

Programming

Description:

just a lump of coal. Where we are. Built a machine ... tell if cars are waiting. Turn Rules Into Statements. Decide whether to change state ... – PowerPoint PPT presentation

Number of Views:25
Avg rating:3.0/5.0
Slides: 37
Provided by: DPD5
Category:

less

Transcript and Presenter's Notes

Title: Programming


1
Programming
  • November 13, 2001

2
Administrivia
  • From santaclaus_at_northpole.org Thu Nov 8
    120531 2001
  • Date Thu, 8 Nov 2001 120436 -0500 (EST)
  • From santaclaus_at_northpole.org
  • no goodies for you
  • just a lump of coal

3
Administrivia
  • From santaclaus_at_northpole.org Thu Nov 8
    120531 2001
  • Return-Path ltsantaclaus_at_northpole.orggt
  • 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 ltdpd_at_cs.Princeton.EDUgt Thu, 8 Nov
    2001 120531 -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 120436 -0500
    (EST)
  • Date Thu, 8 Nov 2001 120436 -0500 (EST)
  • From santaclaus_at_northpole.org
  • Message-Id lt200111081704.MAA29199_at_Princeton.EDUgt
  • Status RO
  • no goodies for you
  • just a lump of coal

4
Where we are
  • Built a machine
  • Built an operating system to control the machine
  • Now, want to run programs under the operating
    system

5
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

6
Problem solving
  • Weve seen
  • Truth tables
  • Logic gates
  • States and transitions in a state machine
  • Machine language
  • Now, higher level programming language

7
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

8
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

9
Traffic Light Behavior
Otherwise
IF A1 AND B0
Light A
Always
Always
IF A0 AND B1
Otherwise
Light B
10
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

11
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

12
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
    Then
  • ChangeGreenToYellow(LightB)
  • ChangeYellowToRed(LightB)
  • ChangeRedToGreen(LightA)

13
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
    Then
  • ChangeGreenToYellow(LightA)
  • ChangeYellowToRed(LightA)
  • ChangeRedToGreen(LightB)
  • And Not
  • If LightA 2 And SensorA 0 And SensorB 1
    Then
  • ChangeGreenToYellow(LightA)
  • ChangeYellowToRed(LightA)
  • ChangeRedToGreen(LightB)

14
Some Rules
  • Statements have to be in blocks
  • If LightA 2 And SensorA 0 And SensorB 1
    Then
  • ChangeGreenToYellow(LightA)
  • ChangeYellowToRed(LightA)
  • ChangeRedToGreen(LightB)
  • End If

15
More Rules
  • We have to tell the program to loop
  • Do While condition
  • action
  • Loop

16
More Rules
  • We have to tell the program to loop
  • Do While StillWantToControlTraffic
  • RunMyTrafficControlProgram
  • Loop

17
Procedures
  • Must fill in functions to change lights
  • Private Sub ChangeGreenToYellow(Light As Integer)
  • Light 1
  • End Sub
  • Private Sub ChangeYellowToRed(Light As Integer)
  • Light 2
  • End Sub
  • Private Sub ChangeRedToGreen(Light As Integer)
  • Light 0
  • End Sub

18
Could build Procedure of Procedures
  • ChangeGreenToYellow(LightA)
  • ChangeYellowToRed(LightA)
  • ChangeRedToGreen(LightB)
  • Could become the command ChangeLights(LightA,Ligh
    tB)
  • Private Sub ChangeLights(Light1 As Integer,
    Light2 As Integer)
  • ChangeGreenToYellow(Light1)
  • ChangeYellowToRed(Light1)
  • ChangeRedToGreen(Light2)
  • End Sub

19
Using the procedure
  • ChangeLights(LightB,LightA) then does
  • ChangeGreenToYellow(LightB)
  • ChangeYellowToRed(LightB)
  • ChangeRedToGreen(LightA)

20
The program
  • Private Sub ChangeGreenToYellow(Light As Integer)
  • Light 1
  • End Sub
  • Private Sub ChangeYellowToRed(Light As Integer)
  • Light 2
  • End Sub
  • Private Sub ChangeRedToGreen(Light As Integer)
  • Light 0
  • End Sub
  • Private Sub ChangeLights(Light1 As Integer,
    Light2 As Integer)
  • ChangeGreenToYellow(Light1)
  • ChangeYellowToRed(Light1)
  • ChangeRedToGreen(Light2)
  • End Sub

21
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)

22
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

23
What could go wrong?
  • Program could get confused
  • Check for consistency
  • Replace
  • Private Sub ChangeGreenToYellow(Light As Integer)
  • Light 1
  • End Sub
  • With
  • Private Sub ChangeGreenToYellow(Light As Integer)
  • If (Light 0) Then
  • Light 1
  • Else
  • ReportInconsistency()
  • End If
  • End Sub

24
Building a bigger program
  • Could write this as a subroutine
  • Private sub ControlTrafficLight(light1,light2,sens
    or1,sensor2)
  • Could reuse the subroutine to do a whole string
    of lights.
  • But how would we keep track of hundreds of
    lights?

25
Arrays
  • Build arrays
  • LightNS1, LightNS2, LightNS3,
  • LightEW1. LightEW2. LightEW3,
  • SensorNS1, SensorNS2, SensorNS3,
  • SensorEW1, SensorEW2, SensorEW3,

26
Arrays (cont).
  • Keep track of things in array
  • ControlTrafficLight(lightNSi,lightEWi,sensorNS
    i,sensorEWi)
  • Control all the traffic lights in Manhattan
  • For i 1 To 100
  • ControlTrafficLight(lightNSi,lightEWi,sensorNS
    i,sensorEWi) Next i
  • But,
  • lights may want to communicate
  • Light at an intersection carries more information

27
Object oriented programming
  • Figure out characteristics of your data
  • objects
  • Figure out operations you will want to perform
  • Methods
  • Modern idea in programming.

28
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 neednt be the same
  • Neighboring Lights
  • May affect change as much as sensors

29
Methods
  • Method of querying color of light
  • Method of changing color of light
  • Method of scheduling a color change later

30
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

31
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

32
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

33
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,

34
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

35
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

36
Next class
  • Look at a bigger system
  • Some internals of how the compiler works
  • Some notable bugs
  • How do we know if weve gotten it right?
Write a Comment
User Comments (0)
About PowerShow.com