Lecture 21 3/29/04 23:59 Lecture 21 Using & Managing Data: Spreadsheets (S&G, §§11.1 –11.2) §§11.1– 3/29/04 CS 100 - Lecture 21 1 Some Important Applications of Computers • Spreadsheets • Databases • Symbolic & numeric computation • Networks • Artificial Intelligence 3/29/04 CS 100 CS 100 - Lecture 21 2 1 Lecture 21 3/29/04 23:59 Relation to Algorithms • Algorithmic problem solving is used in these applications • Algorithmic problem solving uses these applications 3/29/04 CS 100 - Lecture 21 3 Spreadsheet • Visual system for representing and manipulating tabular data • Often used for: – budgets & other financial data – grades • Useful for keeping dependant data consistent • Examples: Visicalc, Excel, Lotus 1-2-3 3/29/04 CS 100 CS 100 - Lecture 21 4 2 Lecture 21 3/29/04 23:59 Example Spreadsheet Column Cells Row Cursor 3/29/04 CS 100 - Lecture 21 5 Cells • Each cell has a “name” – e.g. “D2” is the cell in column D and row 2 • Cells can contain character data – e.g., names, column headings • Cells can contain numeric data in various formats – e.g., integer, real, currency, date, time • Cells can contain formulas – e.g., “D2*E2” 3/29/04 CS 100 CS 100 - Lecture 21 6 3 Lecture 21 3/29/04 23:59 Relative & Fixed Cell References • A name of the form “D2” is a relative reference to the cell in column D and row 2 • A name of the form “$D$2” is a fixed reference to the cell in column D and row 2 • When a formula is copied into another cell: – the fixed references refer to the same cells as they originally did – the relative references refer to cells in the same relative positions 3/29/04 CS 100 - Lecture 21 7 Example • Suppose in G2 we have the formula: D2 * (1 + $C$8 / 100) * E2 • When we copy it to G3 it will be: D3 * (1 + $C$8 / 100) * E3 • When we copy it to G4 it will be: D4 * (1 + $C$8 / 100) * E4 • And so forth 3/29/04 CS 100 CS 100 - Lecture 21 8 4 Lecture 21 3/29/04 23:59 Run Excel Spreadsheet Example 3/29/04 CS 100 - Lecture 21 9 Beginning Spreadsheet 3/29/04 CS 100 CS 100 - Lecture 21 10 5 Lecture 21 3/29/04 23:59 Formula Entered in F2 3/29/04 CS 100 - Lecture 21 11 Result of Formula in F2 3/29/04 CS 100 CS 100 - Lecture 21 12 6 Lecture 21 3/29/04 23:59 Formula Copied into Rest of Column 3/29/04 CS 100 - Lecture 21 13 Result of Formulas in Column F 3/29/04 CS 100 CS 100 - Lecture 21 14 7 Lecture 21 3/29/04 23:59 Example Pie Chart of Column F 3/29/04 CS 100 - Lecture 21 15 Scatter Chart of Columns D vs. C 3/29/04 CS 100 CS 100 - Lecture 21 16 8 Lecture 21 3/29/04 23:59 Compute Sum of Column F 3/29/04 CS 100 - Lecture 21 17 Resulting Sum 3/29/04 CS 100 CS 100 - Lecture 21 18 9 Lecture 21 3/29/04 23:59 Formula for Projected Base Pay Increase 3/29/04 CS 100 - Lecture 21 19 Resulting New Pay 3/29/04 CS 100 CS 100 - Lecture 21 20 10 Lecture 21 3/29/04 23:59 Formula Relativized to Row 3 3/29/04 CS 100 - Lecture 21 21 Formula Relativized to Row 4 3/29/04 CS 100 CS 100 - Lecture 21 22 11 Lecture 21 3/29/04 23:59 Change Format of Column G 3/29/04 CS 100 - Lecture 21 23 Resulting Reformated Column G 3/29/04 CS 100 CS 100 - Lecture 21 24 12 Lecture 21 3/29/04 23:59 Insert Column for Merit Raises 3/29/04 CS 100 - Lecture 21 25 New Formula to Include Merit Raises 3/29/04 CS 100 CS 100 - Lecture 21 26 13 Lecture 21 3/29/04 23:59 Resulting Projected New Total 3/29/04 CS 100 - Lecture 21 27 Bar Chart of Old and New Pay 3/29/04 CS 100 CS 100 - Lecture 21 28 14 Lecture 21 3/29/04 23:59 Goal Seeking: Adjust Base Rate so Total = $12,000 3/29/04 CS 100 - Lecture 21 29 Calculated Base Rate to Meet Goal 3/29/04 CS 100 CS 100 - Lecture 21 30 15 Lecture 21 3/29/04 23:59 Computer Science Issues 3/29/04 CS 100 - Lecture 21 31 Update Strategies • Reevaluate every cell • Reevaluate only those cells containing formulas – works on small spreadsheets • Reevaluate only those cells that depend on the changed cell – problem: indirect dependencies (ripple effect) 3/29/04 CS 100 CS 100 - Lecture 21 32 16 Lecture 21 3/29/04 23:59 Indirect Dependency 3/29/04 CS 100 - Lecture 21 33 Result 3/29/04 CS 100 CS 100 - Lecture 21 34 17 Lecture 21 3/29/04 23:59 Problem of Indirect Dependencies • Suppose change D2 – Could look for all cells with a formula involving D2, and reevaluate those But suppose F9 depends on F2, and F2 depends on D2 – • Bad solution: 1. check all cells & update those directly dependant on D2 2. keep a list of them 3. check all cells & update those directly dependent on those in list 4. keep a list of these, and return to (3) 5. continue until there are no changes 3/29/04 CS 100 - Lecture 21 35 Better Solution • Keep with each cell a list of all other cells directly dependant on it • Update this list whenever a formula is changed • Whenever a cell’s value is changed: – reevaluate all the cells that depend directly on it – reevaluate all the cells that depend directly on those cells – and so forth 3/29/04 CS 100 CS 100 - Lecture 21 36 18 Lecture 21 3/29/04 23:59 Event-Driven Programming • Each cell contains either: – data – or a formula, which is a little program – these formulas are interpreted directly (not compiled into machine code) • Whenever a cell is modified: – it creates an event – which may trigger other events – must end (no circular dependencies) • There is no iteration except that provided through the built-in functions & tools 3/29/04 CS 100 CS 100 - Lecture 21 37 19