0% found this document useful (0 votes)
78 views9 pages

Unit 1

The C programming language document discusses: 1. C was created by Dennis Ritchie for system applications that interact directly with hardware. 2. C serves as the base for many other languages and is known as the "mother language". 3. C can be used for low-level/system programming like operating systems, drivers, and kernels due to its ability to directly interface with hardware.

Uploaded by

Kanishka Setia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
78 views9 pages

Unit 1

The C programming language document discusses: 1. C was created by Dennis Ritchie for system applications that interact directly with hardware. 2. C serves as the base for many other languages and is known as the "mother language". 3. C can be used for low-level/system programming like operating systems, drivers, and kernels due to its ability to directly interface with hardware.

Uploaded by

Kanishka Setia
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

C Programming

The C Language is developed by Dennis Ritchie for creating system applications that directly
interact with the hardware devices such as drivers, kernels, etc.

C programming is considered as the base for other programming languages, that is why it is known
as mother language.

It can be defined by the following ways:

1. Mother language
2. System programming language
3. Procedure-oriented programming language
4. Structured programming language
5. Mid-level programming language

1) C as a mother language

C language is considered as the mother language of all the modern programming languages
because most of the compilers, JVMs, Kernels, etc. are written in C language, and most of the
programming languages follow C syntax, for example, C++, Java, C#, etc.

It provides the core concepts like the array, strings, functions, file handling, etc. that are being used
in many languages like C++, Java, C#, etc.

2) C as a system programming language

A system programming language is used to create system software. C language is a system


programming language because it can be used to do low-level programming (for example driver
and kernel). It is generally used to create hardware devices, OS, drivers, kernels, etc. For example,
Linux kernel is written in C.

It can't be used for internet programming like Java, .Net, PHP, etc.

3) C as a procedural language

A procedure is known as a function, method, routine, subroutine, etc. A procedural


language specifies a series of steps for the program to solve the problem.

A procedural language breaks the program into functions, data structures, etc.

C is a procedural language. In C, variables and function prototypes must be declared before being
used.
4) C as a structured programming language

A structured programming language is a subset of the procedural language. Structure means to


break a program into parts or blocks so that it may be easy to understand.

In the C language, we break the program into parts using functions. It makes the program easier to
understand and modify.

5) C as a mid-level programming language

C is considered as a middle-level language because it supports the feature of both low-level and
high-level languages. C language program is converted into assembly code, it supports pointer
arithmetic (low-level), but it is machine independent (a feature of high-level).

A Low-level language is specific to one machine, i.e., machine dependent. It is machine dependent,
fast to run. But it is not easy to understand.

A High-Level language is not specific to one machine, i.e., machine independent. It is easy to
understand.

Features of C Language

C is the widely used language. It provides many features that are given below.
1. Simple
2. Machine Independent or Portable
3. Mid-level programming language
4. structured programming language
5. Rich Library
6. Memory Management
7. Fast Speed
8. Pointers
9. Recursion
10. Extensible

1) Simple

C is a simple language in the sense that it provides a structured approach (to break the problem
into parts), the rich set of library functions, data types, etc.

2) Machine Independent or Portable

Unlike assembly language, c programs can be executed on different machines with some machine
specific changes. Therefore, C is a machine independent language.
3) Mid-level programming language

Although, C is intended to do low-level programming. It is used to develop system applications


such as kernel, driver, etc. It also supports the features of a high-level language. That is why it is
known as mid-level language.

4) Structured programming language

C is a structured programming language in the sense that we can break the program into parts
using functions. So, it is easy to understand and modify. Functions also provide code reusability.

5) Rich Library

C provides a lot of inbuilt functions that make the development fast.

6) Memory Management

It supports the feature of dynamic memory allocation. In C language, we can free the allocated
memory at any time by calling the free() function.

7) Speed

The compilation and execution time of C language is fast since there are lesser inbuilt functions and
hence the lesser overhead.

8) Pointer

C provides the feature of pointers. We can directly interact with the memory by using the pointers.
We can use pointers for memory, structures, functions, array, etc.

9) Recursion

In C, we can call the function within the function. It provides code reusability for every function.
Recursion enables us to use the approach of backtracking.
10) Extensible

C language is extensible because it can easily adopt new features.

Compilation process in c

What is a compilation?

The compilation is a process of converting the source code into object code. It is done with the help
of the compiler. The compiler checks the source code for the syntactical or structural errors, and if
the source code is error-free, then it generates the object code.

The c compilation process converts the source code taken as input into the object code or machine
code. The compilation process can be divided into four steps, i.e., Pre-processing, Compiling,
Assembling, and Linking.

The preprocessor takes the source code as an input, and it removes all the comments from the source
code. The preprocessor takes the preprocessor directive and interprets it. For example,
if <stdio.h>, the directive is available in the program, then the preprocessor interprets the directive
and replace this directive with the content of the 'stdio.h' file.

Volume 0%

The following are the phases through which our program passes before being transformed into an
executable form:

o Preprocessor
o Compiler
o Assembler
o Linker

Preprocessor

The source code is the code which is written in a text editor and the source code file is
given an extension ".c". This source code is first passed to the preprocessor, and then
the preprocessor expands this code. After expanding the code, the expanded code is
passed to the compiler.

Compiler

The code which is expanded by the preprocessor is passed to the compiler. The compiler converts
this code into assembly code. Or we can say that the C compiler converts the pre-processed code
into assembly code.
Assembler

The assembly code is converted into object code by using an assembler. The name of the object file
generated by the assembler is the same as the source file. The extension of the object file in DOS is
'.obj,' and in UNIX, the extension is 'o'. If the name of the source file is 'hello.c', then the name of
the object file would be 'hello.obj'.

Linker

Mainly, all the programs written in C use library functions. These library functions are pre-
compiled, and the object code of these library files is stored with '.lib' (or '.a') extension. The main
working of the linker is to combine the object code of library files with the object code of our
program. Sometimes the situation arises when our program refers to the functions defined in other
files; then linker plays a very important role in this. It links the object code of these files to our
program. Therefore, we conclude that the job of the linker is to link the object code of our program
with the object code of the library files and other files. The output of the linker is the executable file.
The name of the executable file is the same as the source file but differs only in their extensions. In
DOS, the extension of the executable file is '.exe', and in UNIX, the executable file can be named as
'a.out'. For example, if we are using printf() function in a program, then the linker adds its associated
code in an output file.

Let's understand through an example.

hello.c

1. #include <stdio.h>
2. int main()
3. {
4. printf("Hello world");
5. return 0;
6. }

the following steps are taken to execute a program:

o Firstly, the input file, i.e., hello.c, is passed to the preprocessor, and the preprocessor
converts the source code into expanded source code. The extension of the expanded source
code would be hello.i.
o The expanded source code is passed to the compiler, and the compiler converts this
expanded source code into assembly code. The extension of the assembly code would
be hello.s.
o This assembly code is then sent to the assembler, which converts the assembly code into
object code.
o After the creation of an object code, the linker creates the executable file. The loader will
then load the executable file for the execution.
printf() and scanf() in C

The printf() and scanf() functions are used for input and output in C language. Both functions are
inbuilt library functions, defined in stdio.h (header file).

printf() function

The printf() function is used for output. It prints the given statement to the console.

The syntax of printf() function is given below:

1. printf("format string",argument_list);

The format string can be %d (integer), %c (character), %s (string), %f (float) etc.

scanf() function

The scanf() function is used for input. It reads the input data from the console.

1. scanf("format string",argument_list);

Program to print cube of given number

Let's see a simple example of c language that gets input from the user and prints the cube of the
given number.

1. #include<stdio.h>
2. int main(){
3. int number;
4. printf("enter a number:");
5. scanf("%d",&number);
6. printf("cube of number is:%d ",number*number*number);
7. return 0;
8. }

Output

enter a number:5
cube of number is:125

The scanf("%d",&number) statement reads integer number from the console and stores the given
value in number variable.

The printf("cube of number is:%d ",number*number*number) statement prints the cube of


number on the console.
Variables in C

A variable is a name of the memory location. It is used to store data. Its value can be changed, and
it can be reused many times.

It is a way to represent memory location through symbol so that it can be easily identified.

Let's see the syntax to declare a variable:

1. type variable_list;

The example of declaring the variable is given below:

1. int a;
2. float b;
3. char c;

Here, a, b, c are variables. The int, float, char are the data types.

We can also provide values while declaring the variables as given below:

1. int a=10,b=20;//declaring 2 variable of integer type


2. float f=20.8;
3. char c='A';

Rules for defining variables


o A variable can have alphabets, digits, and underscore.
o A variable name can start with the alphabet, and underscore only. It can't start with a digit.
o No whitespace is allowed within the variable name.
o A variable name must not be any reserved word or keyword, e.g. int, float, etc.

Valid variable names:

1. int a;
2. int _ab;
3. int a30;

Invalid variable names:

1. int 2;
2. int a b;
3. int long;
C Data Types and Sizes
 In a C program, the programmer has to tell the system before, the type of numbers or
characters he is using in his program. These specification of data is called data type.
 C language data types can be classified in to 3 types as shown in figure

Primary Data type:

No Data Type Full form Range of Values


1 char Character -128 to 127
2 int Integer -32768 to +32767
3 float single precision floating point 3.4e-38 to 3.4e+38
4 double Double precision floating point 1.7e-308 to 1.7e+308
5 void Void
 void data type used in functions to specify the return value or the arguments.
 There are number of qualifiers such as short,long,signed,unsigned can be applied to
these primary data types.
 The possible qualifiers for the basic type are shown in the table
No Data Type Qualifier
1 Char Signed,Unsigned
2 Int short,long,signed,unsigned
3 Float No qualifier
4 double long
5 Void No qualifier
 Each compiler is free to choose appropriate size for its own hardware with
restrictions that short and int are atleast 16 bits and longs are atleast 32 bits and size of
short < int < long.
 qualifier signed or unsigned may be applied to char or any integer.
 unsigned numbers are always positive or zero and obey the laws of arithmetic
modulo 2n, where n is the number of bits in the type.For example char is 8 bits so unsigned
char variables have values between 0 and 28 ie values between 0 and 255.
16 bit machine 32 bit machine
Data Type
size(bytes) Range Size(bytes) Range
Char or Signed Char 1 -128 to 127 1 -128 to 127
Unsigned Char 1 0 to 255 1 0 to 255
Short int or Signed
1 -128 to 127 2 -32768 to 32767
short int
unsigned short int 1 0 to 255 2 0 to 65535
-2147483648 to
int or Signed int 2 -32768 to 32767 4
2147483647
Unsigned int 2 0 to 65535 4 0 to 4294967295
Long int or Signed -2147483648 to -2147483648 to
4 4
long int 2147483647 2147483647
Unsigned long int 4 0 to 4294967295 4 0 to 4294967295
Float 4 3.4e-38 to 3.4e+38 4 3.4e-38 to 3.4e+38
Double 8 1.7e-308 to 1.7e+308 8 1.7e-308 to 1.7e+308
Long Double 10 3.4e-4932 to 3.4e+4932 16

 If we do not specify either signed or unsigned, most compiler will assume the type to
be signed. so signed int x; can be written as int x;
 short and long can be used alone as type specifiers.
short=short int
long=long int
Short int x; can be wriiten as short x;
 signed and unsigned can also be used alone as type specifiers.
signed int=signed
unsigned int=unsigned
unsigned int x; can be wriiten as unsigned x;

You might also like