Telling a computerhow to behave(via pseudocode -- a workaroundfor Computing’s Tower of Babel.)COS 116: 2/12/2008Sanjeev AroraJan 29, 2008Steps in solving a computational task Design an algorithm: A precise,unambiguousdescription for how to compute a solution. Express algorithm in pseudocode. Turn pseudocode into computer program.Example: Adding two numbersDiscussion TimeImagine you are describing this task to somebody who has never done it. How would you describe it? Our robot is getting ready for a big date… How would it identify the cheapest bottle?(Say it can scan prices)Discussion TimeSolution Pick up first bottle, check price Walk down aisle. For each bottle, do this: If price on bottle is less than price in hand,exchange for one in hand.How can we describe an algorithm preciselyenough so there is no ambiguity?Recall: Scribbler’s “Language” Several types of simple instructions E.g. “Move forward for 1 s” Two types of compound instructionsIf <condition> Then{List of instructions}Else{List of instructions}Do 5 times{List of instructions}Conditional (a.k.a. Branching)Loop (2 types)Do while (condition){List of instructions}Scribbler language illustrates essentialfeatures of all computer languages Fundamental features of human languages:nouns/verbs/adjectives,subjects/objects, pronouns, etc. Computer languages also share fundamental features, e.g. conditionaland loop statements, variables, ability to perform arithmetic, etc.JavaC++BASICPythonComputing’s Tower of BabelSimilar question in different setting Robot has n prices stored in memory Wants to find minimum priceComputer Memory: simplified view A scratchpad that can be perfectly erasedand re-written any number of times A variable: a piece of memory with aname; stores a “value”22.99i =valuenameExamplesi ← 5Sets i to value 5j ← iSets j to whatever value is in i.Leaves i unchangedi ← j + 1Sets i to j + 1.Leaves j unchangedi ← i + 1Sets i to 1 more than it was.Arrays A is an array of n values, A[ i ] is the i’thvalue Example: A[3] = 52.9940.99 62.99 52.99…22.99A =Recall Solution Pick up first bottle, check price Walk down aisle. For each bottle, do this: If price on bottle is less than price in hand,exchange for one in hand.Procedure findmin(in pseudocode) n items, stored in array A Variables are i, best best ← 1 Do for i = 2 to n{if ( A[ i ] < A[best] ) then { best ← i }}Output A[best].Another way to do the samebest ← 1;i ← 1Do while (i < n){i ← i + 1;if ( A[ i ] < A[best] ) then{ best ← i }}New problem for robot: sortingArrange them so prices increase from left to right.SolutionDo for i=1 to n-1{ Find cheapest bottle among those numbered i to n Swap that bottle and the i ’th bottle.}“selection sort”Task for Thurs: Write pseudocode for selection sort; due at the start of lecture.Swapping Suppose x and y are variables.How do you swap their values? Need extra variable!tmp ← xx ← yy ← tmpAside: History of Algorithm Named for Abu Abdullah Muhammad binMusa al-Khwarizmi(780-850AD) His book "Al-Jabr wa-al-Muqabilah" evolvedinto today's high school algebra text. Notion of algorithm has existed for atleast 2000 years (in Hindu, Chinese, andGreek traditions) “Variables” in algebra come from thesame tradition.Fact: This simple pseudocode is all we need to expressallall possible computations (topic of a future lecture).“Findmin? Sorting?? Pseudocode???How about something more important?”Coming upon Thurs:Extreme
View Full Document