You are on page 1of 33

CSE101-lec#12

• Designing Structured Programs


• Introduction to Functions

©LPU CSE101 C Programming


Outline
• Designing structured programs in C:
– Counter-controlled repetition
– Sentinel-controlled repetition
– Top down design and stepwise refinement
• Type conversion
• Functions(prototype and definition)

©LPU CSE101 C Programming


Example

Sentinel Controlled
Counter Controlled

Do TEN push ups imposes a


count condition

©LPU CSE101 C Programming


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

©LPU CSE101 C Programming


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

©LPU CSE101 C Programming


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

©LPU CSE101 C Programming


©LPU CSE101 C Programming
Enter grade: 98
Enter grade: 76
Enter grade: 71 Quick yak:
o
Enter grade: 87 Ask students t
am to
Enter grade: 83 create a progr
ng
Enter grade: 90 calculate batti
ir
Enter grade: 57 average of the
an in
Enter grade: 79 favorite batsm
Enter grade: 82 IPL 2014
Enter grade: 94
Class average is 81

©LPU CSE101 C Programming


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)

©LPU CSE101 C Programming


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

©LPU CSE101 C Programming


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)

©LPU CSE101 C Programming


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”

©LPU CSE101 C Programming


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”

©LPU CSE101 C Programming


©LPU CSE101 C Programming
Enter grade, -1 to end: 75
Enter grade, -1 to end: 94
Enter grade, -1 to end: 97
Enter grade, -1 to end: 88
Enter grade, -1 to end: 70
Enter grade, -1 to end: 64
Enter grade, -1 to end: 83
Enter grade, -1 to end: 89
Enter grade, -1 to end: -1
Class average is 82.50

OR

Enter grade, -1 to end: -1


No grades were entered

©LPU CSE101 C Programming


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)

©LPU CSE101 C Programming


Implicit Conversion

©LPU CSE101 C Programming


Order of converting type implicitly

©LPU CSE101 C Programming


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.

©LPU CSE101 C Programming


• 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;

©LPU CSE101 C Programming


©LPU CSE101 C Programming
Divide and Conquer
• Best way to solve a problem is by dividing the
problem and solving it.
• Divide and conquer
– Construct a program from smaller pieces or
components
• These smaller pieces are called modules
– Each module more manageable than the original
program

©LPU CSE101 C Programming


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.

©LPU CSE101 C Programming


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.

©LPU CSE101 C Programming


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

©LPU CSE101 C Programming


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

©LPU CSE101 C Programming


Program Modules in C
Hierarchical boss function/worker function relationship.

main

worker1 worker2 worker3

worker4 worker5

©LPU CSE101 C Programming


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

©LPU CSE101 C Programming


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;

©LPU CSE101 C Programming


1 4 9 16 25 36 49 64 81 100

©LPU CSE101 C Programming


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

©LPU CSE101 C Programming


Function Prototypes
• The argument values that do not correspond to the parameter types in
the function prototype are converted to the proper type before function
is called.
• This is done according to promotion hierarchy of data types in type
conversion.
• The types lower in the table is converted to types higher in the table.
Data types printf conversion scanf conversion
specifications specifications
long double %Lf %Lf
double %f %lf
float %f %f
unsigned long int %lu %lu
long int %ld %ld
unsigned int %u %u
int %d %d
short %hd %hd
char %c %c
Promotion hierarchy for data types.
©LPU CSE101 C Programming
Next Class: Math Library
Function

©LPU CSE101 C Programming


cse101@lpu.co.in

You might also like