•

7 likes•4,234 views

Algorithm with flow chart and pseudo code

- 2. Solving Problems (1) When faced with a problem: 1. We first clearly define the problem 2. Think of possible solutions 3. Select the one that we think is the best under the prevailing circumstances 4. And then apply that solution 5. If the solution works as desired, fine; else we go back to step 2
- 3. Solving Problems (2) It is quite common to first solve a problem for a particular case Then for another And, possibly another And watch for patterns and trends that emerge And to use the knowledge form those patterns and trends in coming up with a general solution
- 4. Solving Problems (3) It helps if we have experienced that problem or similar ones before Generally, there are many ways of solving a given problem; the best problem- solvers come-up with the most appropriate solution more often than not! The process that can be used to solve a problem is termed as the “algorithm”
- 5. Examples Addition Conversion from decimal to binary The process of boiling an egg The process of mailing a letter Sorting Searching
- 6. Let us write down the algorithm for a problem that is familiar to us Converting a decimal number into binary
- 7. Convert 75 to Binary 752 37 12 18 12 9 02 4 12 2 02 1 02 0 1 1001011 remainder
- 8. Algorithm for Decimal-to-Binary Conversion 1. Write the decimal number 2. Divide by 2; write quotient and remainder 3. Repeat step 2 on the quotient; keep on repeating until the quotient becomes zero 4. Write all remainder digits in the reverse order (last remainder first) to form the final result
- 9. Points to Note: 1. The process consists of repeated application of simple steps 2. All steps are unambiguous (clearly defined) 3. We are capable of doing all those steps 4. Only a limited no. of steps needs to be taken 5. Once all those steps are taken according to the prescribed sequence, the required result will be found 6. Moreover, the process will stop at that point
- 10. Algorithm (Better Definition) 1st Definition: Sequence of steps that can be taken to solve a problem Better Definition: A precise sequence of a limited number of unambiguous, executable steps that terminates in the form of a solution
- 11. Three Requirements: 1. Sequence is: a. Precise b. Consists of a limited number of steps 2. Each step is: a. Unambiguous b. Executable 3. The sequence of steps terminates in the form of a solution
- 12. Why Algorithms are Useful? Once we find an algorithm for solving a problem, we do not need to re- discover it the next time we are faced with that problem Once an algorithm is known, the task of solving the problem reduces to following (almost blindly and without thinking) the instructions precisely All the knowledge required for solving the problem is present in the algorithm
- 13. Analysis of Algorithms Analysis in the context of algorithms is concerned with predicting the resources that are requires: Computational time Memory Bandwidth Logic functions However, Time – generally measured in terms of the number of steps required to execute an algorithm - is the resource of most interest By analyzing several candidate algorithms, the most efficient one(s) can be identified
- 14. Selecting Among Algorithms When choosing among competing, successful solutions to a problem, choose the one which is the least complex This principle is called the “Ockham’s Razor,” after William of Ockham - famous 13-th century English philosopher
- 15. Syntax & Semantics An algorithm is “correct” if its: Semantics are correct Syntax is correct Semantics: The concept embedded in an algorithm (the soul!) Syntax: The actual representation of an algorithm (the body!) WARNINGS: 1. An algorithm can be syntactically correct, yet semantically incorrect – very dangerous situation! 2. Syntactic correctness is easier to check as compared with semantic
- 16. Now onto Algorithm Representation We have said enough about algorithms – their definition, their types, etc. But, how do we actually represent them? Generally, SW developers represent them in one of three forms: Pseudo code Flowcharts Actual code
- 17. Pseudo Code Language that is typically used for writing algorithms Similar to a programming language, but not as rigid The method of expression most suitable for a given situation is used: At times, plain English At others, a programming language like syntax
- 18. Flowchart A graphical representation of a process (e.g. an algorithm), in which graphic objects are used to indicate the steps & decisions that are taken as the process moves along from start to finish Individual steps are represented by boxes and other shapes on the flowchart, with arrows between those shapes indicating the order in which the steps are taken
- 19. Start or stop Process Input or output Connector Decision Flow line Off-page connector Flowchart Elements
- 20. Algorithm Building Blocks All problems can be solved by employing any one of the following building blocks or their combinations 1. Sequences 2. Conditionals 3. Loops
- 21. Sequences A sequence of instructions that are executed in the precise order they are written in: statement block 1 statement block 2 statement block 3 statement block 1 statement block 2 statement block 3
- 22. Conditionals Select between alternate courses of action depending upon the evaluation of a condition If ( condition = true ) statement block 1 Else statement block 2 End if statement block 1 condition True False statement block 2
- 23. Loops Loop through a set of statements as long as a condition is true Loop while ( condition = true ) statement block End Loop condition True False statement block
- 24. Problem Statement Convert a decimal number into binary
- 25. Convert 75 to Binary 752 37 12 18 12 9 02 4 12 2 02 1 02 0 1 1001011 remainder
- 26. Solution in Pseudo Code 1. Let the decimal number be an integer x, x > 0 2. Let the binary equivalent be an empty string y 3. Repeat while x > 0 { Determine the quotient & remainder of x ÷ 2 y = CONCATENATE( remainder, y ) x = quotient } 4. Print y 5. Stop
- 27. Start Find quotient & remainder of x ÷ 2 Get x x>0 ? Print y Stop y = CONC(remainder, x) x = quotient x is the decimal number y is the binary equivalent Flowchart of Decimal to Binary Conversion Yes No
- 28. Another Example: Sorting Sort the following objects w.r.t. their heights
- 29. Expected Result
- 30. Strategy There are many strategies for solving this problem. We demonstrate a simple one: Repeat the following steps while the list is un- sorted: Start with the first object in the list Swap it with the one next to it if they are in the wrong order Repeat the same with the next to the first object Keep on repeating until you reach the last object in the list
- 31. Back to the Objects to be Sorted
- 32. Sorting: Step A1
- 33. Sorting: Step A1 Swap? Yes
- 34. Sorting: Step A2
- 35. Sorting: Step A2 Swap? Yes
- 36. Sorting: Step A3
- 37. Sorting: Step A3 Swap? No
- 38. Sorting: After Step A7
- 39. Q: Is the list sorted? A: No
- 40. Sorting: Step B1
- 41. Sorting: Step B1 Swap? Yes
- 42. Sorting: Step B2
- 43. Sorting: Step B2 Swap? No
- 44. Sorting: After Step B7
- 45. Q: Is the list sorted? A: No
- 46. Sorting: Step C1
- 47. Sorting: Step C1 Swap? No
- 48. Sorting: After Step C7
- 49. Q: Is the list sorted? A: Yes
- 52. A number is even if it can be divided by 2 without remainder. Such numbers are 2, 4, 6, 8.. and so on. The numbers that leave a remainder are called odd. They are 1, 3, 5, 7.. and so on. In programming we find the remainder of a division with the operator %. Also we use the double equals “==” to compare values for equality.
- 54. Summing two numbers was easy – the calculation was one block from the flow chart. But how about 50? Do you have to write 50 blocks to solve this task? Happily – no. You can automate this process by repeatedly incrementing the value of a variable and checking it every time if it exceeds the last value – 50. Then sum that number every step and... there you go! This construction is called loop.
- 56. Find the biggest of 100 prices and reduce it by 10%