250 likes | 387 Views
CMT1000: Introduction to Programming. Ed Currie Lecture 2A: Pizza. Pizza making algorithm. Often when devising an algorithm, we will first express it using instructions at a high level of abstraction, that is, in quite general terms, without great detail.
E N D
CMT1000: Introduction to Programming Ed Currie Lecture 2A: Pizza
Pizza making algorithm • Often when devising an algorithm, we will first express it using instructions at a high level of abstraction, that is, in quite general terms, without great detail. • How can we do this for a pizza recipe?
First stab • 1. Make the base • 2. Make the topping • 3. Put the topping on the base • 4. Cook it Four smaller problems to solve; Not sufficiently detailed yet to enable us to make the pizza
Stepwise refinement needed • => an algorithm comprising instructions sufficiently detailed for our processor to follow. • The detailed algorithm is said to be more concrete, or at a lower level of abstraction, than the original attempt.
Refinement • 1. Make the base => Make the base according to the recipe on page 15 • 2. Make the topping ????????? • 3. Put the topping on the base ???????? • 4. Cook it => Bake for 20 minutes directly on the oven shelf.
It’s like a computer program: • Input data • Instructions • Output • An algorithm being executed is generally known as a process, and the thing that is executing it is called a processor • Another analogy is that of the text of a play being the algorithm, and the performance of the play being the process.
Sub-programs • Make the base according to the recipe on page 15... ..is asking the cook to execute another algorithm, the one on page 15 for making a pizza base. • This idea is very important in writing computer programs.
Question • What are the advantages of subalgorithms?
Answer • The main algorithm will be more succinct • The main algorithm will be easier to understand, as the code for the subalgorithm is not cluttering it up. • The subalgorithm can be used over and over again.
Question • What would happen if an instruction in an algorithm told the processor to execute the algorithm of which the instruction was a part?
Parameters • “Make the base…” says follow the base-making instructions on page 15... • ...but using the quantities of ingredients (input) listed in the current recipe, • causing a double quantity of the base to be made. • The same instructions can be followed to make any required quantity of the base • The quantities of ingredients are parameters to the sub-algorithm.
Question • What are the advantages of parameterising an algorithm?
Answer • The same algorithm instructions may be told to operate on different data, making the algorithm much more general, versatile and useful.
Re-use of algorithms • Sometimes we can re-use an algorithm which we already have available, as with ‘make the base’. • This idea of re-use is also extremely important in computer programming. • Libraries • Java API
Pseudocode and structured programming • The English language has enormous expressive power and subtlety.. ...but it is often hard to be precise when using English to describe something accurately. • Computer programming language instructions have precisely one meaning. • We often use pseudocode to express our algorithms before final translation into programming languages.
Exercise • Try to find as many meanings as you can for the sentence “The woman made the robot fast”
Sequence • Consider the instruction “Make the topping” • We refined this into the instruction sequence: - Heat the oil in a frying pan - Add the onion, garlic and chillies and fry for 5 minutes etc… • We will now further refine this towards something resembling a computer program, using pseudocode notation.
Repetition • Heat the oil in a frying pan... • How can we be more precise about this? • How long should we heat the oil for? Until it sizzles when we add a piece of onion to it. • Express using a pseudocode construct called a while loop.
Heat the oil in a frying pan - Put oil in pan - Light gas - Place small piece of onion in pan - WHILE onion doesn’t sizzle Wait 30 seconds • Semantics?
Question • Which of the following are valid boolean expressions? • It is raining. • Is it raining? • Eat my shorts. • Doh!
Question • I am cold and I am wet. • This statement is false. • 2 = 2 • 2 > 8
Selection • Add the onion • Add the garlic • Add the chillies • Fry for 5 minutes
However, not everyone has a taste for spicy hot pizza! - Add the onion - Add the garlic - IF eater likes hot pizza Add the chillies - Fry for 5 minutes
Some prefer browner onions IF eater likes very brown onions Fry for 10 minutes ELSE Fry for 5 minutes
Test and evaluate • Does the pizza taste as we wanted it to? • Is it quick and easy to make? • Are the ingredients appropriate? Could one or more have been left out? • Does it cost too much to make?