290 likes | 400 Views
Chapter 9.1: Lists. Lists are often called by another name in other programming languages – arrays. Suppose there is a list of Customers (people waiting in line). You want to serve each customer one at a time, so each one should walk into the store one at a time. . Use a DoTogether tile
E N D
Chapter 9.1: Lists • Lists are often called by another name in other programming languages – arrays.
Suppose there is a list of Customers (people waiting in line). You want to serve each customer one at a time, so each one should walk into the store one at a time. • Use a DoTogether tile • Use a DoInOrder tile • Use a ForAllTogether tile • Use a ForAllInOrder tile
Which of the following types can be used in a list? • Rockette • Rockette’s Thighs • Rockette’s Hips • All of the Above
If I declare a list thusly, and use a ForAllInOrder tile, what order do the rockettes kick?
Old SuperBowl Commercialhas three frogs talk • But what they are advertising we isn’t “ahem” a school topic • So let’s modify it.
Three Frogs • Three frogs, together they say • Frog 1 (on left) “Hear No Evil” • Frog 2 (in middle) “See No Evil” • Frog 3 (on right) “Speak No Evil” • That’s hard – let’s start with • Three frogs talk in order left to right • All of them say the same thing: Hello • Like this:
What does this code do? • The frogs talk in order left to right • The frogs talk in backwards order (right to left) • Each frog talks, but the order depends
What if I want the frogs to say Hello (left to right) 5 times? • Make a counted loop run five times INSIDE (as the inner loop) the ForAllInOrder loop • Make a counted loop run five times with the ForAllInOrder loop INSIDE (as the inner loop)
By the way… you can make a list out of different kinds of objects • Do the wave with different “People” objects • Make different types of flowers grow And out of other things…
Problem: Each frog should say something different… Hear no evil See no evil Speak no evil
What programming construct would you use? • An if statement inside the For all in order • A counted loop inside the For all in order • An if statement before the For all in order • A counted loop outside the For all in order • I don’ t know…
There are (at least) two possible solutions… What is the BEST explanation of why is one better than the other? • Option 1 is better because it is shorter • Option 1 is better because it does the least number of “checks” (or boolean condition evaluations) • Option 2 is better because it makes clear exactly what the “checks” (or boolean condition evaluations) are • Option 2 is better because it has a regular structure with empty “else” portions
Shorter • Least Boolean Checks C) Clear BooleanChecks D) RegularStructure with Empty “else”es
Remember this… • “Good” programs aren’t (always) the ones that • Make it easiest on the programmer • Are easiest for humans to read • Require least amount of effort from programmer • Instead they are (usually) the ones that • Require least computing work (by computer) • Are easiest to adapt to new situations • Methods and parameters come in here
There’s an EVEN BETTER way to write this program! • Think about this… • What if we had… • A list of froggies • Some number of frogs that want to talk • A list of words • Exactly the same “number” of Strings to be “said” by each of those frogs… • How can we make a program that will make each frog say a specific word • In ONLY 2 LINES OF CODE?!?!?
Let’s make the beetles do a more complicated dance… • Like this:
Which structure would you want? • One ForAllInOrder loop • One ForAllInOrder loop with an if statement inside • One if statement with a ForAllTogether inside • None of the above
Does this code correctly implement our intended behavior? • Yes • No • I don’t know And WHY!
What is new about this code? • Nested “for all” loops • A loop that “iterates” over all items in a list • Inside that is another loop that goes over all the items in a list • In this case, happen to be the same list • Wow, you can do complicated things now…
There are 4 beetles, how many times is this instruction executed? • 4 • 12 • 16 • 48 • I don’t know