week 4 introduction to programming and openoffice…en1811/15s1/lectures/week04.pdf · introduction...

61
ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 ENGG1811 Computing for Engineers Week 4 Introduction to Programming and OpenOffice.org Basic SS BP NC IT w1 w4 w8 w11

Upload: nguyennhu

Post on 07-Mar-2018

223 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4

ENGG1811 Computing for Engineers

Week 4

Introduction to Programming

and OpenOffice.org Basic

SS BP NC IT

w1 w4 w8 w11

Page 2: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 2

Notices – Week 4

• Mid-Session Exam

– occupies the first part of the week 5 lab

– can use OpenOffice Calc only, no web access

– documentation such as convert_add provided

– answers in spreadsheet, submitted

– feedback by the end of the break

• OO Basic Labs (weeks 5.5 to 8)

– you must be prepared for each one

– programming is not easy for many people

– your tutor will help with detail, but cannot teach you how to program (but maybe in Help labs)

– multiple tasks: subset OK (usually the first exercise) for students having difficulties

– online assessment will require minimal effort

Page 3: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 3

Resources

• The lecture notes should generally be sufficient

• See also links on the class website under

Resources – OO Basic. They include

An edited and annotated copy of the

OpenOffice.org Basic guide

Documentation from the OOo website

Customising OpenOffice for Basic document

(toolbar, fonts and colours)

Page 4: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 4

Context E

nvironm

ent

Applic

ation

Go

al

Networks/

Comms Desktop PC

Web

browser

Accessing and presenting

info

Spread-

sheets

Solving numeric

problems

OO Basic

editor

Processing

information

Should be familiar

Doing this weeks 4 to 7

Did that weeks 1 to 3

Matlab

Modelling and visualisation

Doing this from week 8

Page 5: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

Context, continued

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 5

Effort required to use technique effectively

Usefu

lness o

f te

chniq

ue

Spreadsheet Basics

OO Basic

Goal seek, Solver,

trend lines etc

defining new functions for use in formulas and

programs

analysing data by processing columns

data and system visualisation

assign1

assign2

Matlab

matrix manipulation

modelling

Page 6: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

A tower of 1500 foam bricks

What is so special about this?

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 6

Page 7: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

Assembled by 4 quadrocopters automatically (Another application of computing and programming!)

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 7

Page 8: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

Holy grail: Automatic building assembly

• The previous 2 pages show pictures of automatic assembly by flying robots

– Video: http://vimeo.com/33713231

• Demonstration of an ultimate dream: Automatic building assembly

– Pre-fabricate modules of the building (slabs, windows, doors etc.)

– The robots assemble the modules following a plan (put module A in, then module B, …)

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 8

• Picture credits: http://www.dezeen.com/2012/01/28/flight-assembled-architecture-by-

gramazio-kohler-and-raffaello-dandrea-2/

• Technical article: “The Flight Assembled Architecture Installation”, IEEE Control

Systems Magazine, August 2014

Page 9: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 9

Algorithms and programs

• Computers are used to model real-world situations

• A problem is a general question to be answered about a model

• A problem instance is where problem parameters are assigned specific values

• An algorithm describes how to solve a problem – Must be finite, correct, effective and definite

– Some steps may be abstract

• Algorithms are implemented as programs using a particular language or notation

– Abstract steps expressed using specific language features

– Calc’s formulas are a limited kind of programming notation

• Validate solutions at each part of the design process

– Pick both typical and extreme instances

– Algorithm: simulate steps; test implementation directly

Page 10: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 10

Software vs other Engineering Disciplines

• Unlike many kinds of engineering design, program design is often iterative: design, implement, test, revise, retest…

• Imagine building a skyscraper, waiting for it to fall down, fixing up the design, repeat until it stays up (like Monty Python’s Swamp Castle*)

• You generally don’t design physical systems this way, apart from modelling the system before construction

• One famous case where this methodology failed spectacularly is the Tacoma Narrows bridge (1940)

Cause: poor understanding of wind

resonance effects. Effect: see this

contemporary newsreel https://www.youtube.com/watch?v=xox9BVSu7Ok

Refs: Wikipedia (image)

* https://www.youtube.com/watch?v=lZbG7iwRh34

Page 11: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 11

Your Turn (#1, easy)

• Devise an algorithm to calculate the average of

two real numbers

– obvious, solved with Calc in a jiffy

– different implementations may use different

notations, but the algorithm is essentially

the same

Page 12: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 12

Your Turn (#2) The Celebrity Problem

A Celebrity is someone

whom everybody knows,

but doesn’t (need to)

know anybody.

Who knows whom is

represented by a matrix of

order N. Each matrix cell

is 1 if Person A knows

Person B, and 0 otherwise

(e.g., person 6 knows 3

but 3 doesn’t know 6)

Person B

1 2 3 4 5 6

Per

son

A

1 0 0 1 0 0

2 0 0 1 1 0

3 0 0 1 0 0

4 0 0 0 0 0

5 0 1 0 1 0

6 0 0 1 1 1

Devise an algorithm to find the celebrity (if any),

inspecting as few cells of the matrix as possible.

Analysis and two solutions discussed in lecture

Page 13: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 13

Your Turn (#3, nifty)

• Geoff/Tim will pick three people* who have each

brought with them written on a card one 13-digit

bar code from a product (or book, but we’ll only

pick one book, they’re all 978…)

• They pass the cards to a fourth volunteer* who

changes one digit on one of the cards, then reads

out the three barcodes (two correct, one wrong)

• Geoff/Tim (or anyone) types the numbers onto

the Task3 sheet and presses the Validate! button

• The algorithm will then be revealed, a neat party

trick to win friends and influence people

* bonus points to these people, write your student ID on the card handed around

Page 14: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 14

Designing Algorithms

• Need clear specification of problem at hand

• Think of all situations that may arise and know what output to expect

• Does this resemble a standard problem (many identified; some broad classes exist)?

• Even if problem appears to be a new one, it can often be attacked by a small number of general strategies

• Once obtained, need to analyse algorithm for memory consumption, speed, etc.

• May need to repeat this a few times

Page 15: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 15

Algorithm Correctness

• Algorithms can be complex and the tasks they solve difficult

• Errors are easily introduced

• Bugs: can be expensive (and not only financially)

• Can reduce incidence of bugs in three ways: disciplined design, testing and proving

• Design: understand the problem, the intended solution and the notation – you will try to do this

• Testing: executing program on (lots of) test data – you can do this and must do this

• Proving: certifying program produces correct result on all permissible data (rarely easy, plus errors may be introduced during coding) – you probably can’t do this

Page 16: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 16

Programming

• We will be programming using OpenOffice.org Basic (OO Basic, or just OOB), bundled with OpenOffice

• Based on Microsoft’s VBA (Visual Basic for Applications)

– techniques used, and extra modules provided, are intended to maximise compatibility with VBA

• Programs are edited and run within Office apps (especially Calc), saved with the document or user

• Why program?

– Allows a much greater range of problems to be solved than can be done with Calc's built-in features

– Automates repetitive functions in Calc (or Writer, Impress)

– Learn a new way of thinking, acquire relevant skills

– Could apply to areas that people haven’t thought about

Page 17: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 17

Why is Programming in ENGG1811?

1. Useful in its own right (extends the application and

thus the range of available solutions)

2. As a professional engineer, you will need to

communicate with software designers or developers

– need to understand how developers think and work

– need to know what’s achievable using straightforward

programming principles (like Basic coding)

– need to

appreciate the

complexities and

process involved

in development,

and something

of the software

development

lifecycle:

new/changed requirements

user acceptance testing

incident

reports

Diagram: http://www.arnau-sanchez.com/en/how.html Simpsons characters © Matt Groening

Page 18: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 18

Computer Languages

• Machine Language – can be directly executed by

computer’s central processing unit (CPU)

01001000100010110000110111110001

• Assembly Language – symbolic form of machine

language

add $s0 $s1 $t0; add registers s0, s1 -> t0

Page 19: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 19

Computer Languages

• High-level Language (e.g., Basic, C, C++, Java,

python)

– more sophisticated instructions

– must be translated into machine language, or

interpreted step-by-step by another program

(increasingly common)

Page 20: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 20

OpenOffice.org Basic

• OO Basic uses structures inherited from BASIC

(Beginners All-purpose Symbolic Instruction Code)

via VBA, with many extensions

• Program is usually stored with document, and can

interact directly with document data or other apps

• OOB and VBA allow for object-oriented

programming (OOP) like C++, Java, etc.

– OOP helps programmers solve problems by

providing a convenient method for problem

decomposition

– This is outside the scope of this course

– Object model translated into java objects in the

back-end (but you don’t need to know that)

Page 21: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 21

OO Basic Architecture

OpenOffice.org Application (Calc, Writer etc)

OpenOffice document

(mywbk.ods) OO Basic program

OO Basic services

(creating windows, function library

etc)

External data and applications

Display (output) and mouse or

keyboard events (input)

same principle applies to VBA in Excel, Word etc

Page 22: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 22

Terminology

• Macros

1. Programs that can be executed by user action

2. General name for active content, including new functions used in formulas, user-designed dialogue boxes etc

• Execute or run – Transfer control to the Basic interpreter, which

performs the specified actions, in order

– Execution can be traced using breakpoints and the program single-stepped

• Code – informal name for program content, hence coding

• Procedure 1. A subprogram or macro (sense 1 above)

2. A function that can be used in a formula

Page 23: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 23

File Formats

• No separate format for OpenOffice documents with added Basic content

• Microsoft product formats have changed several times

– Common format xls derives from Excel 97 (and is still usable), optionally includes VBA

– Excel 2007 introduced new formats, still current

• xlsx workbook without stored VBA

• xlsm workbook with VBA

• OpenOffice can load a Microsoft document that contains VBA, but

– The code is only partly compatible, so

– VBA is turned into a non-functioning comment, though it’s usually recoverable

Page 24: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 24

How the program code is organised

• Program content is stored in modules, which are

grouped into libraries

– Every document has a predefined library called

Standard

– MyMacros is stored with your OpenOffice installation,

it has a Standard library too

• Macro organizer gives an explorer-like view

– Tools – Macros – Organize Macros – OpenOffice Basic

You can put this link on a

toolbar, see Customising

OpenOffice for Basic under

Resources – OO Basic

Page 25: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 25

Macro Manager

• You use the manager to

– View libraries and modules

– Run or edit a macro

– Start the Organizer

Page 26: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 26

Macro Organizer

• You use the organizer to

– Add modules to a library (also in the editor)

– Create, import or export a library

Page 27: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 27

What you can do with OOB programs

• At the simplest level, you can…

– Prompt the user for input

– Process data values

– Report via the MsgBox dialogue

– Write functions that can be used in formulas

• With slightly deeper knowledge, you can…

– Make decisions based on calculated values

– Inspect and change cells on the active sheet

using row and column coordinates

– Apply custom algorithms that use sheet data

• With more practice and experience, you could…

– Interact with the user via custom dialogues

– Create and animate drawings on screen

(helps modelling and visualisation, provided in assign1)

this week

week

6, 7

no longer in

ENGG1811

next

week

Page 28: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 28

OO Basic Editor/IDE*

During

execution,

shows values

of selected

variables

Editing

workspace

Default code

(change and

extend)

Modules in

current library

Current library

* As you can run and monitor programs in the editor, it’s also known as an Integrated Development Environment (IDE)

Page 29: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 29

Creating a Sample Program

• Demo only, until we can start using sheet data

– Select Tools – Macros – Organize Macros – OpenOffice Basic... from menu (or custom toolbar)

– Press Organizer... on the dialogue

– Find the document, click + and select Standard

– Press the New button, default module name is OK

– Module is added to the list, press Edit

– Change Sub Main to Sub Golden()

– Full listing overleaf (lecturer may copy to save time)

Page 30: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 30

First Program (Golden ratio calculator)

' Demonstrates input -> processing -> display with a simple ' calculator for objects whose dimensions are in the golden ratio Sub Golden() Dim width As Double Dim goldenRatio As Double ' or phi goldenRatio = (1 + Sqr(5))/2 ' Read the width of an object from the user width = InputBox("What is the object width? ", "Golden ratio") htPortrait = width * goldenRatio htLandscape = width / goldenRatio ' Construct the message using & to glue the parts together MsgBox "width = " & width _ & ", portrait height = " & htPortrait _ & ", landscape height = " & htLandscape End Sub

Statements are steps to be

executed in turn

Variable declarations (named locations to hold values)

Text inside a Sub (and other structures) should be indented one tab (4 spaces)

Line continuation

symbol (underscore)

Page 31: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 31

First Program (Part 1 of 5)

Sub Golden() width = InputBox("What is the object width? ", "Golden ratio") MsgBox "width = " & width End Sub

• We will complete the First Program bit by bit

• Note:

– It’s a good software development habit to do a small part

and then test to see whether it is working. When it’s working,

write the next small part of code and test.

– A poor habit is to write a lot of lines of code and then test

(or indeed not bother and hope for the best!)

Statements are steps to be

executed in turn

Page 32: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 32

Initiating Action

• Selecting Tools – Macros – Run Macro

(we’ll add a toolbar link for this later)

• Using an OO Basic function in a worksheet formula

• An event occurring in the application, such as opening

a document or creating a worksheet

• An interactive event such as a mouse click

• Linking code to a OO Basic control (such as a button)

placed on the document

• Via a form (dialogue) created using the OOB IDE

• For testing, from within the editor/IDE

OO Basic program code can be run or executed any of these ways

Page 33: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 33

Program Execution

• For this example, we can run it in place

• press F5 (always runs the first procedure in the

current module) or press the Run button

• InputBox is a quick way of getting value into the

program, and MsgBox of showing results:

• No fancy stuff like number formatting or line

breaks

• Application pauses until dialogue box is dismissed

Page 34: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 34

Program Components

• Subprogram (can be executed by user)

– between Sub name() and End Sub

– OO Basic procedures are either

subprograms (do stuff) or

functions (calculate stuff)

• Assignment (variable = newvalue)

– fundamental programming operation, note the order

and the operator (= acts like a left arrow <=)

Page 35: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 35

Program Components

• InputBox

– Built-in OO Basic procedure to display a prompt and receive a response (string, but convertible to a number)

• MsgBox

– Built-in OO Basic procedure to display something

• "…" are literal strings

– used for displaying text of some kind

• & operator concatenates (joins) strings

– same notation as used in formulas

Page 36: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 36

Identifiers

Words like width in the example program are called identifiers

– Identifiers are used for names of procedures, variables, and properties

– Identifiers are sequences of letters (a-z, A-Z), digits (0-9) and underscores (_)

– Identifier can only begin with a letter

– Examples of valid identifiers

Module1 x42 temp blnFound y_origin

Quiz: Which of the following identifiers are valid?

day 2day dayOfTheWeek day2 $24 see-saw

Page 37: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 37

Reserved Words

• Although day is a valid identifier, there are problems in using it, because:

• Words like Sub, End, Dim are known as reserved

words or keywords in Basic (same in OOB and VBA)

• You cannot use them as variable names, procedure names, etc.

• Standard procedure names like MsgBox, now, sin etc. are not reserved but avoid them to prevent ambiguity

• Editor highlights reserved words in blue (can be changed, see Resources)

Page 38: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 38

Identifier Conventions

• Identifier conventions have been devised to make programs more readable

– Use title case for procedure names

FindEmptyCell IsNumeric ToString

– Use meaningful variable names, title case with initial lower case, or underscore if capitals would be inappropriate

temperature numCount pressurePa

mass_in_kg isWithinNormalRange

– other conventions use a prefix* indicating type

– OK to use short names for minor or short-lived data

* You may find OO Basic examples on the web that use o for object, such as oSheet and oCell, but we process sheets in simpler ways.

Page 39: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 39

First Program (Part 2 of 5)

' Demonstrates input -> processing -> display with a simple ' calculator for objects whose dimensions are in the golden ratio Sub Golden() ' Read the width of an object from the user width = InputBox("What is the object width? ", "Golden ratio") ' Construct the message using & to glue the parts together MsgBox "width = " & width End Sub

Text inside a Sub (and other structures) should be indented one tab (4 spaces)

Comments (begin with single quote ', ignored)

Comments are important and serve to

explain code, improving its readability, have

no effect on execution

Page 40: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 40

Program Style

Programs are both for the computer to run and for people to read (you or other people)

– program code is hierarchical (statements are inside Sub Golden), so indent using tabs (show 4 positions)

editor maintains current indent level, which helps

– leave white space (between elements and between lines) for clarity

– continue long lines with space and underscore _

– Capitalise keywords

OO Basic does not require this, but other Basics (including VBA) do, so we’re going to insist

– add meaningful comments

before procedure explaining purpose, parameters

next to important variable declarations

before or next to important statements

Page 41: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 41

First Program (Part 3 of 5)

' Demonstrates input -> processing -> display with a simple ' calculator for objects whose dimensions are in the golden ratio Sub Golden() Dim width As Double ' Read the width of an object from the user width = InputBox("What is the object width? ", "Golden ratio") ' Construct the message using & to glue the parts together MsgBox "width = " & width End Sub

Statements are steps to be

executed in turn

Variable declarations (named locations to hold values)

Text inside a Sub (and other structures) should be indented one tab (4 spaces)

Page 42: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 42

Variables

• Variables (Dim name As type)

– names locations that can be used in calculations

• Variables store values for calculation and later use

– These values are actually stored in the computer’s memory

• Variables should be declared before use with

the keyword Dim

• Each variable has a data type describing the range of valid values

• Variable names are identifiers (see earlier rules for valid identifier names)

Page 43: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 43

Variables

• Dim var1 As datatype1, var2 As datatype2, …

• Dim index As Long, sum As Long

– Declares two variables: index and sum

– Their data type is Long integer (i.e., whole

numbers); these variables can be assigned integer

values of either sign, but only up to a limit

• Dim areaPolygon As Double

– Double = real number approximation using double

precision (about 16 significant figures)

• Dim userName As String

– Declares one variable – userName

– Data type is String – a sequence of characters

Page 44: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 44

Data Types

• Each variable must have an associated data type

• The data type determines what values can be

assigned to variables

• Also determines the amount of memory required to

store value of variable

• Data types are important because they allow the

compiler* to check for errors in program

• Program also uses data types to determine how to

convert a value of one type to another (e.g., an

integer to a string)

* The OOB compiler defers most checks until run-time

Page 45: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 45

OO Basic Primitive Data Types

Data Type Range of Values Stored

Boolean True, False

Byte 0-255

Date Dates and times

Integer Whole numbers, 32768 to 32767

Long Large integers, +/ 2 billion or so

Single Floating point (real numbers, ~ 7 dec digits)

Double Higher precision floating point (~ 16 dec digits)

Object Generic structured data type

String Sequence of characters, variable length

Currency

Variant

Monetary value with up to 4 dec places

Dynamic data type (used in special cases)

Use Long for integral counting purposes, and Double

for real-number arithmetic

Page 46: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 46

First Program (Part 4 of 5)

' Demonstrates input -> processing -> display with a simple ' calculator for objects whose dimensions are in the golden ratio Option Explicit Sub Golden() Dim width As Double ' Read the width of an object from the user width = InputBox("What is the object width? ", "Golden ratio") ' Construct the message using & to glue the parts together MsgBox "width = " & width End Sub

Enforce variable declaration requirement

What happens if you misspell this name?

Page 47: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

Illustrating data types and overflow error

• Computers use binary numbers but let us use two imaginary data types for illustration

– TwoDigits

• Can store any integer from 0 to 99

– FourDigits

• Can store any integer from 0 to 9999

– Need some volunteers …

• Overflow error

– Example: Integer data type cannot store integers greater than 32767. If you try to do that, it will result in an overflow error.

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 47

Page 48: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 48

Assigning Values to Variables

• A variable can be assigned a value using the assignment operator = var = expression

– expression is evaluated and the result stored in the location named by the variable var

– Replaces any previous value

• Examples: total = 2 + 3 ' constant expression

areaCircle = 2*PI*radius ' real expression

greeting = "Hello World!" ' literal string

numYing = numYang ' copy variable value

correct = (total = 5)

(last one is a comparison assigning True or False)

Note the order: destination = source

Page 49: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 49

Constant Definitions

• Fixed or constant values are often required at several places in a program

• By giving a name to the constant…

– The reader understands what the value means

• for example, only hard-core physicists would recognise

1.3806503e–23 in a calculation (it’s Boltzmann’s constant)

– The value could be changed in one place later if new

conditions apply (limits or resource requirements)

• Name format convention: ALL_CAPS

Const PI = 3.141592653589793 ' fundamental value

Const BOLTZ = 1.3806503e–23 ' units are J/K

Const DAYS_IN_LEAP_YEAR = 366

Const MAX_SHEETS = 16 ' some limit

Const DEBUGGING = True ' controls output

Const VERSION_CODE = "V1.0 beta" ' info

Page 50: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 50

First Program (Part 5 of 5)

' Demonstrates input -> processing -> display with a simple ' calculator for objects whose dimensions are in the golden ratio Option Explicit Sub Golden() Dim width As Double Dim goldenRatio As Double ' or phi Dim htPortrait As Double Dim htLandscape As Double goldenRatio = (1 + Sqr(5))/2 ' Read the width of an object from the user width = InputBox("What is the object width? ", "Golden ratio") htPortrait = width * goldenRatio htLandscape = width / goldenRatio ' Construct the message using & to glue the parts together MsgBox "width = " & width _ & ", portrait height = " & htPortrait _ & ", landscape height = " & htLandscape End Sub

Statements are steps to be

executed in turn

Line continuation

symbol (underscore)

Sqr: Built-in

OO Basic square root function

Page 51: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 51

Formulas vs Programs

• Spreadsheet formulas are functional

– specify what the answer should be as a single large expression

– if too complex, intermediate values have to be stored in cells

• OO Basic statements are procedural

– each one is executed in turn

– all storage locations are explicitly named

– location values can be updated

=E2+F4 num1 = 12

(in cell A2, say) num2 = -3

total = num1 + num2

Page 52: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

Don’t interpret assignment as equals to

Sub UnderstandAssignments() Dim x As Integer x = 5 MsgBox "(After x = 5) x = " & x x = x + 2 MsgBox "(After x = x + 2) x = " & x ' Explanation: starting from the RHS of the assignment statement, ' take the current value of x (= 5), add 2 to it (giving 7) and ' assign the result to x. After the assignment statement, x is 7 End Sub

ENGG1811 © UNSW, CRICOS Provider No: 00098G W5 slide 52

We will step through the program UnderstandAssignments()

Note: only part of the program is shown below

Page 53: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 53

Arithmetic Expressions

• Used to perform numeric calculations (real or integer)

• Can comprise

– Literal constants (152, –3, 12.75, 1.39e7)

– Named constants (PI, MAX, NUM_SHEETS)

– Numeric variables (x, numDataItems)

– Arithmetic operators: +, – , *, \, /, Mod, ^

– Parentheses: ( )

Remainder or modulus

Real division

Integer division (discard

remainder)

Page 54: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 54

Arithmetic Operators

Operator Description

+ Addition or unary positive

– Subtraction or unary negative

* Multiplication

\ Integer division (fraction discarded)

/ Floating point division

Mod Integer modulus (remainder)

^ Exponentiation (power)

• People still come up to me in week 9 and ask: “What does Mod mean?” If you have to do this, you're not trying hard enough.

Page 55: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 55

Examples of Expressions

sum + 1

curPrincipal * (1 + interestRate) ^ numYears

(a + b) Mod 10

(R1 * R2) / (R1 + R2)

a*x^2 + b*x + c

Expression Value

1 + 2 * 3 – 4 3 (not 5)

5 / 2 2.5

5 \ 2 2

14 Mod 5 4

2 ^ 3 8

Page 56: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 56

Precedence

Operator

( )

^

+ – (unary: sign)

* /

\

Mod (remainder)

+ – (binary: add, subtract)

• When evaluating arithmetic expressions, order of evaluating operations determined by precedence

• You can look this up when needed, supplied in exams too

Lower precedence

Higher precedence

! The OOB convention

is not quite the same

as standard maths

Page 57: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 57

Evaluating Expressions –

Rules of Precedence

• When evaluating expressions, operations of higher precedence are performed before those of lower precedence

2 + 3 * 4 = 2 + (3 * 4) = 14

• Otherwise operations performed from left to right

2 ^ 3 ^ 4 = (2 ^ 3)^ 4 = 4096

10 + 2 – 3 = 9

• Use parentheses if in any doubt

Page 58: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W5 slide 58

Quiz

Operator

( )

+ – (unary: sign) ^

* /

\

Mod (remainder)

+ – (binary: add, subtract)

• What is –2^2 in OOB? (a) 4 (– 2)^2

(b) – 4 – (2^2)

Lower precedence

Higher precedence

Important Note:

Different programming

languages can use

different orders of

precedence. Always

check or use () when in

doubt.

Page 59: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 59

Tracing execution

• As the program is interpreted, it can be paused,

resumed and stepped through

• Set a breakpoint by double clicking in the left

margin next to a statement

• Execution pauses, continue with F8 or use toolbar

– Step into (F8), next statement

– Step over (Shift-F8), treat procedure as single step

– Step out, step to end of current procedure

• When paused, hover mouse over variable name to

see its current value

• If you’re really keen, set a variable watch (we’ll

leave that to next week)

Page 60: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 60

What you really need to know

• After this last lecture for the week, you must know

– how to create and edit a new module, and find your way

to existing modules

– how to create and run a subprogram

– how to declare variables, and what data types mean

– what assignment statements do

– how to use MsgBox (and strings, and the & operator)

– how to trace execution using breakpoints and F8

– the rules for forming identifiers, and how to name

variables

– program style conventions

– how to define named constants and naming conventions

– about arithmetic expressions (including the Mod

operator) and precedence

• The lab work after the midterm test will require this!

Page 61: Week 4 Introduction to Programming and OpenOffice…en1811/15s1/lectures/week04.pdf · Introduction to Programming and OpenOffice.org Basic ... –OOP helps programmers solve

ENGG1811 © UNSW, CRICOS Provider No: 00098G W4 slide 61

Summary

• Algorithms express solutions to problems

• Programs implement algorithms

• OO Basic is a particular language with its own way of representing data and action

• OO Basic is bundled with OpenOffice

• Use the built-in editor (IDE) to edit and test

• Programming concepts

– procedures for grouping code

– variables, types, constants

– assignment (change value of variables)

– arithmetic expressions for evaluation