Programming

26
Programming

description

Programming. 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 & T From [email protected] Thu Nov 8 12:05:31 2001 - PowerPoint PPT Presentation

Transcript of Programming

Page 1: Programming

Programming

Page 2: Programming

AdministriviaFrom [email protected] Thu Nov 8 12:05:31 2001Date: Thu, 8 Nov 2001 12:04:36 -0500 (EST)From: [email protected]

no goodies for youjust a lump of coal

& TFrom [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 3: Programming

Where we are

• Built a machine

• Built an operating system to control the machine

• Now, want to run programs under the operating system

Page 4: Programming

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 5: Programming

Problem solving

We’ve seenTruth tables

Logic gates

States and transitions in a state machine

Machine language

Now, higher level programming language

Page 6: Programming

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 7: Programming

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 8: Programming

Light

ATraffic Light Behavior

IF A=1

AND B=0

Always

IF A=0

AND B=1

Otherwise

Light BOtherwise

Always

Page 9: Programming

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 10: Programming

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 11: Programming

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 12: Programming

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 13: Programming

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 14: Programming

More Rules

• We have to tell the program to loopDo While condition

action Loop

Page 15: Programming

More Rules

• We have to tell the program to loopDo While StillWantToControlTraffic

RunMyTrafficControlProgramLoop

Page 16: Programming

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 17: Programming

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 18: Programming

Using the procedure

ChangeLights(LightB,LightA) then does

ChangeGreenToYellow(LightB)

ChangeYellowToRed(LightB)

ChangeRedToGreen(LightA)

Page 19: Programming

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 20: Programming

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 21: Programming

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 22: Programming

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 23: Programming

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 24: Programming

Show the array structure

• Build array• Keep track of things in array• Control all the traffic lights in Manhattan• But items in array have to track more info

– Time for lights each way– Location– Maybe dependencies on other lights

• So need better ways of storing data• Modern programming

– Data are objects– There are methods for operating on data

Page 25: Programming

Having built up to datatypes

• What are the relative merits of different languages• Visual vs. line oriented• Debugging• What the language gives you• Some history of programming languages

– And tools

– What is it about perl, awk, …

• What does the compiler do?

Page 26: Programming

• Let’s look at a bigger system

• Maybe the registrar’s or PeopleSoft

• Then joys and pitfalls of modern programming

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