Friday, 13 December 2019

History of C Language

Dennis Ritchie - founder of C language
History of C language is interesting to know. Here we are going to discuss a brief history of the c language.
C programming language was developed in 1972 by Dennis Ritchie at bell laboratories of AT&T (American Telephone & Telegraph), located in the U.S.A.
Dennis Ritchie is known as the founder of the c language.
C is a general-purpose programming language that is extremely popular, simple and flexible. It is machine-independent, structured programming language which is used extensively in various applications.
what is c language?????
C was the basics language to write everything from operating systems (Windows and many others) to complex programs like the Oracle database, Git, Python interpreter and more.
It is said that 'C' is a god's programming language. One can say, C is a base for the programming. If you know 'C,' you can easily grasp the knowledge of the other programming languages that uses the concept of 'C'
It is essential to have a background in computer memory mechanisms because it is an important aspect when dealing with the C programming language.
ANSI C provides three types of data types:
  • Primary(Built-in) Data Types: void, intchar, double and float.
  • Derived Data Types: Array, References, and Pointers.
  • User Defined Data Types: Structure, Union, and Enumeration.  
  • what is constant????
Constants are like a variable, except that their value never changes during execution once defined. ... Constants in C are the fixed values that are used in a program, and its value remains the same during the entire execution of the program. Constants are also called literals. Constants can be any of the data types.

what are variables??

variable is nothing but a name given to a storage area that our programs can manipulate. Each variable in C has a specific type, which determines the size and layout of the variable's memory; the range of values that can be stored within that memory; and the set of operations that can be applied to the variable.

TYPES OF OPERATORS IN C
ARITHMETIC OPERATORS 
ASSIGNMENT OPERATORS
INCREMENT AND DECREMENT
RELATIONAL OPERATORS 
LOGICAL OPERATORS


An operator is a symbol that operates on a value or a variable. For example: + is an operator to perform addition.
C has a wide range of operators to perform various operations.

C Arithmetic Operators

An arithmetic operator performs mathematical operations such as addition, subtraction, multiplication, division etc on numerical values (constants and variables).

C Increment and Decrement Operators

C programming has two operators increment ++ and decrement -- to change the value of an operand (constant or variable) by 1.
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.

C Assignment Operators

An assignment operator is used for assigning a value to a variable. The most common assignment operator is
=
+=
-=
*=
/= ETC.

Example 3: Assignment Operators

  1. // Working of assignment operators
  2. #include <stdio.h>
  3. int main()
  4. {
  5. int a = 5, c;
  6. c = a; // c is 5
  7. printf("c = %d\n", c);
  8. c += a; // c is 10
  9. printf("c = %d\n", c);
  10. c -= a; // c is 5
  11. printf("c = %d\n", c);
  12. c *= a; // c is 25
  13. printf("c = %d\n", c);
  14. c /= a; // c is 5
  15. printf("c = %d\n", c);
  16. c %= a; // c = 0
  17. printf("c = %d\n", c);
  18. return 0;
  19. }
Output
c = 5 
c = 10 
c = 5 
c = 25 
c = 5 
c = 0

C 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.
OperatorMeaning of OperatorExample
==Equal to5 == 3 is evaluated to 0
>Greater than5 > 3 is evaluated to 1
<Less than5 < 3 is evaluated to 0
!=Not equal to5 != 3 is evaluated to 1
>=Greater than or equal to5 >= 3 is evaluated to 1
<=Less than or equal to5 <= 3 is evaluated to 0

Example 4: Relational Operators

  1. // Working of relational operators
  2. #include <stdio.h>
  3. int main()
  4. {
  5. int a = 5, b = 5, c = 10;
  6. printf("%d == %d is %d \n", a, b, a == b);
  7. printf("%d == %d is %d \n", a, c, a == c);
  8. printf("%d > %d is %d \n", a, b, a > b);
  9. printf("%d > %d is %d \n", a, c, a > c);
  10. printf("%d < %d is %d \n", a, b, a < b);
  11. printf("%d < %d is %d \n", a, c, a < c);
  12. printf("%d != %d is %d \n", a, b, a != b);
  13. printf("%d != %d is %d \n", a, c, a != c);
  14. printf("%d >= %d is %d \n", a, b, a >= b);
  15. printf("%d >= %d is %d \n", a, c, a >= c);
  16. printf("%d <= %d is %d \n", a, b, a <= b);
  17. printf("%d <= %d is %d \n", a, c, a <= c);
  18. return 0;
  19. }
Output
5 == 5 is 1
5 == 10 is 0
5 > 5 is 0
5 > 10 is 0
5 < 5 is 0
5 < 10 is 1
5 != 5 is 0
5 != 10 is 1
5 >= 5 is 1
5 >= 10 is 0
5 <= 5 is 1
5 <= 10 is 1 

C 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.
OperatorMeaningExample
&&Logical AND. True only if all operands are trueIf c = 5 and d = 2 then, expression ((c==5) && (d>5)) equals to 0.
||Logical OR. True only if either one operand is trueIf c = 5 and d = 2 then, expression ((c==5) || (d>5)) equals to 1.
!Logical NOT. True only if the operand is 0If c = 5 then, expression !(c==5) equals to 0.

Example 5: Logical Operators

  1. // Working of logical operators
  2. #include <stdio.h>
  3. int main()
  4. {
  5. int a = 5, b = 5, c = 10, result;
  6. result = (a == b) && (c > b);
  7. printf("(a == b) && (c > b) is %d \n", result);
  8. result = (a == b) && (c < b);
  9. printf("(a == b) && (c < b) is %d \n", result);
  10. result = (a == b) || (c < b);
  11. printf("(a == b) || (c < b) is %d \n", result);
  12. result = (a != b) || (c < b);
  13. printf("(a != b) || (c < b) is %d \n", result);
  14. result = !(a != b);
  15. printf("!(a == b) is %d \n", result);
  16. result = !(a == b);
  17. printf("!(a == b) is %d \n", result);
  18. return 0;
  19. }
Output
(a == b) && (c > b) is 1 
(a == b) && (c < b) is 0 
(a == b) || (c < b) is 1 
(a != b) || (c < b) is 0 
!(a != b) is 1 
!(a == b) is 0 
Explanation of logical operator program
  • (a == b) && (c > 5) evaluates to 1 because both operands (a == b) and (c > b) is 1 (true).
  • (a == b) && (c < b) evaluates to 0 because operand (c < b) is 0 (false).
  • (a == b) || (c < b) evaluates to 1 because (a = b) is 1 (true).
  • (a != b) || (c < b) evaluates to 0 because both operand (a != b) and (c < b) are 0 (false).
  • !(a != b) evaluates to 1 because operand (a != b) is 0 (false). Hence, !(a != b) is 1 (true).
  • !(a == b) evaluates to 0 because (a == b) is 1 (true). Hence, !(a == b) is 0 (false).

C 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.
OperatorsMeaning of operators
&Bitwise AND
|Bitwise OR
^Bitwise exclusive OR
~Bitwise complement
<<Shift left
>>Shift right
Visit bitwise operator in C to learn more.

Other Operators


Comma Operator




For loop

A for loop is a more efficient loop structure in 'C' programming. The general structure of for loop is as follows:
for (initial value; condition; incrementation or decrementation ) 
{
  statements;
}
  • The initial value of the for loop is performed only once.
  • The condition is a Boolean expression that tests and compares the counter to a fixed value after each iteration, stopping the for loop when false is returned.
  • The incrementation/decrementation increases (or decreases) the counter by a set value.
Following program illustrates the use of a simple for loop:
#include<stdio.h>
int main()
{
 int number;
 for(number=1;number<=10;number++) //for loop to print 1-10 numbers
 {
  printf("%d\n",number);  //to print the number
 }
 return 0;
}
Output:

While Loop

A while loop is the most straightforward looping structure. The basic format of while loop is as follows:
while (condition) {
             statements;
}
It is an entry-controlled loop. In while loop, a condition is evaluated before processing a body of the loop. If a condition is true then and only then the body of a loop is executed. After the body of a loop is executed then control again goes back at the beginning, and the condition is checked if it is true, the same process is executed until the condition becomes false. Once the condition becomes false, the control goes out of the loop.
After exiting the loop, the control goes to the statements which are immediately after the loop. The body of a loop can contain more than one statement. If it contains only one statement, then the curly braces are not compulsory. It is a good practice though to use the curly braces even we have a single statement in the body.
In while loop, if the condition is not true, then the body of a loop will not be executed, not even once. It is different in do while loop which we will see shortly.


Following program illustrates a while loop:
#include<stdio.h>
#include<conio.h>
int main()
{
 int num=1; //initializing the variable
 while(num<=10) //while loop with condition
 {
  printf("%d\n",num);
  num++;  //incrementing operation
 }
 return 0;
}
Output:

Do-While loop

A do-while loop is similar to the while loop except that the condition is always executed after the body of a loop. It is also called an exit-controlled loop.
The basic format of while loop is as follows:
 do {
  statements
} while (expression);
As we saw in a while loop, the body is executed if and only if the condition is true. In some cases, we have to execute a body of the loop at least once even if the condition is false. This type of operation can be achieved by using a do-while loop.
In the do-while loop, the body of a loop is always executed at least once. After the body is executed, then it checks the condition. If the condition is true, then it will again execute the body of a loop otherwise control is transferred out of the loop.
Similar to the while loop, once the control goes out of the loop the statements which are immediately after the loop is executed.
The critical difference between the while and do-while loop is that in while loop the while is written at the beginning. In do-while loop, the while condition is written at the end and terminates with a semi-colon (;)
The following program illustrates the working of a do-while loop:
We are going to print a table of number 2 using do while loop.
#include<stdio.h>
#include<conio.h>
int main()
{
 int num=1; //initializing the variable
 do //do-while loop 
 {
  printf("%d\n",2*num);
  num++;  //incrementing operation
 }while(num<=10);
 return 0;
}
Output:
WHAT IS POINTER??
Pointers in C language is a variable that stores/points the address of another variable. A Pointer in C is used to allocate memory dynamically i.e. at run time. The pointer variable might be belonging to any of the data type such as int, float, char, double, short etc
WHAT IS ARRAY??
An array in C or C++ is a collection of items stored at contiguous memory locations and elements can be accessed randomly using indices of an array. They are used to store similar type of elements as in the data type must be the same for all elements.
There are 2 types of C arrays. They are,
  • One dimensional array.
  • Multi dimensional array. Two dimensional array. Three dimensional array. four dimensional array etc

C switch Statement

In this tutorial, you will learn to create the switch statement in C programming with the help of an example.
The switch statement allows us to execute one code block among many alternatives.
You can do the same thing with the if...else..if ladder. However, the syntax of the switch statement is much easier to read and write.

Syntax of switch...case

  1. switch (expression)
  2. ​{
  3. case constant1:
  4. // statements
  5. break;
  6. case constant2:
  7. // statements
  8. break;
  9. .
  10. .
  11. .
  12. default:
  13. // default statements
  14. }
How does the switch statement work?
The expression is evaluated once and compared with the values of each case label.
  • If there is a match, the corresponding statements after the matching label are executed. For example, if the value of the expression is equal to constant2, statements after case constant2: are executed until break is encountered.
  • If there is no match, the default statements are executed.
If we do not use break, all statements after the matching label are executed.
By the way, the default clause inside the switch statement is optional.
BREAK STATEMENT
C break statement. The break is a keyword in C which is used to bring the program control out of the loop. The break statement is used inside loops or switch statement. The break statement breaks the loop one by one, i.e., in the case of nested loops, it breaks the inner loop first and then proceeds to outer loops.
CONTINUE STATEMENT IN C
The continue statement in C programming works somewhat like the break statement. Instead of forcing termination, it forces the next iteration of the loop to take place, skipping any code in between. For the for loop, continue statement causes the conditional test and increment portions of the loop to execute.

C Functions

In c, we can divide a large program into the basic building blocks known as function. The function contains the set of programming statements enclosed by {}. A function can be called multiple times to provide reusability and modularity to the C program. In other words, we can say that the collection of functions creates a program. The function is also known as procedure or subroutine in other programming languages.

Advantage of functions in C

There are the following advantages of C functions.
  • By using functions, we can avoid rewriting same logic/code again and again in a program.
  • We can call C functions any number of times in a program and from any place in a program.
  • We can track a large C program easily when it is divided into multiple functions.
  • Reusability is the main achievement of C functions.
  • However, Function calling is always a overhead in a C program.

Function Aspects

There are three aspects of a C function.
  • Function declaration A function must be declared globally in a c program to tell the compiler about the function name, function parameters, and return type.

  • Function call Function can be called from anywhere in the program. The parameter list must not differ in function calling and function declaration. We must pass the same number of functions as it is declared in the function declaration.

  • Function definition It contains the actual statements which are to be executed. It is the most important aspect to which the control comes when the function is called. Here, we must notice that only one value can be returned from the function.
SNC function aspectsSyntax
1Function declarationreturn_type function_name (argument list);
2Function callfunction_name (argument_list)
3Function definitionreturn_type function_name (argument list) {function body;}
The syntax of creating function in c language is given below:
  1. return_type function_name(data_type parameter...){  
  2. //code to be executed  
  3. }  

Types of Functions

There are two types of functions in C programming:
  1. Library Functions: are the functions which are declared in the C header files such as scanf(), printf(), gets(), puts(), ceil(), floor() etc.
  2. User-defined functions: are the functions which are created by the C programmer, so that he/she can use it many times. It reduces the complexity of a big program and optimizes the code.
C Function

Return Value

A C function may or may not return a value from the function. If you don't have to return any value from the function, use void for the return type.
Let's see a simple example of C function that doesn't return any value from the function.
Example without return value:
  1. void hello(){  
  2. printf("hello c");  
  3. }  
If you want to return any value from the function, you need to use any data type such as int, long, char, etc. The return type depends on the value to be returned from the function.
Let's see a simple example of C function that returns int value from the function.
Example with return value:
  1. int get(){  
  2. return 10;  
  3. }  
In the above example, we have to return 10 as a value, so the return type is int. If you want to return floating-point value (e.g., 10.2, 3.1, 54.5, etc), you need to use float as the return type of the method.
  1. float get(){  
  2. return 10.2;  
  3. }  
Now, you need to call the function, to get the value of the function.

Different aspects of function calling

A function may or may not accept any argument. It may or may not return any value. Based on these facts, There are four different aspects of function calls.
  • function without arguments and without return value
  • function without arguments and with return value
  • function with arguments and without return value
  • function with arguments and with return value

Example for Function without argument and return value

Example 1

  1. #include<stdio.h>  
  2. void printName();  
  3. void main ()  
  4. {  
  5.     printf("Hello ");  
  6.     printName();  
  7. }  
  8. void printName()  
  9. {  
  10.     printf("Javatpoint");  
  11. }  
Output
Hello Javatpoint

Example 2

  1. #include<stdio.h>  
  2. void sum();  
  3. void main()  
  4. {  
  5.     printf("\nGoing to calculate the sum of two numbers:");  
  6.     sum();  
  7. }  
  8. void sum()  
  9. {  
  10.     int a,b;   
  11.     printf("\nEnter two numbers");  
  12.     scanf("%d %d",&a,&b);   
  13.     printf("The sum is %d",a+b);  
  14. }  
Output
Going to calculate the sum of two numbers:

Enter two numbers 10 
24 

The sum is 34

Example for Function without argument and with return value

Example 1

  1. #include<stdio.h>  
  2. int sum();  
  3. void main()  
  4. {  
  5.     int result;   
  6.     printf("\nGoing to calculate the sum of two numbers:");  
  7.     result = sum();  
  8.     printf("%d",result);  
  9. }  
  10. int sum()  
  11. {  
  12.     int a,b;   
  13.     printf("\nEnter two numbers");  
  14.     scanf("%d %d",&a,&b);  
  15.     return a+b;   
  16. }  
Output
Going to calculate the sum of two numbers:

Enter two numbers 10 
24 

The sum is 34

Example 2: program to calculate the area of the square

  1. #include<stdio.h>  
  2. int sum();  
  3. void main()  
  4. {  
  5.     printf("Going to calculate the area of the square\n");  
  6.     float area = square();  
  7.     printf("The area of the square: %f\n",area);  
  8. }  
  9. int square()  
  10. {  
  11.     float side;  
  12.     printf("Enter the length of the side in meters: ");  
  13.     scanf("%f",&side);  
  14.     return side * side;  
  15. }  
Output
Going to calculate the area of the square 
Enter the length of the side in meters: 10 
The area of the square: 100.000000

Example for Function with argument and without return value

Example 1

  1. #include<stdio.h>  
  2. void sum(intint);  
  3. void main()  
  4. {  
  5.     int a,b,result;   
  6.     printf("\nGoing to calculate the sum of two numbers:");  
  7.     printf("\nEnter two numbers:");  
  8.     scanf("%d %d",&a,&b);  
  9.     sum(a,b);  
  10. }  
  11. void sum(int a, int b)  
  12. {  
  13.     printf("\nThe sum is %d",a+b);      
  14. }  
Output
Going to calculate the sum of two numbers:

Enter two numbers 10 
24 

The sum is 34

Example 2: program to calculate the average of five numbers.

  1. #include<stdio.h>  
  2. void average(intintintintint);  
  3. void main()  
  4. {  
  5.     int a,b,c,d,e;   
  6.     printf("\nGoing to calculate the average of five numbers:");  
  7.     printf("\nEnter five numbers:");  
  8.     scanf("%d %d %d %d %d",&a,&b,&c,&d,&e);  
  9.     average(a,b,c,d,e);  
  10. }  
  11. void average(int a, int b, int c, int d, int e)  
  12. {  
  13.     float avg;   
  14.     avg = (a+b+c+d+e)/5;   
  15.     printf("The average of given five numbers : %f",avg);  
  16. }  
Output
Going to calculate the average of five numbers:
Enter five numbers:10 
20
30
40
50
The average of given five numbers : 30.000000

Example for Function with argument and with return value

Example 1

  1. #include<stdio.h>  
  2. int sum(intint);  
  3. void main()  
  4. {  
  5.     int a,b,result;   
  6.     printf("\nGoing to calculate the sum of two numbers:");  
  7.     printf("\nEnter two numbers:");  
  8.     scanf("%d %d",&a,&b);  
  9.     result = sum(a,b);  
  10.     printf("\nThe sum is : %d",result);  
  11. }  
  12. int sum(int a, int b)  
  13. {  
  14.     return a+b;  
  15. }  
Output
Going to calculate the sum of two numbers:
Enter two numbers:10
20 
The sum is : 30   

Example 2: Program to check whether a number is even or odd

  1. #include<stdio.h>  
  2. int even_odd(int);  
  3. void main()  
  4. {  
  5.  int n,flag=0;  
  6.  printf("\nGoing to check whether a number is even or odd");  
  7.  printf("\nEnter the number: ");  
  8.  scanf("%d",&n);  
  9.  flag = even_odd(n);  
  10.  if(flag == 0)  
  11.  {  
  12.     printf("\nThe number is odd");  
  13.  }  
  14.  else   
  15.  {  
  16.     printf("\nThe number is even");  
  17.  }  
  18. }  
  19. int even_odd(int n)  
  20. {  
  21.     if(n%2 == 0)  
  22.     {  
  23.         return 1;  
  24.     }  
  25.     else   
  26.     {  
  27.         return 0;  
  28.     }  
  29. }  
Output
Going to check whether a number is even or odd
Enter the number: 100
The number is even

C Library Functions

Library functions are the inbuilt function in C that are grouped and placed at a common place called the library. Such functions are used to perform some specific operations. For example, printf is a library function used to print on the console. The library functions are created by the designers of compilers. All C standard library functions are defined inside the different header files saved with the extension .h. We need to include these header files in our program to make use of the library functions defined in such header files. For example, To use the library functions such as printf/scanf we need to include stdio.h in our program which is a header file that contains all the library functions regarding standard input/output.
The list of mostly used header files is given in the following table.

SNHeader fileDescription
1stdio.hThis is a standard input/output header file. It contains all the library functions regarding standard input/output.
2conio.hThis is a console input/output header file.
3string.hIt contains all string related library functions like gets(), puts(),etc.
4stdlib.hThis header file contains all the general library functions like malloc(), calloc(), exit(), etc.
5math.hThis header file contains all the math operations related functions like sqrt(), pow(), etc.
6time.hThis header file contains all the time-related functions.
7ctype.hThis header file contains all character handling functions.
8stdarg.hVariable argument functions are defined in this header file.
9signal.hAll the signal handling functions are defined in this header file.
10setjmp.hThis file contains all the jump functions.
11locale.hThis file contains locale functions.
12errno.hThis file contains error handling functions.
13assert.hThis file contains diagnostics functions.

History of C Language History of C language  is interesting to know. Here we are going to discuss a brief history of the c language. ...