Outline • Designing structured programs in C: – Counter-controlled repetition – Sentinel-controlled repetition – Top down design and stepwise refinement • Type conversion • Functions(prototype and definition)
Repetitions • The while loop repeats untill the condition is true. Condition • The condition to stop the repeated loop True depends upon the output required. Repeated_Actions False
Formulating Algorithms (Counter-Controlled Repetition) • Counter-controlled repetition – Loop repeated until counter reaches a certain value. – Counter is a variable used to specify the number of times a set of statements should execute. – Definite repetition: number of repetitions is known • Example (class-averaging problem) A class of ten students took a quiz. The marks (integers in the range 0 to 100) for this quiz are available to you. Determine the class average on the quiz
Class-averaging Problem • Pseudocode: 1. Set total to zero 2. Set grade counter to one 3.while grade counter is less than or equal to ten 1. Input the next grade 2. Add the grade into the total 3. Add one to the grade counter 4. Set the class average to the total divided by ten 5. Print the class average
Formulating Algorithms with Top- Down, Stepwise Refinement • Reconsider class-averaging problem: Develop a class-averaging program that will process an arbitrary number of grades each time the program is run. – Unknown number of students. – How will the program know when to end? • Use sentinel value – Also called signal value, dummy value, or flag value – Indicates “end of data entry.” – Loop ends when user inputs the sentinel value – Sentinel value chosen so it cannot be confused with a regular input (such as -1 in this case)
Formulating Algorithms with Top- Down, Stepwise Refinement • Top-down, stepwise refinement – Begin with a pseudocode representation of the top: Determine the class average for the quiz – Divide top into smaller tasks and list them in order: Initialize variables Input, sum and count the quiz grades Calculate and print the class average • Many programs have three phases: – Initialization: initializes the program variables – Processing: inputs data values and adjusts program variables accordingly – Termination: calculates and prints the final results
Formulating Algorithms with Top- Down, Stepwise Refinement • Refine the initialization phase from Initialize variables to: Initialize total to zero Initialize counter to zero • Refine Input, sum and count the quiz grades to Input the first grade (possibly the sentinel) While the user has not as yet entered the sentinel Add this grade into the running total Add one to the grade counter Input the next grade (possibly the sentinel)
Formulating Algorithms with Top- Down, Stepwise Refinement • Refine Calculate and print the class average to If the counter is not equal to zero Set the average to the total divided by the counter Print the average else Print “No grades were entered”
Refined Pseudocode for Class- averaging Problem Pseudocode: 1. Initialize total to zero 2. Initialize counter to zero 3. Input the first grade 4. While the user has not as yet entered the sentinel a. Add this grade into the running total b. Add one to the grade counter c. Input the next grade(possibly the sentinel) • If the counter is not equal to zero 1. Set the average to the total divided by the counter 2. Print the average Else a. Print “No grades were entered”
Type Conversion • C evaluates arithmetic expressions only in which the data types of the operands are identical. • To ensure that operands are of same type the compiler performs type conversion. • Converting between types can be : – Implicitly (automatically) – Explicitly (forced)
Explicit Conversion • Type is converted using unary type cast operator. • Which temporary converts the operands. • Example: in an expression containing the data types int and float, int operand is converted to float. float average, total; int counter; average = total/(float)counter; • The temporary floating-point copy of counter is created. The value stored in counter is still integer. • calculation is performed and the result of floating-point division is assigned to average.
• Cast operator is unary operator i.e. it takes only one operand. • It is formed by placing parentheses around the type name with operand. Syntax (type) operand;
Program Modules in C • Functions – Modules in C are called functions. – Programs combine user-defined functions with library functions • C standard library has a wide variety of functions for performing common mathematical calculations, string manipulations, character manipulations, input/output and many more. • C standard library makes your job easier. • Functions like printf(), scanf(), pow() are standard library functions. • We can also write functions to define some specific task in a program and these functions are called user-defined functions.
Functions • Functions – Modularize a program – All variables defined inside functions are local variables • Known only in function defined. – Parameters • Functions have list of parameters. • Communicate information between functions. • Are also Local variables to that function.
Benefits of functions – Divide and conquer • Manageable program development – Software reusability • Use existing functions as building blocks for new programs • Abstraction - hide internal details (library functions) – Avoid code repetition
Function Call • Function calls – Invoking functions • Provide function name and arguments (data) • Function performs operations or manipulations • Function returns results – Function call analogy: • Boss asks worker to complete task – Worker gets information, does task, returns result – Information hiding: boss does not know details
Function Definitions • Function definition format return-value-type function-name( parameter-list ) { declarations and statements } – Function-name: any valid identifier – Return-value-type: data type of the result (default int) • void – indicates that the function returns nothing
– Parameter-list: comma separated list, declares
parameters • A type must be listed explicitly for each parameter unless, the parameter is of type int
Function Definitions • Function definition format (continued) return-value-type function-name( parameter-list ) { declarations and statements } – Definitions and statements: function body (block) • Variables can be defined inside blocks (can be nested) • Functions can not be defined inside other functions – Returning control • If nothing returned – return; – or, until reaches right brace at the end of function. • If something returned – return expression;
Function Prototypes • Function prototype – Function name – Parameters – what the function takes in – Return type – data type function returns (default int) – Used to validate functions – Prototype only needed if function definition comes after use in program – The function with the prototype int square( int y); • Takes in 1 int data. • Returns an int • Promotion rules and conversions – Converting to lower types can lead to errors