As the previous assignment indicated, reordering a list is a very common occurrence within a computer program. Consider some of these common tasks:
- Rearranging the apps on an iPhone
- Sorting items in an online shop by “bestselling,” “price,” or “best reviews"
- Rotating an image
- Ranking search results
All of these tasks are essentially reordering a list of items so that it is displayed in a different way. We’ve output lists in different orders before now, but we have not actually altered a list’s contents so that they are stored in a different order. Examine this (possibly daunting) program:
This program reorders a list, but how? It’s not actually as complex as it looks at first glance. Some of the parts of this program are directly copied from programs we have dealt with previously. For example,
|The highlighted section is just the framework for processing a list—going through each item in the list one after the other. For reference, see the previous “Process a List” activity. Compare the program there, which simply instructs Scratch to say each item in the list, to the highlighted blocks here.|
|Here, the highlighted section is the algorithm for swapping two items in a list. This is a direct application of the previous “Swaps” activity, only rather than swapping two singular variables with one another, we are swapping two list items. Compare these blocks with those in the previous activity. How are they the same? How are they different?|
|Finally, let’s examine the remaining blocks. We know that we are processing a list, swapping out some items with others, but which items are we swapping?|
|The highlighted blocks determine which items are swapped.
The real workhorse of the program is this block of code:
This comparison block is the portion of our program that determines that we want the listed to be sorted in alphabetical order. If we were to desire a different ordering, such as by
length of [word], only this block would differ in our resulting program!
Access the Reorder! project on the Scratch website and play around with it. Work with it to sort items in numerical order, reverse alphabetical order, and ordered by
length of [word].
Describe each of the changes you made while experimenting (INCLUDING THE FAILED ATTEMPTS!), and indicate why they work the way they do.