Outline the steps in problem solving. Section 2: Problem-solving and program design Objective 2.1: Outline the steps in problem solving. Objective 2.2: Decompose a simple problem into its significant parts. Content Definition of the problem; propose and evaluate solutions; Determination of the most efficient solution; develop and represent algorithm; test and validate the solution; decompose a problem into input, processing, output and storage. The steps in problem solving The steps in problem solving are: 1. Definition of the problem 2. Propose and evaluate solutions 3. Determination of the most efficient solution 4. Develop and represent algorithm 5. Test and validate the solution Definition of the problem Defining the problem is the first step towards solving a problem. It is the most important step since it leads to a clearer understanding of what is given and what is required. If the programmer does not fully understand what is required, then he/she cannot produce the desired solution. This step involves decomposing the problem into three key components: 1. Inputs: what is given (source data) 2. Outputs: the expected results 3. Processing: the tasks/actions that must be performed To do this, a defining diagram is used. A defining diagram is a table with three columns labeled to represent the components. Inputs can be identified by the keywords that precede them. These are: GIVEN, ENTER, READ, or ACCEPT. Outputs can be identified by the keywords: PRINT, DISPLAY, FIND, PRODUCE, or OUTPUT. Processing can be determined by asking; “What do I have to do with the inputs in order to produce the desired output?” The actions/tasks determined must be listed in a logical sequential order. Example: Given two numbers find and print their product. Defining diagram: INPUT PROCESSING OUTPUT 2 numbers say num1, num2 1. Read two numbers 2. Find the product 3. Print the product PRODUCT Proposing and Evaluating Solutions Proposing a solution The second step in solving a problem is ‘Proposing and Evaluating Solutions’. After defining the problem, you would know what needs to be done. In this step, you figure out how to do it, bearing in mind that a problem can have many different solutions. Initially, go through each step of the solution manually (by hand) using sample input data to see if the solution provides the desired outcome. Then review it to see how you can make it more efficient. After completing the manual solution to the problem the next step is to write the solution as a sequence of instructions. Example: Start Read first number, call it num1 Read second number, call it num2 Multiply num1 by num2 Print product Stop Objective 2.3: Distinguish between variables and constants Variables In processing data, values that are manipulated need to be stored in a memory location. Because of the large number of storage location in memory, we need to have an identifier to label each location. Depending on if the value changes during the execution of the instructions, it is called a variable. If the value does not change it is called a constant. Choosing Identifier Names Choose names that reflect the kind of data that is being stored. It helps any reader to understand the solution better, if the identifier reflects what they store. For example, the variable name product indicates that the value stored in that memory location is a product. If instead, X was used, this does not convey the contents of that memory location to the reader of the solution, and it will make debugging and program maintenance more difficult. Most programming languages have strict rules regarding identifier names, for example, in Pascal, they must begin with a letter or underscore; they can be a combination of letters and digits or underscore and the length cannot exceed 31 characters. Objective 2.4: Use appropriate data types Each piece of data stored in memory is of a specific data type. In programming there are five (5) basic data types. Data Type Description Examples Integer Positive and negative whole numbers including zero 23,-45, 0 Real All numbers including fractions 15.7, -19.25, 8 Character Any key on the keyboard ‘A’, ‘z’, ‘8’, ‘?’ String Characters put together Boolean True or False ‘Hello world’, ‘Marcus’ TRUE or FALSE