C Programming
C Programming
INTRODUCTION
C PROGRAMMING IS A POWERFUL AND WIDELY-USED MIDDLE
LEVEL PROGRAMMING LANGUAGE THAT WAS DEVELOPED IN
THE EARLY 1970S BY DENNIS RITCHIE AT BELL LABS. IT IS A
PROCEDURAL PROGRAMMING LANGUAGE, MEANING IT
FOLLOWS A LINEAR, STEP-BY-STEP APPROACH TO PROBLEM-
SOLVING. C IS KNOWN FOR ITS EFFICIENCY, FLEXIBILITY, AND
PORTABILITY, MAKING IT SUITABLE FOR A WIDE RANGE OF
APPLICATIONS, FROM SYSTEM SOFTWARE DEVELOPMENT TO
APPLICATION PROGRAMMING.
Features of C programming
1. PROCEDURAL LANGUAGE: C FOLLOWS A PROCEDURAL
PROGRAMMING PARADIGM, EMPHASIZING STEP-BY-STEP
INSTRUCTIONS TO SOLVE PROBLEMS, MAKING IT WELL-SUITED FOR
STRUCTURED PROGRAMMING.
2. EFFICIENCY: C IS KNOWN FOR ITS EFFICIENCY IN TERMS OF
EXECUTION SPEED AND MEMORY USAGE, MAKING IT SUITABLE FOR
DEVELOPING SYSTEM SOFTWARE AND APPLICATIONS WHERE
PERFORMANCE IS CRITICAL.
3. PORTABILITY: C PROGRAMS CAN BE COMPILED AND EXECUTED
ON VARIOUS PLATFORMS WITH MINIMAL CHANGES, ALLOWING FOR
CROSS-PLATFORM DEVELOPMENT.
4. DATA TYPES AND OPERATORS: C SUPPORTS VARIOUS DATA
TYPES (SUCH AS INT, FLOAT, CHAR, ETC.) AND OPERATORS
(ARITHMETIC, RELATIONAL, LOGICAL, BITWISE, ETC.) FOR
MANIPULATING DATA EFFICIENTLY.
5. FLEXIBILITY: C OFFERS FLEXIBILITY IN TERMS OF LANGUAGE
CONSTRUCTS, ALLOWING DEVELOPERS TO WRITE CODE THAT
CLOSELY INTERACTS WITH HARDWARE AND SYSTEM RESOURCES,
PROVIDING FINE-GRAINED CONTROL OVER PROGRAM EXECUTION.
6. STATIC AND DYNAMIC LINKING: C SUPPORTS BOTH STATIC AND
DYNAMIC LINKING, ENABLING THE CREATION OF STANDALONE
EXECUTABLE FILES OR DYNAMICALLY LINKED LIBRARIES.
Disadvantages of c programming
1. MANUAL MEMORY MANAGEMENT: IN C, MEMORY ALLOCATION AND
DEALLOCATION ARE DONE MANUALLY USING FUNCTIONS LIKE MALLOC() AND
FREE(). THIS CAN LEAD TO MEMORY LEAKS IF NOT MANAGED PROPERLY AND CAN
MAKE THE CODE MORE PRONE TO ERRORS LIKE DANGLING POINTERS AND
SEGMENTATION FAULTS.
2. LACK OF BUILT-IN SAFETY FEATURES: C DOES NOT HAVE BUILT-IN
FEATURES LIKE BOUNDS CHECKING OR TYPE CHECKING, WHICH CAN LEAD TO
VULNERABILITIES SUCH AS BUFFER OVERFLOWS AND TYPE MISMATCHES, MAKING
IT MORE SUSCEPTIBLE TO SECURITY VULNERABILITIES IF NOT CAREFULLY
MANAGED.
3. DIFFICULTY IN LEARNING AND DEBUGGING: C CAN BE MORE
CHALLENGING TO LEARN FOR BEGINNERS DUE TO ITS LOW-LEVEL NATURE AND
LACK OF ABSTRACTION COMPARED TO HIGHER-LEVEL LANGUAGES. DEBUGGING C
PROGRAMS CAN ALSO BE MORE COMPLEX, ESPECIALLY WHEN DEALING WITH
POINTER-RELATED ISSUES.
4. PLATFORM DEPENDENCY: WHILE C IS RELATIVELY PORTABLE,
THERE CAN STILL BE PLATFORM-DEPENDENT ASPECTS OF THE CODE,
PARTICULARLY WHEN DEALING WITH SYSTEM-LEVEL PROGRAMMING OR
HARDWARE INTERACTIONS. THIS CAN MAKE PORTING CODE BETWEEN
DIFFERENT PLATFORMS MORE CHALLENGING
5. ABSENCE OF OBJECT-ORIENTED FEATURES: C LACKS BUILT-IN
SUPPORT FOR OBJECT-ORIENTED PROGRAMMING CONCEPTS LIKE
CLASSES AND INHERITANCE, WHICH CAN MAKE IT LESS SUITABLE FOR
PROJECTS WHERE OBJECT-ORIENTED DESIGN PATTERNS ARE PREFERRED.
EXAMPLE OF A PROGRAM WRITTEN IN C
WAP in C to input 3 numbers and display their average.
#include<stdio.h>
intmain()
{
Int a,b,c,avg;
Printf(“enter three numbers”);
Scanf(“%d,%d,%d,”&a,&b,&c);
Avg=(a+b+c)/3;
Printf(“average of three number is %d”,avg);
Return 0;
}