Uploaded by mv5708

Unit 1 PPS

advertisement
PROGRAMMING FOR PROBLEM SOLVING
UNIT - I
THE PURPOSE OF LEARNING THIS COURSE IS TO:
 CLR -1: Think and evolve a logically to construct an algorithm into a flowchart and a pseudocode that
can be programmed
 CLR -2: Utilize the logical
operators
and expressions to
solve
problems
in engineering
and real-time
 CLR -3: Store and retrieve data in a single and multidimensional array
 CLR -4: Utilize custom designed functions that can be used to perform tasks and can be repeatedly used
in any application
 CLR -5: Create storage constructs using structure and unions. Create and Utilize files to store and
retrieve information
 CLR -6: Create a logical mindset to solve various engineering applications using programming constructs
in C
LEARNING RESOURCES
1.
Zed A Shaw, Learn C the Hard Way: Practical Exercises on the Computational Subjects You
Keep Avoiding (Like C), Addison Wesley, 2015
2.
W. Kernighan, Dennis M. Ritchie, The C Programming Language, 2nd ed. Prentice Hall, 1996
3.
Bharat Kinariwala, Tep Dobry, Programming in C, eBook
4.
http://www.c4learn.com/learn-c-programming-language/
EVOLUTION OF PROGRAMMING & LANGUAGES
 A Computer needs to be given instructions in a programming language that it
understands.
 Programming Language
 controls the behavior of computer
 It is defined through the use of syntactic and semantic rules
 Used to facilitate communication about the task of organizing and manipulating information
EVOLUTION OF PROGRAMMING & LANGUAGES
PROBLEM SOLVING THROUGH PROGRAMMING
 Computer based problem solving is a systematic process of designing, implementing and using
programming tools during the problem solving stage.

This method enables the computer system to be more intuitive with human logic than machine
logic.
 Final outcome of this process is software tools which is dedicated to solve the problem under
consideration.
 Software is just a collection of computer programs and programs are a set of instructions which
guides computer’s hardware.
 These instructions need to be well specified for solving the problem.
 After its creation, the software should be error free and well documented. Software development is
the process of creating such software, which satisfies end user’s requirements and needs.
PROBLEM SOLVING THROUGH PROGRAMMING
 The following six steps must be followed to solve a problem using computer.
 Problem Analysis
 Program Design - Algorithm, Flowchart and Pseudocode
 Coding
 Compilation and Execution
 Debugging and Testing
 Program Documentation
PROGRAMMING PROCESS
• Defining the Problem
• Planning the Solution
• Coding the Program
• Testing the Program
• Documenting the Program
PROBLEM SOLVING THROUGH PROGRAMMING
 Problem Analysis
 Problem analysis is the process of defining a problem and decomposing overall system
into smaller parts to identify possible inputs, processes and outputs associated with the
problem.
 This task is further subdivided into six subtasks namely:
 Specifying the Objective
 Specifying the Output
 Specifying Input Requirements
 Specifying Processing Requirements
 Evaluating the Feasibility
 Problem Analysis Documentation
PROBLEM SOLVING THROUGH PROGRAMMING
 Program Design
 This process of dividing a program into modules and then into sub-modules is
known as “top down” design approach.
 Dividing a program into modules (functions) breaks down a given programming
task into small, independent and manageable tasks.
PROBLEM SOLVING THROUGH PROGRAMMING
 Coding (Programming)
 The coding process can be done in any language (high level and low level). The
actual use of computer takes place in this stage in which the programmer writes a
sequence of instructions ready for execution.
 Good program possess following characteristics :
 Comment clauses in the program help to make the program readable and understandable by
people other than the original programmer.
 It should be efficient.
 It must be reliable enough to work under all reasonable conditions to provide a correct output.
 It must be able to detect unreasonable error conditions and report them to the end user or
programmer without crashing the system.
 It should be easy to maintain and support after installation.
PROBLEM SOLVING THROUGH PROGRAMMING
 Compilation and Execution Process
 A source code must go through several steps before it becomes an
executable program.
 In the first step the source code is checked for any syntax errors.
 After the syntax errors are traced out a source file is passed through a
compiler which first translates high level language into object code (A
machine code not ready to be executed).
 A linker then links the object code with pre-compiled library functions, thus
creating an executable program. This executable program is then loaded
into the memory for execution.
PROBLEM SOLVING THROUGH PROGRAMMING
 Debugging and Testing
 Debugging is the process of finding errors and removing them from a
computer program, otherwise they will lead to failure of the program.
 Testing is performed to verify that whether the completed software package
functions or works according to the expectations defined by the requirements.
PROBLEM SOLVING THROUGH PROGRAMMING
 Program (Programmer's and User's) Documentation
 The program documentation is the process of collecting information about the
program. The documentation process starts from the problem analysis phase
to debugging and testing. Documentation consists two types of
documentation, they are:
 Programmer's Documentation
 User's Documentation
ALGORITHM
 An algorithm is a set of well-defined instructions to solve a particular problem.
It takes a set of input and produces a desired output.
 For example,
 An algorithm to add two numbers:
 Take two number inputs
 Add numbers using the + operator
 Display the result
QUALITIES OF GOOD ALGORITHMS
 Input and output should be defined precisely.
 Each step in the algorithm should be clear and unambiguous.
 Algorithms should be most effective among many different ways to solve a
problem.
 An algorithm shouldn't include computer code. Instead, the algorithm should
be written in such a way that it can be used in different programming
languages.
ALGORITHM 1: ADD TWO NUMBERS ENTERED BY THE USER
Step
Step
Step
Step
1:
2:
3:
4:
Start
Declare variables num1, num2 and sum.
Read values num1 and num2.
Add num1 and num2 and assign the result to sum.
sum←num1+num2
Step 5: Display sum
Step 6: Stop
ALGORITHM 2: FIND THE LARGEST NUMBER AMONG THREE
NUMBERS
Step
Step
Step
Step
1:
2:
3:
4:
Start
Declare variables a,b and c.
Read variables a,b and c.
If a > b
If a > c
Display a is the largest number.
Else
Display c is the largest number.
Else
If b > c
Display b is the largest number.
Else
Display c is the greatest number.
Step 5: Stop
FLOWCHART
 A flowchart is a graphical representations of steps.
 It was originated from computer science as a tool for representing algorithms
and programming logic but had extended to use in all other kinds of processes.
Symbol
Symbol
Name
Purpose
Used at the beginning and end of
Start/Stop the algorithm to show start and
end of the program.
FLOWCHART SYMBOLS
Process
Indicates processes like
mathematical operations.
Input/
Output
Used for denoting program inputs
and outputs.
Stands for decision statements in a
Decision program, where answer is usually
Yes or No.
Arrow
Shows relationships between
different shapes.
Connects two or more parts of a
On-page
flowchart, which are on the same
Connector
page.
Connects two parts of a flowchart
Off-page
which are spread over different
Connector
GUIDELINES FOR DEVELOPING FLOWCHARTS
 These are some points to keep in mind while developing a flowchart −
 Flowchart can have only one start and one stop symbol
 On-page connectors are referenced using numbers
 Off-page connectors are referenced using alphabets
 General flow of processes is top to bottom or left to right
 Arrows should not cross each other
EXAMPLE FLOWCHARTS
 Here is the flowchart for going to the market to purchase a pen.
EXAMPLE FLOWCHARTS
 average of two numbers.
PSEUDOCODE
 Pseudo code is simply an implementation of an algorithm in the form of
annotations and informative text written in plain English.
 Pseudo code is not actual programming language.
 It has no syntax like any of the programming language and thus can’t be
compiled or interpreted by the computer.
USE PSEUDO CODE
 It allows the designer to focus on the logic of the algorithm without being
distracted by details of language syntax.
 It describe the entire logic of the algorithm so that implementation becomes a
routine mechanical task of translating line by line into source code.
ADVANTAGES OF PSEUDO CODE
 Improves the readability of any approach. It’s one of the best approaches to start
implementation of an algorithm
 Acts as a bridge between the program and the algorithm or flowchart
 Also works as a rough documentation, so the program of one developer can be
understood easily when a pseudo code is written out. In industries, the approach
of documentation is essential. And that’s where a pseudo-code proves vital
 The main goal of a pseudo code is to explain what exactly each line of a program
should do, hence making the code construction phase easier for the programmer
CONVENTIONS TO WRITE PSEUDO CODE
CONVENTIONS TO WRITE PSEUDO CODE
CONVENTIONS TO WRITE PSEUDO CODE
CONVENTIONS TO WRITE PSEUDO CODE
CONVENTIONS TO WRITE PSEUDO CODE
CONVENTIONS TO WRITE PSEUDO CODE
CONVENTIONS TO WRITE PSEUDO CODE
CONVENTIONS TO WRITE PSEUDO CODE
GUIDELINES FOR WRITING PSEUDO CODE
 Write only one Statement per line
 Example – Pseudo Code for calculating Salary
 READ name, hourly rate, hours worked, deduction rate
 Gross pay = hourly rate * hours worked
 deduction = gross pay * deduction rate
 net pay = gross pay – deduction
 WRITE name, gross, deduction, net pay
GUIDELINES FOR WRITING PSEUDO CODE
 Capitalize Initial Keyword
 Keywords to be written in capital letters
 Examples: READ, WRITE, IF, ELSE, WHILE, REPEAT, PRINT
 Indent to show Hierarchy
 Indentation shows the structure boundaries
 Sequence
 Selection
 Looping
GUIDELINES FOR WRITING PSEUDO CODE
 End Multiline structures
 Each structure must end properly
 Example: IF statement must end with ENDIF
 Keep Statements Language independent
 Resist the urge
to write
Pseudo Code
in any programming language
PSEUDOCODE TO FIND THE SUM OF TWO NUMBERS.
begin
numeric nNum1,nNum2,nSum
display "ENTER THE FIRST NUMBER : "
accept nNum1
display "ENTER THE SECOND NUMBER : "
accept nNum2
compute nSum=nNum1+nNum2
display "SUM OF THESE NUMBER : " nSum
end
PSEUDOCODE TO FIND THE LARGEST OF TWO NUMBERS.
BEGIN
NUMERIC nNum1,nNum2
DISPLAY "ENTER THE FIRST NUMBER : "
INPUT nNum1
DISPLAY "ENTER THE SECOND NUMBER : "
INPUT nNum2
IF nNum1 > nNum2
DISPLAY nNum1 + " is larger than "+ nNum2
ELSE
DISPLAY nNum2 + " is larger than " + nNum1
END
WHY TO STUDY C PROGRAMMING
 Low level programming becomes especially important in the Internet of Things
(IoT) and wearable devices, where efficiency in power consumption is actually the
most important consideration.
 Secondly, all of the high-level languages are built off of low-level languages. You’ll
need low-level programming to sustain and keep developing those high-level
languages.
 While there is a big push to be able to use high level language to be able to write
low level things like drivers for graphics cards, low level languages are still needed
for performance.
 For example, everything relating to encoding or decoding and encryption will
probably use low level programming, with C and probably some assembly to use
extended instruction (like AVX, SSE, etc). Basically, everything that needs highperformance and fine tuning will require a bit of low level programming.
HISTORY & EVOLUTION OF C
 C – General Purpose Programming Language
 Developed by Dennis Ritchie in 1972
 Developed at Bell Laboratories
 Principles taken from BCPL and CPL
 Structured Programming Language
 C Program
 Collection of Functions supported by C library
Father of C Programming
EVOLUTION OF C LANGUAGE
1960
1967
1970
1972
1978
1989
1990
1999
WHY THE NAME “C” WAS GIVEN ?
 Many of C’s principles and ideas were derived from the earlier language B
 BCPL and CPL are the earlier ancestors of B Language (CPL is common
Programming Language)
 In 1967, BCPL Language ( Basic CPL ) was created as a scaled down version of
CPL
 As many of the features were derived from “B” Language the new language
was named as “C”.
CHARACTERISTICS OF ‘C’
 Low Level Language Support
 Structured Programming
 Efficient use of Pointers
 Extensible
 Program Portability
 Memory Management
DISADVANTAGES OF C
 C Programming Language doesn't support Object Oriented
Programming(OOP)
 C doesn't perform Run Time Type Checking. It only does compile time type
checking. At run time, C doesn't ensure whether correct data type is used
instead it perform automatic type conversion.
 C doesn't support the concept of Exception handling.
// Structure of C Program
STRUCTURE OF C
PROGRAM
#include <stdio.h>
1. //Document section
void main()
2. #Pre-processor section
{
3. Global declaration;
//Program Statement;
4. Main() program
//call user_subprogram()
5. #user defined Sub
}
programs()
#include <conio.h>
Document Section
Pre processor Section
Entry Point
Main Program
void user_subprogram()
{
//Program Statement;
}
User defined Sub Program
DOCUMENTATION SECTION
 Used for providing Comments
 Comment treated as a single white space by Compiler
 Ignored at time of Execution: Not Executable
 Comment: Sequence of Characters given between /* and */
 Example: Program Name, Statement description
 /* Program to Find Area of a Circle*/
PRE-PROCESSOR SECTION
 Also called as Preprocessor Directive
 Also called as Header Files
 Not a part of Compiler
 Separate step in Compilation Process
 Instructs Compiler to do required Preprocessing
 Begins with # symbol
 Preprocessor written within < >
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#define PI 3.1412
GLOBAL DECLARATION SECTION
 Used to Declare Global variable (or) Public variable
 Variables are declared outside all functions
 Variables can be accessed by all functions in the program
 Same variable used by more than one function
MAIN( ) SECTION
 main( ) written in all small letters (No Capital Letters)
 Execution starts with a Opening Brace : {
 Divided into two sections: Declaration & Execution
 Declaration : Declare Variables
 Executable: Statements within the Braces
 Execution ends with a Closing Brace : }
 Note: main( ) does not end with a semicolon
LOCAL DECLARATION SECTION
 Variables declared within the main( ) program
 These variables are called Local Variables
 Variables initialized with basic data types
C PROGRAMMING FUNDAMENTALS
C PROGRAMMING FUNDAMENTALS
C PROGRAMMING FUNDAMENTALS
• C program broken into many C tokens
• Building Blocks of C program
SINGLE LINE AND MULTILINE COMMENTS
 Used to provide information about lines of code
 Provide clarity to the C source code
 Allows others to better understand
what thecode was intended to
 Helps in debugging the code
 Important in large projects
containing
of source code
 Types – Single line and multiline comment
hundreds or thousands of lines
SINGLE LINE AND MULTI LINE COMMENT
 Represented by double slash //
 Multi Line comment represented by /* comment statements */
#include<stdio.h>
int main( ){
//printing information
printf("Hello C");
return 0;
}
#include<stdio.h>
int main( ){
/*printing information
Comment*/
printf("Hello C");
return 0;
}
Multi Line
KEYWORDS
 Keywords – Conveys special meaning to Compiler
 32 keywords
 Cannot be used as variable names
CONSTANTS
 Definition :Value does
not change during
execution
 Can be a Number (or) a
Letter
VARIABLES / IDENTIFIERS
 Identifier for a memory location where data is stored
 Value changes during execution
 Rules for Identifiers
 Combination of alphabets, digits (or) underscore
 First character should be a Alphabet
 No special characters other than underscore can be used
 No comma / spaces allowed within variable name
 A variable name cannot be a keyword
 Variable names are case sensitive
 Variable name length cannot be more than 31 characters
VARIABLE DECLARATION
 A variable must be declared before it is used
 Declaration consists of a data type followed by one or more variable names separated by
commas.
Syntax
datatype variable_name;
Examples
int a, b, c, sum;
float avg;
char name;
VARIABLE INITIALIZATION
 Assigning a value to the declared variable
 Values assigned during declaration / after declaration
Examples
int a, b, c;
a=10, b=20, c=30;
int a=10 ,b=10, c=10;
SCOPE OF VARIABLES
 There are three places where variables can be declared
 Inside a function or a block which is called local variables
 Outside of all functions which is called global variables
 In the
definition of function parameters which
parameters
are called formal
SCOPE OF VARIABLES
 A scope in any programming is a region of the program where a defined
variable can have its existence and beyond that variable it cannot be accessed
 Variable Scope is a region in a program where a variable is declared and used
 The scope of a variable is the range of program statements that can access
that variable
 A variable is visible within its scope and invisible outside it
SCOPE OF VARIABLES : LOCAL VARIABLES
 Variables that are declared inside a function or block are called local variables
 They can be used only by statements that are inside that function or block of
code
 Local variables are created when the control reaches the block or function
containing the local variables and then they get destroyed after that
 Local variables are not known to functions outside their own
SCOPE OF VARIABLES : LOCAL VARIABLES
#include <stdio.h>
int main ( )
{
/* local variable declaration */
int a, b; int c;
/* actual initialization */
a = 10; b = 20;
c = a + b;
printf ("value of a = %d, b = %d and c = %d\n", a, b, c);
return 0;
}
SCOPE OF VARIABLES : GLOBAL VARIABLES
 Defined outside a function, usually on top of the program
 Hold their values throughout the lifetime of the program
 Can be accessed inside any of the functions defined for the program
 Can be accessed by any function
 That is, a global variable is available for use throughout the entire program
after its declaration
SCOPE OF VARIABLES : GLOBAL VARIABLES
#include <stdio.h>
/* global variable declaration */
int g;
int main ( )
{
/* local variable declaration */
int a, b;
/* actual initialization */
a = 10; b = 20;
g = a + b;
printf ("value of a = %d, b = %d and g = %d\n", a, b, g);
return 0;
}
BINDING
 A Binding is an association between an entity and an attribute
 Between a variable and its type or value
 Between a function and its code
 Binding time is the point at which a binding takes place
 Types of Binding
 Design Time
 Compile Time
 Link Time
 Run Time
BINDING
 Design Time
 Binding decisions are made when a language is designed
 Example
 Binding of + to addition in C
 Compile Time
 Bindings done while the program is compiled
 Binding variables to datatypes
 Example
 int a; float b; char c;
BINDING
 Link Time
 Compiled code is combined into a full program for C
 Example
 Global and Static variables are bound to addresses
 Run Time
 Any binding that happens at run time is called Dynamic
 Any binding that happens before run time is called Static
 Values that are dynamically bound can change
DATATYPES
 Defines a variable before use
 Specifies the type of data to be stored in variables
 Basic Data Types – 4 Classes
 int – Signed or unsigned number
 float – Signed or unsigned number having Decimal Point
 double – Double Precision Floating point number
 char – A Character in the character Set
DATATYPES
INTEGER DATA TYPE
 Whole numbers with a range
 No fractional parts
 Integer variable holds integer values only
 Keyword: int
 Memory: 2 Bytes (16 bits) or 4 Bytes (32 bits)
 Qualifiers: Signed, unsigned, short, long
 Examples: 34012, 0, -2457
FLOATING POINT DATA TYPE
 Numbers having Fractional part
 Float provides precision of 6 digits
 Integer variable holds integer values only
 Keyword: float
 Memory: 4 Bytes (32 bits)
 Examples: 5.6, 0.375, 3.14756
DOUBLE DATA TYPE
 Also handles floating point numbers
 Double provides precision of 14 digits
 Integer variable holds integer values only
 Keyword: float
 Memory: 8 Bytes (64 bits) or 10 Bytes (80 bits)
 Qualifiers: long, short
CHARACTER DATA TYPE
 handles one character at a time
 Keyword: char
 Memory: 1 Byte (8 bits)
EXPRESSIONS
 Expression :
An Expression is a collection of operators and operands
that represents a specific value/operation.
 Operator
: A symbol which performs tasks like
operations, logical operations and conditional operations
arithmetic
 Operands : The values on which the operators perform the task
 Expression Types in C
 Infix Expression
 Postfix Expression
 Prefix Expression
EXPRESSIONS
 Infix Expression
 The operator is used between operands
 General Structure : Operand1 Operator Operand2
 Example : a + b
 Postfix Expression
 Operator is used after operands
 General Structure : Operand1 Operand2 Operator
 Example : ab+
 Prefix Expression
 Operator is used before operands
 General Structure : Operator Operand1 Operand2
 Example : +ab
EXPRESSIONS
INPUT AND OUTPUT FUNCTIONS
 Ability to Communicate with Users during execution
 Input Operation
 Feeding data into program
 Data Transfer from Input device to Memory
 Output Operation
 Getting result from Program
 Data Transfer from Memory to Output device
 Header File : #include<stdio.h>
FORMATTED INPUT / OUTPUT STATEMENTS
 Reads and writes all types of data values
 Arranges data in particular format
 Requires Format Specifier to identify Data type
 Basic Format Specifiers
 %d – Integer
 %f – Float
 %c – Character
 %s - String
SCANF ( ) FUNCTION
 Reads all types of input data
 Assignment of value to variable during Runtime
Syntax
scanf(“Control String/Format Specifier”, &arg1, &arg2,… &argn)
PRINTF ( ) FUNCTION
 To print Instructions / Output onto the Screen
 Requires Format Specifiers & Variable names to print data
Syntax
printf(“Control String/Format Specifier”,arg1,arg2,… argn)
EXAMPLE 1 – USING PRINTF ( ) & SCANF ( ) FUNCTION
#include<stdio.h>
#include<conio.h>
void main( )
{
int a;
printf(“Enter the Value of a”);
scanf(“%d”, &a);
printf(“Value of a is %d”, a);
getch( );
}
}
EXAMPLE 1 – USING PRINTF ( ) & SCANF ( ) FUNCTION
#include<stdio.h>
#include<conio.h> void main( )
{
int a, b, c;
printf(“Enter the Value of a, b & c”);
scanf(“%d %d %d”, &a, &b, &c);
printf(“Value of a, b & c is %d %d %d”, a, b, c);
getch ( );
}
TRY IT OUT YOURSELF ! WRITE A C PROGRAM TO:
 Add two numbers
 To Multiply two floating point numbers
 To compute Quotient and Remainder
 To Swap two numbers
UNFORMATTED INPUT / OUTPUT STATEMENTS
 Works only with Character Data type
 No need of Format Specifier
 Unformatted Input Statements
 getch(): It will Accepts a Keystroke and never displays it.(So that it can be used in
password). That is, It Never echoes the character on screen. The Arguments to the
function is any key on keyboard ,not necessarily be a character.
 getchar(): It will accepts a character from keyboard & Displays it immediately. On
reading any character, getchar() need to hit any key for proceeding. The argument
is a character i.e alphabet(A-Z).
 gets ( ) – Accepts any string from Keyboard until Enter Key is pressed
UNFORMATTED INPUT / OUTPUT STATEMENTS
 Unformatted Output Statements
 putch() –
Prints only the any alphabets
 putchar ( ) – Prints any character including escape sequences
 puts ( ) – Prints a String to Monitor (Output Device)
OPERATORS IN C
 C supports rich set of built in Operators
 Used to manipulate Constants (Data) & Variables
 Part of Mathematical (or) Logical expressions
 Operator – Definition
 Symbol (or) Special character that instructs the compiler to perform
mathematical (or) Logical operations
ARITHMETIC OPERATORS
 An arithmetic operator performs mathematical operations such as addition,
subtraction, multiplication, division etc on numerical values (constants and
variables).
Operator
Meaning of Operator
+
addition or unary plus
-
subtraction or unary minus
*
multiplication
/
division
%
remainder after division (modulo division)
EXAMPLE – ARITHMETIC OPERATORS
#include <stdio.h>
int main()
{
int a = 9,b = 4, c;
c = a+b;
printf("a+b = %d \n",c);
c = a-b;
printf("a-b = %d \n",c);
c = a*b;
printf("a*b = %d \n",c);
c = a/b;
printf("a/b = %d \n",c);
c = a%b;
printf("Remainder when a divided by b = %d \n",c);
return 0;
}
ASSIGNMENT OPERATORS
 An assignment operator is used for assigning a value to a variable. The most
common assignment operator is =
Operator
Example
Same as
=
a=b
a=b
+=
a += b
a = a+b
-=
a -= b
a = a-b
*=
a *= b
a = a*b
/=
a /= b
a = a/b
%=
a %= b
a = a%b
EXAMPLE – ASSIGNMENT OPERATORS
#include <stdio.h>
int main()
{
int a = 5, c;
c = a;
// c is 5
printf("c = %d\n", c);
c += a;
// c is 10
printf("c = %d\n", c);
c -= a;
// c is 5
printf("c = %d\n", c);
c *= a;
// c is 25
printf("c = %d\n", c);
c /= a;
// c is 5
printf("c = %d\n", c);
c %= a;
// c = 0
printf("c = %d\n", c);
return 0;
}
INCREMENT AND DECREMENT OPERATORS
 Increment ++ increases the value by 1 whereas decrement -- decreases the value
by 1. These two operators are unary operators, meaning they only operate on a
single operand.
EXAMPLE – INCREMENT AND DECREMENT OPERATORS
int main(){
int a = 10, b = 20,c=30,d=40;
printf("a++ = %d \n", a++);
printf("%d \n",a);
printf("--b = %d \n", b--);
printf("%d \n",b);
printf("++c = %d \n", ++c);
printf("%d \n",c);
printf("--d = %d \n", --d);
printf("%d \n",d);
return 0;}
a++
11
--b
19
++c
31
--d
39
= 10
= 20
= 31
= 39
RELATIONAL OPERATORS
 A relational operator checks the relationship between two operands. If the relation
is true, it returns 1; if the relation is false, it returns value 0.
 Relational operators are used in decision making and loops.
Operator
Meaning of Operator
Example
==
Equal to
5 == 3 is evaluated to 0
>
Greater than
5 > 3 is evaluated to 1
<
Less than
5 < 3 is evaluated to 0
!=
Not equal to
5 != 3 is evaluated to 1
>=
Greater than or equal to
5 >= 3 is evaluated to 1
<=
Less than or equal to
5 <= 3 is evaluated to 0
EXAMPLE – RELATIONAL OPERATORS
int main()
{
int a = 5,
printf("%d
printf("%d
printf("%d
printf("%d
printf("%d
printf("%d
printf("%d
printf("%d
printf("%d
printf("%d
printf("%d
printf("%d
return 0;
}
b = 5, c = 10;
== %d is %d \n", a, b, a == b);
== %d is %d \n", a, c, a == c);
> %d is %d \n", a, b, a > b);
> %d is %d \n", a, c, a > c);
< %d is %d \n", a, b, a < b);
< %d is %d \n", a, c, a < c);
!= %d is %d \n", a, b, a != b);
!= %d is %d \n", a, c, a != c);
>= %d is %d \n", a, b, a >= b);
>= %d is %d \n", a, c, a >= c);
<= %d is %d \n", a, b, a <= b);
<= %d is %d \n", a, c, a <= c);
5
5
5
5
5
5
5
5
5
5
5
5
== 5 is 1
== 10 is 0
> 5 is 0
> 10 is 0
< 5 is 0
< 10 is 1
!= 5 is 0
!= 10 is 1
>= 5 is 1
>= 10 is 0
<= 5 is 1
<= 10 is 1
LOGICAL OPERATORS
 An expression containing logical operator returns either 0 or 1 depending upon
whether expression results true or false. Logical operators are commonly used in
decision making in C programming.
Operator
Meaning
Example
&&
Logical AND. True only
if all operands are true
If c = 5 and d = 2 then,
expression ((c==5) &&
(d>5)) equals to 0.
||
Logical OR. True only if
either one operand is
true
If c = 5 and d = 2 then,
expression ((c==5) ||
(d>5)) equals to 1.
!
Logical NOT. True only if
the operand is 0
If c = 5 then,
expression !(c==5)
equals to 0.
EXAMPLE – LOGICAL OPERATORS
int main()
{
int a = 5, b = 5, c = 10, result;
result = (a == b) && (c > b) && (a<c);
printf("(a == b) && (c > b) is %d \n", result);
result = (a == b) || (c < b);
printf("(a == b) || (c < b) is %d \n", result);
result = !(a != b);
printf("!(a != b) is %d \n", result);
result = !(a == b);
printf("!(a == b) is %d \n", result);
return 0;
}
(a == b) && (c > b) is 1
(a == b) || (c < b) is 1
!(a != b) is 1
!(a == b) is 0
BITWISE OPERATORS
 During
computation, mathematical operations like: addition, subtraction,
multiplication, division, etc are converted to bit-level which makes processing
faster and saves power.
 Bitwise operators are used in C programming to perform bit-level operations.
Operators
Meaning of operators
&
|
Division
Remainder (R)
Bitwise AND
112 / 2 = 56
0
Bitwise OR
56 / 2 = 28
0
28 / 2 = 14
0
14 / 2 = 7
0
^
Bitwise exclusive OR
~
Bitwise complement
7/2=3
1
<<
Shift left
3/2=1
1
>>
Shift right
1/2=0
1
BITWISE AND OPERATOR &
 The output of bitwise AND is 1 if the corresponding bits of two operands is 1. If
either bit of an operand is 0, the result of corresponding bit is evaluated to 0.
 Let us suppose the bitwise AND operation of two integers 12 and 25.
12 = 00001100 (In Binary)
25 = 00011001 (In Binary)
Bit Operation of 12 and 25
00001100
& 00011001
________
00001000 = 8 (In decimal)
A
B
Q
0
0
0
0
1
0
1
0
0
1
1
1
EXAMPLE – BITWISE AND OPERATOR &
#include <stdio.h>
int main()
{
int a = 12, b = 25;
printf("Output = %d", a&b);
return 0;
}
Output = 8
BITWISE OR OPERATOR |
 The output of bitwise OR is 1 if at least one corresponding bit of two operands is
1. In C Programming, bitwise OR operator is denoted by |.
12 = 00001100 (In Binary)
25 = 00011001 (In Binary)
Bitwise OR Operation of 12 and 25
00001100
| 00011001
________
00011101 = 29 (In decimal))
A
B
Q
0
0
0
0
1
1
1
0
1
1
1
1
EXAMPLE – BITWISE OR OPERATOR |
#include <stdio.h>
int main()
{
int a = 12, b = 25;
printf("Output = %d", a|b);
return 0;
}
Output = 29
BITWISE XOR (EXCLUSIVE OR) OPERATOR ^
 The result of bitwise XOR operator is 1 if the corresponding bits of two
operands are opposite. It is denoted by ^.
12 = 00001100 (In Binary)
25 = 00011001 (In Binary)
Bitwise XOR Operation of 12 and 25
00001100
^ 00011001
________
00010101 = 21 (In decimal)
A
B
Q
0
0
0
0
1
1
1
0
1
1
1
0
EXAMPLE – BITWISE XOR (EXCLUSIVE OR) OPERATOR ^
#include <stdio.h>
int main()
{
int a = 12, b = 25;
printf("Output = %d", a^b);
return 0;
}
Output = 21
BITWISE COMPLEMENT OPERATOR ~
 Bitwise compliment operator is an unary operator (works on only one operand). It
changes 1 to 0 and 0 to 1. It is denoted by ~.
 2's Complement
 Two's complement is an operation on binary numbers. The 2's complement of a
number is equal to the complement of that number plus 1.
 For example:
Binary number
1’s complement
2’s complement
001
110
111
010
101
110
011
100
101
100
011
100
EXAMPLE – BITWISE COMPLEMENT OPERATOR ~
#include <stdio.h>
int main()
{
printf("Output = %d\n",~35);
printf("Output = %d\n",~-12);
return 0;
}
Output = -36
Output = 11
RIGHT SHIFT OPERATOR
 Right shift operator shifts all bits towards right by certain number of specified bits.
It is denoted by >>.
212 = 11010100 (In binary)
212>>2 = 00110101 (In binary) [Right shift by two bits]
212>>7 = 00000001 (In binary)
212>>8 = 00000000
212>>0 = 11010100 (No Shift)
LEFT SHIFT OPERATOR
 Left shift operator shifts all bits towards left by a certain number of specified bits.
The bit positions that have been vacated by the left shift operator are filled with 0.
The symbol of the left shift operator is <<.
212 = 11010100 (In binary)
212<<1 = 110101000 (In binary) [Left shift by one bit]
212<<0 = 11010100 (Shift by 0)
212<<4 = 110101000000 (In binary) =3392(In decimal)
EXAMPLE – SHIFT OPERATOR
#include <stdio.h>
int main()
{
int num=212, i;
for (i=0; i<=2; ++i)
printf("Right shift by %d: %d\n", i, num>>i);
printf("\n");
for (i=0; i<=2; ++i)
printf("Left shift by %d: %d\n", i, num<<i);
return 0;
}
Right Shift by 0: 212
Right Shift by 1: 106
Right Shift by 2: 53
Left Shift by 0: 212
Left Shift by 1: 424
Left Shift by 2: 848
OTHER OPERATORS
 Comma Operator
 Comma operators are used to link related expressions together.
 For example:
int a, c = 5, d;
THE SIZEOF OPERATOR
 The sizeof is a unary operator that returns the size of data (constants, variables,
array, structure, etc).
EXAMPLE – SIZE0F() OPERATOR
#include <stdio.h>
int main()
{
int a;
float b;
double c;
char d;
printf("Size of
printf("Size of
printf("Size of
printf("Size of
return 0;
}
int=%lu bytes\n",sizeof(a));
float=%lu bytes\n",sizeof(b));
double=%lu bytes\n",sizeof(c));
char=%lu byte\n",sizeof(d));
Size
Size
Size
Size
of
of
of
of
int = 4 bytes
float = 4 bytes
double = 8 bytes
char = 1 byte
Download