Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 University of Utah – School of Computing Computer Science 1021 "Thinking Like a Computer"

Similar presentations


Presentation on theme: "1 University of Utah – School of Computing Computer Science 1021 "Thinking Like a Computer""— Presentation transcript:

1 1 University of Utah – School of Computing Computer Science 1021 "Thinking Like a Computer"

2 University of Utah – School of Computing University of Utah 2 Define the Problem You are to write a program to shuffle a stack of numbered cards

3 University of Utah – School of Computing University of Utah 3 Programming Language Your Program always starts with: -Create a pile of cards called Start with all 52 cards in it. Your Program can then contain any combination of: -Create a new, empty, pile called _____ (name of your choice) -Move Card from Pile ______ to Pile ______ Where ____ is one of your piles

4 University of Utah – School of Computing University of Utah 4 Language Rephrased This is All your program can consist of: 1. Create start pile 2. Create empty pile called __________ 3. Move card from ______ to _________ But Lines 2 and 3 can occur as often as you want!

5 University of Utah – School of Computing University of Utah 5 Program Execution Rules Program Always Starts from Top of Page Program Always Proceeds one line at a time -From Top Bottom Every Line is completed before next line is executed.

6 University of Utah – School of Computing University of Utah 6 Algorithm An Algorithm is a list of steps that tell us how to accomplish a goal, e.g., -a cooking recipe -a set of directions to get to a party -a computer program

7 University of Utah – School of Computing University of Utah 7 How Verbose? An Algorithm can be very high level -Go get me a pizza Or Very Low Level -Stand up, Turn Left, Walk 10 paces, … Hand the clerk $6.00, Receive change, Turn around, … Hand box to instructor, Turn around, … Sit down.

8 University of Utah – School of Computing University of Utah 8 High Level vs Low Level High Level Programming Language: -The closer the algorithm is to English and how you normally converse, the Higher the level of the program Computer Programming Languages: -While considered high-level, are still very low level compared to what you are used to

9 University of Utah – School of Computing University of Utah 9 Example Algorithm Create Piles Start and Finish Move all cards from Start to Finish This is PSEUDOCODE -A shorthand notation that is easily translated into actual CODE

10 University of Utah – School of Computing University of Utah Example Program 1.Create Start Pile 2.Create New Pile Finish 3.Move card from Start to Finish 4.Move card from Start to Finish 5.Move card from Start to Finish 6.Move card from Start to Finish 7.Move card from Start to Finish 8.Move card from Start to Finish 9.Move card from Start to Finish 10.Move card from Start to Finish 11.Move card from Start to Finish 12.Move card from Start to Finish 13.Move card from Start to Finish 14.Move card from Start to Finish 15.Move card from Start to Finish 16.Move card from Start to Finish 17.Move card from Start to Finish 18.Move card from Start to Finish 19.Move card from Start to Finish … 54.Move card from Start to Finish

11 University of Utah – School of Computing University of Utah What does this Program Accomplish? The sample program is an example of an algorithm which changes a list of items from forward to backward (changes the order) In this case the list is a pile of cards, but just as easily we could have reversed the list of students in the class.

12 University of Utah – School of Computing University of Utah Your Job: Shuffle Cards Before you begin: Always ASK Questions. Always CLARIFY the problem! So?

13 University of Utah – School of Computing University of Utah Did you ask? What does Shuffle mean? Can we make multiple piles?

14 University of Utah – School of Computing University of Utah Your Turn On paper, write out an algorithm for shuffling the stack of cards

15 University of Utah – School of Computing University of Utah Language Rephrased This is all your program can consist of: 1. Create start pile 2. Create empty pile called __________ 3. Move card from ______ to _________ But Lines 2 and 3 can occur as often as you want!

16 University of Utah – School of Computing University of Utah Possible Solution Start Up Create Start Pile with all cards Create A Pile Create B Pile Create Finish Pile

17 University of Utah – School of Computing University of Utah Solution – Separate Cards Move Card from Start to A Move Card from Start to B Move Card from Start to A Move Card from Start to B Move Card from Start to A Move Card from Start to B Move Card from Start to A Move Card from Start to B Move Card from Start to A Move Card from Start to B

18 University of Utah – School of Computing University of Utah Solution … Move Card from Start to A Move Card from Start to B Move Card from Start to A Move Card from Start to B Move Card from Start to A Move Card from Start to B Move Card from Start to A Move Card from Start to B Move Card from Start to A Move Card from Start to B Move Card from Start to A Move Card from Start to B Move Card from Start to A Move Card from Start to B Move Card from Start to A Move Card from Start to B Move Card from Start to A Move Card from Start to B

19 University of Utah – School of Computing University of Utah Solution Getting to the Finish Move Card from A to Finish …

20 University of Utah – School of Computing University of Utah Solution – B to Finish Move Card from B to Finish …

21 University of Utah – School of Computing University of Utah ? Only One Solution ? Did your solution match mine? Does that mean it is incorrect? How many solutions are there?

22 University of Utah – School of Computing University of Utah LONG Programs Is it just me or did that program contain a huge number of lines of code to accomplish a very simple task? Any suggestions to make the program easier to read (more concise)?

23 University of Utah – School of Computing University of Utah Repetition If you are doing something over and over again, why not just say so: New Line of CODE -Repeat the previous _N_ lines of code _M_ times. (Note N and M can be any whole numbers)

24 University of Utah – School of Computing University of Utah Program Rewritten Create Start Pile with all cards Create A Pile Create B Pile Create Finish Pile Move Card from Start to A Move Card from Start to B Repeat the previous 2 lines 26 times Move Card from A to Finish Repeat the previous line 26 times Move Card from B to Finish Repeat the previous line 26 times

25 University of Utah – School of Computing University of Utah Vocabulary Recap Algorithm -A list of steps to accomplish a Goal Computer Program -Repeats a bunch of simple steps to accomplish a larger goal

26 University of Utah – School of Computing University of Utah Whats wrong? Create Start Pile with all cards Create A Pile Create B Pile Create Finish Pile Move Card from Start to A Move Card from Start to B Repeat the previous 2 lines 52 times …

27 University of Utah – School of Computing University of Utah What if? Create Start Pile with all cards Create Finish Pile Move Card from Start to Finsh …

28 University of Utah – School of Computing University of Utah Bugs The previous examples are called bugs: -Finsh was a syntax error -52 was a logical error Syntax Errors are often easy to find (but not always)… Usually the computer wont even run the program Logical Errors can take many hours to track down!

29 University of Utah – School of Computing University of Utah Questions? Algorithms Repetition (loops) Bugs

30 University of Utah – School of Computing University of Utah What did I really accomplish? Did I really shuffle the cards? What do else do we need to do? What other Programming Constructs do we need?

31 University of Utah – School of Computing University of Utah New Algorithm (Pseudo Code!) Set up Start, A, B, Finish For every card in the deck, move some cards from start to A and other cards to B Randomly Move all cards from A to Finish Move all cards from B to Finish

32 University of Utah – School of Computing University of Utah Randomizer Also, we get only simple commands in a program, so…. New Command: -Randomizer() Produces a number between 0 and 1 (e.g., 0.01, 0.95, , 0.123, , ) -Note the () is just syntactic sugar telling us that Randomizer does something

33 University of Utah – School of Computing University of Utah If Statement If ( randomizer() produces a number >.5 ) -Move Card from Start to A Otherwise -Move Card from Start to B End If Statement (Note: this is considered a single statement!)

34 University of Utah – School of Computing University of Utah Questions Discussion!


Download ppt "1 University of Utah – School of Computing Computer Science 1021 "Thinking Like a Computer""

Similar presentations


Ads by Google