Create Presentation
Download Presentation

Download

Download Presentation

Introduction to Computers and Programming (CSC103) – Lecture 4 , 5 and 6

95 Views
Download Presentation

Download Presentation
## Introduction to Computers and Programming (CSC103) – Lecture 4 , 5 and 6

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**Introduction to Computers and Programming(CSC103) –**Lecture 4, 5 and 6 Dr. Muhammad Kamran Email: m.kamran.nuces@gmail.com Comsats Institute of Information Technology [www.ciitwah.edu.pk]**Algorithm**A concept that pervades all areas of computer science. Algorithm is a process that a computer could carry out to complete a well defined task within finite time and resources. The objective of computer science is to solve problems by developing, analyzing, and implementing algorithmic solutions.**Al-Khwarizmi Principle**• All complex problems can be broken into simpler sub-problems. • Solve a complex problem by breaking it down into smaller sub-problems and then solve them (in a specified order), one at a time. • When all the steps are solved, the original problem itself has also been solved. • This process is called Algorithm.**Computer Programming**• Computer is a powerful tool • It is not intelligent! • In order to use computer to solve our problems, we must tell it what we want done and the order in which we want it done. • These instructions are called computer program. • This process is called computer programming. • The person giving these instructions is called a computer programmer.**Computer Programming**• Analyze the problem • Develop a sequence of instructions for solving the problem. • Communicate it to the computer.**Phases of the software life cycle**• Requirement definition • Analysis and design • Coding • Testing • Implementation • Maintenance**Problem Solving Techniques**• Ask questions • Look for things that are similar • Means-ends analysis • Divide and Conquer • Merging solutions**Ask Questions**• Ask questions until you have developed a clear understanding of the problem. • Who, What, Why, Where, When. • What do I have to work with? (my data or input) • How much data is there? • What should my output look like? • How many times is the process going to be repeated? • What are the exceptions to the main course? • What special error condition might come up?**Look for things that are Similar**• Do not reinvent the wheel! • Draw Analogies**Means-Ends analysis**• Starting point and ending state are known. • You need to devise the transformation function. • Ends are defined – you need to analyze your means of getting between them. • Lahore to Islamabad • What are the options? • Narrow down the options? • Figure out the details?**Divide and Conquer**• Same as the Al-khwarizmi Principle. • Breakup the large problem into smaller units and then solve them one at a time. • Building block approach.**Easy Sub-problem**Hard Sub-problem Easy Sub-problem Easy Sub-problem Easy Sub-problem Divide and Conquer Hard Problem**Merging Solution**• Sometimes merging two independent solutions solves the problem more efficiently? • Calculate Average • Count values • Sum Values • Divide sum by count • Alternative approach • calculate partial sum as you count**Problem Solving Techniques**• What is the unknown? • What is required? • What are the data? • What is given? • What is the condition? • By what condition the unknown is linked to the data?**Conversion from Fahrenheit to Celsius**• Output • Temperature in Celsius (C) • Inputs • Temperature in Fahrenheit (F) • Process**Calculate and print the average grade of 3 tests for the**entire class • Input • 3 test scores for each student • output • Average of 3 tests for each student • Process • Get three scores • Add them together • Divide by three to get the average • Print the average • Repeat step 1 to 4 for next student • Stop if there are no more students**Flow Charts**• A flowchart is a visual or graphical representation of an algorithm. • The flowchart employs a series of blocks and arrows, each of which represents a particular operation or step in the algorithm. • The arrows represent the sequence in which the operations are implemented.**Flowcharts – Most Common Symbols**Function Symbol Name Terminal Represents the beginning or end of a program. Flow-line Represents the flow of logic. Process Represents calculations or data manipulation. Input/Output Represents inputs or outputs of data and information. Decision Represents a comparison, question, or decision that determines alternative paths to be followed.**A**START X1 = (-B+R)/(2A) X2 = (-B-R)/(2A) INPUT A, B, C Calculate R = SQRT(B2-4AC) PRINT A, B, C, X1, X2 A END Flowcharts – An Example Find the solution of a quadratic equation Ax2+Bx+C=0, given A, B and C.**Flow of data**Connectors Flow Charting Expresses the flow of processing in a structured pictorial format. Input and Output Steps Processing Steps Decision Terminator**Begin**Calculate Print ‘C’ Stop Flow chart for Converting Fahrenheit into Celsius Get temp. in ‘F’**Get three scores**Add them together Print the average Divide the result by three More students? Yes No Stop Flow chart for calculating average of three scores**START**INPUT A, B Add A to B and store in C OUTPUT C END Comparison of Algorithm representations in Natural language, flowchart and Pseudo-code Step 1: Begin the calculations Step 2: Input two values A and B Step 3: Add the values Step 4: Display the result Step 5: End the calculation BEGIN Adder Input A and B C = A + B PRINT C END Adder Natural language Flowchart Pseudo-code**Algorithm Representation(Natural Languages)**• English or some other natural language. • Are not particularly good: • too verbose • unstructured • too rich in interpretation (ambiguous) • imprecise**Algorithm Representation(Using Programming Language)**{ int I, m, Carry; int a[100], b[100], c[100]; scanf(“%d”,&m); for ( int j = 0 ; k <= m-1 ; j++ ) { scanf(“%d”,&a[j]); scanf(“%d”,&b[j]); } Carry = 0; i = 0; while ( i < m ) { …**Programming Languages**• Are not particularly good either • Too many implementation details to worry about • Too rigid syntax • Easy to lose sight of the real task**Pseudo-code**• We need a compromise between the two: Pseudo-code • Computer scientists use pseudo-code to express algorithms: • English like constructs (or other natural language), but • modeled to look like statements in typical programming languages.**Pseudo-code Primitives**Three basic kind of operations: • Sequential • Computation ( Set … ) • Input/Output ( Get ... / Print ... ) • Conditional • If … Else • If … • Iterative / looping • Repeat ... • While ...**Computation**General format: Set the value of <variable> to <expression> Performs a computation and stores the result. Example: Set the value of C to (A + B) Set the value of location to 0 Set the value of GPA to (sum / count)**Variables**A variable is a named storage. - A value can be stored into it, overwriting the previous value - Its value can be copied Examples: Set the value of A to 3 The variable A holds the value 3 after its execution Set the value of A to (A+1) Same as: add 1 to the value of A ( A is now 4)**Not too Strict on Syntax**• Pseudo-code is kind of a programming language without a rigid syntax, for example we can write: • Set the value of A to (B+C) • as • Set A to (B+C) • or even: • Set the value of sum to 0 • Set the value of GPA to 0 • as • Set sum and GPA to 0**Input**Output Sequential Operations - Input/Output Outside world • The Computer needs to communicate with the outside world: • INPUToperations allow the computing agent to receive from the outside world data values to use in subsequent computations. • OUTPUT operations allow the computing agent to communicate results of computations to the outside world.**Input**General format: The computing agent (computer) suspends executions and waits for an input value. Get a value for <variable>**Input - Examples**• Examples: • Get value for grade • Get values for N, M • Can write: • Get value for N1 • ... • Get value for N100 • as • Get value for N1,..., N100**Output**General format: The computing agent (computer) displays the value of the variable(s). Print the value of <variable> Print the message, "<text>"**Output - Examples**• Examples: • Print the value of grade • Print the message, "Hello" • Can write: • Print the value of N1 • ... • Print the value of N100 • as • Print the values of N1,..., N100**Example**• Write an algorithm to calculate the average of three numbers. Steps Operations 1 Get values for N1, N2, and N3 2 Set the value of Average to (N1+N2+N3)/3 3 Print the value of Average 4 Stop**Conditional Operations**If <condition> then operations for the then-part Else operations for the else-part • Evaluate <condition> expression to see whether it is true or false. • If true, then execute operations in then-part • Otherwise, execute operations in else-part.**Conditions, or Boolean Expressions**• A condition is one whose value is true or false, for example: • 3 > 2 is greater than (true) • 3 = 2 is equal to (false) • A > 2 is true if A’s value is greater than 2 (at the time this is executed), false otherwise.**Conditions may be compounded**E1 or E2 true if at least one of them is true; false otherwise. E.g. 3 > 2 or 2 > 3 is true E1 and E2 true if both are true; false otherwise E.g. 3 > 2 and 2 > 3 is false not E true if E is false, false if E is true**Example**1. Get a value for A 2. If A = 0 then 3. Print the message, “The input is zero” Else 4. Print the message, “The input is not zero” 1. Get a value for grade 2. If grade < 1 or grade > 9 then 3. Print the message, “Invalid grade” Else 4. Set the value of total to (grade + total)**Iterative Operation - While**While <condition> remains true do steps i to j step i: operation step i+1: operation … step j: operation • Evaluate <condition> • If condition is true, execute steps i to j, then go back to i. 3. Otherwise, if condition is false,continue execution from step j+1.**Example**1 Get a value for count 2 While count < 10 do 3 Set square to (count * count) 4 Print the values of count and square 5 Add 1 to count 6 Stop**While Loops**What happens when it gets executed? If count starts with 7, we get printout 7 49 8 64 9 81 What if count starts with 11? Nothing is printed, loop is executed 0 times.**Exercise**What does the following algorithm do? Set value of A equal to 1 While A > 0 Print message, “Enter an integer” Get a value for A End of the loop Stop**Tracing an algorithm**The current values of algorithm variables at various points during execution can be known by tracing the algorithm with a table called Trace Table**Trace Table**Problem: Determine the value of the variable x and y after the following algorithm is executed Pseudocode: x = 5 Y = 7 If x = 5 then y= 8 else y= 0 if y = 7 then x = 6 else x = 3 if x = y then y = 0 Nesting???**… Continued**Trace table for algorithm Step No. X y 1 5 - 2 5 7 3 5 8 4.1 5 8 4.2 3 8 4.3 3 8**Sequential Search: an Example**Find the phone number of a given Name in an (unsorted) list of names and their phone numbers NamesPhone numbers N1T1 N2T2 … N1000T1000**Sequential Search: an Example**Name to find: Smith, John 1 2 3 4 5 6 7 8 9 10 11 553614 442563 521463 541236 452361 442563 551123 441155 521364 528975 541258