Professional Documents
Culture Documents
Structured Programming Notes
Structured Programming Notes
TABLE OF CONTENT
INTRODUCTION TO C PROGRAMMING........................................................................................................................2
C programming language standards:...........................................................................................................................2
C11 and Embedded C language:..................................................................................................................................2
Features of C programming language:.........................................................................................................................3
Uses of C programming language:...............................................................................................................................3
Which level is C language belonging to?.....................................................................................................................3
The C language is a structured language......................................................................................................................4
Key points to remember in C language:.......................................................................................................................4
Basic commands in C programming to write basic C Program:....................................................................................5
1. C Basic Program:.....................................................................................................................................................6
Steps to write C programs............................................................................................................................................6
2.Steps to write C programs and get the output:...........................................................................................................6
3. Creation, Compilation and Execution of a C program:............................................................................................7
Basic structure of C program:......................................................................................................................................7
4. Basic structure of C program:..................................................................................................................................7
Example C program to compare all the sections:.........................................................................................................7
Description for each section of a C program:...............................................................................................................8
PRINTF AND SCANF......................................................................................................................................................9
C – DATA TYPES:.........................................................................................................................................................12
C CONSTANTS............................................................................................................................................................ 18
C VARIABLE................................................................................................................................................................ 21
Environment functions...............................................................................................................................................24
C – Decision Control statement.................................................................................................................................32
Loop control statements............................................................................................................................................35
C – Case control statements......................................................................................................................................40
C – Type Qualifiers.....................................................................................................................................................44
C – Storage Class Specifiers........................................................................................................................................45
C – Function............................................................................................................................................................... 49
C – Arithmetic functions.............................................................................................................................................58
C – Int, char validation functions...............................................................................................................................59
ARRAYS...................................................................................................................................................................... 63
REVISION QUESTIONS........................................................................................................................................68
1
INTRODUCTION TO C PROGRAMMING
C89/C90 standard – First standardized specification for C language was developed by the
American National Standards Institute in 1989. C89 and C90 standards refer to the same
programming language.
C99 standard – Next revision was published in 1999 that introduced new features like
advanced data types and other changes.
C11 standard adds new features to C programming language and library like type generic
macros, anonymous structures, improved Unicode support, atomic operations, multi-
threading and bounds-checked functions. It also makes some portions of the existing C99
library optional and improves compatibility with C++.
Embedded C includes features not available in C like fixed-point arithmetic, named
address spaces, and basic I/O hardware addressing.
Operating systems, C compiler and all UNIX application programs are written in C
language
It is also called as procedure oriented programming language. The C language is reliable,
simple and easy to use. C has been coded in assembly language.
2
Features of C programming language:
Reliability
Portability
Flexibility
Interactivity
Modularity
Efficiency and Effectiveness
The C programming language is used for developing system applications that forms a major
portion of operating systems such as Windows, UNIX and Linux. Below are some examples of C
being used.
Database systems
Graphics packages
Word processors
Spreadsheets
Operating system development
Compilers and Assemblers
Network drivers
Interpreters
4
We are going to learn a simple “Hello World” C program in this section. Also, all the below
topics are explained in this section which are the basics of a C program.
Below are few commands and syntax used in C programming to write a simple C program. Let’s
see all the sections of a simple C program line by line.
1 #include <stdio.h> This is a preprocessor command that includes standard input output
header file(stdio.h) from the C library before compiling a C
program
2 int main() This is the main function from where execution of any C program
begins.
4 /*_some_comments_*/ whatever is given inside the command “/* */” in any C program,
won’t be considered for compilation and execution.
6 getch(); This command waits for any character input from keyboard.
5
1. C Basic Program:
#include <stdio.h>
int main()
{
/* Our first simple C basic program */
printf(“Hello World! “);
getch();
return 0;
}
.
Output:
Hello World!
.
Below are the steps to be followed for any C program to create and get the output. This is
common to all C program and there is no exception whether its a very small C program or very
large C program.
6
3. Creation, Compilation and Execution of a C program:
Prerequisite:
If you want to create, compile and execute C programs by your own, you have to install
C compiler in your machine. Then, you can start to execute your own C programs in your
machine.
You can refer below link for how to install C compiler and compile and execute C
programs in your machine.
Once C compiler is installed in your machine, you can create, compile and execute C
programs as shown in below link.
1. Documentation section
2. Link Section
3. Definition Section
4. Global declaration section
5. Function prototype declaration section
6. Main function
7. User defined function definition section
You can compare all the sections of a C program with the below C program.
7
/* C basic structure program Documentation section
Author: fresh2refresh.com
Date : 01/01/2012
*/#include <stdio.h> /* Link section */
int total = 0; /* Global declaration and definition section */
int sum (int, int); /* Function declaration section */
int main () /* Main function */
{
printf (“This is a C basic program \n”);
total = sum (1, 1);
printf (“Sum of two numbers : %d \n”, total);
return 0;
}
int sum (int a, int b) /* User defined function */
{ /* definition section */
return a + b;
}
.
Output:
1 Documentation We can give comments about the program, creation or modified date,
section author name etc in this section. The characters or words or anything
which are given between “/*” and “*/”, won’t be considered by C
compiler for compilation process.These will be ignored by C compiler
during compilation.
8
Example : /* comment line1 comment line2 comment 3 */
2 Link Section Header files that are required to execute a C program are included in
this section
3 Definition Section In this section, variables are defined and values are set to these
variables.
4 Global declaration Global variables are defined in this section. When a variable is to be
section used throughout the program, can be defined in this section.
5 Function prototype Function prototype gives many information about a function like
declaration section return type, parameter names used inside the function.
6 Main function Every C program is started from main function and this function
contains two major sections called declaration section and executable
section.
7 User defined User can define their own functions in this section which perform
function section particular task as per the user requirement.
printf() and scanf() functions are inbuilt library functions in C which are available in C
library by default. These functions are declared and related macros are defined in
“stdio.h” which is a header file.
We have to include “stdio.h” file as shown in below C program to make use of these
printf() and scanf() library functions.
1. C printf() function:
printf() function is used to print the “character, string, float, integer, octal and
hexadecimal values” onto the output screen.
We use printf() function with %d format specifier to display the value of an integer
variable.
Similarly %c is used to display character, %f for float variable, %s for string
variable, %lf for double and %x for hexadecimal variable.
To generate a newline,we use “\n” in C printf() statement.
Note:
C language is case sensitive. For example, printf() and scanf() are different from Printf()
and Scanf(). All characters in printf() and scanf() functions must be in lower case.
9
Example program for C printf() function:
#include <stdio.h>
int main()
{
char ch = ‘A’;
char str[20] = “fresh2refresh.com”;
float flt = 10.234;
int no = 150;
double dbl = 20.123456;
printf(“Character is %c \n”, ch);
printf(“String is %s \n” , str);
printf(“Float value is %f \n”, flt);
printf(“Integer value is %d\n” , no);
printf(“Double value is %lf \n”, dbl);
printf(“Octal value is %o \n”, no);
printf(“Hexadecimal value is %x \n”, no);
return 0;
}
.
Output:
Character is A
String is fresh2refresh.com
Float value is 10.234000
Integer value is 150
Double value is 20.123456
Octal value is 226
Hexadecimal value is 96
.
You can see the output with the same data which are placed within the double quotes of printf
statement in the program except
10
%x got replaced by a hexadecimal value corresponding to integer variable
2. C scanf() function:
scanf() function is used to read character, string, numeric data from keyboard
Consider below example program where user enters a character. This value is assigned to
the variable “ch” and then displayed.
Then, user enters a string and this value is assigned to the variable ”str” and then
displayed.
#include <stdio.h>
int main()
{
char ch;
char str[100];
printf(“Enter any character \n”);
scanf(“%c”, &ch);
printf(“Entered character is %c \n”, ch);
printf(“Enter any string ( upto 100 character ) \n”);
scanf(“%s”, &str);
printf(“Entered string is %s \n”, str);
}
.
Output:
Enter any character
a
Entered character is a
Enter any string ( upto 100 character )
hai
Entered string is hai
.
The format specifier %d is used in scanf() statement. So that, the value entered is
received as an integer and %s for string.
Ampersand is used before variable name “ch” in scanf() statement as &ch.
C data types are defined as the data storage format that a variable can store a data to
perform a specific operation.
Data types are used to define a variable before to use in a program.
Size of variable, constant and array are determined by data types.
11
C – DATA TYPES:
Note:
12
Floating point data type consists of 2 types. They are,
1. float
2. double
1. float:
2. double:
Double data type is also same as float data type which allows up-to 10 digits after
decimal.
The range for double datatype is from 1E–37 to 1E+37.
sizeof() function is used to find the memory space allocated for each C data types.
#include <stdio.h>
#include <limits.h>
int main()
{
int a;
char b;
float c;
double d;
printf(“Storage size for int data type:%d \n”,sizeof(a));
printf(“Storage size for char data type:%d \n”,sizeof(b));
printf(“Storage size for float data type:%d \n”,sizeof(c));
printf(“Storage size for double data type:%d\n”,sizeof(d));
return 0;
}
.
Output:
Storage size for int data type:4
Storage size for char data type:1
Storage size for float data type:4
Storage size for double data type:8
.
1.3.2. Modifiers in C:
13
The amount of memory space to be allocated for a variable is derived by modifiers.
Modifiers are prefixed with basic data types to modify (either increase or decrease) the
amount of storage space allocated to a variable.
For example, storage space for int data type is 4 byte for 32 bit processor. We can
increase the range by using long int which is 8 byte. We can decrease the range by using
short int which is 2 byte.
1. short
2. long
3. signed
4. unsigned
5. long long
Below table gives the detail about the storage size of each C basic data type in 16 bit
processor.
Please keep in mind that storage size and range for int and float datatype will vary depend
on the CPU processor (8,16, 32 and 64 bit)
14
2. Enumeration data type in C:
Enum syntax in C:
Enum example in C:
#include <stdio.h>
int main()
{
enum MONTH { Jan = 0, Feb, Mar };
enum MONTH month = Mar;
if(month == 0)
printf(“Value of Jan”);
else if(month == 1)
printf(“Month is Feb”);
if(month == 2)
printf(“Month is Mar”);
}
.
Output:
Month is March
.
15
3. Derived data type in C:
Array, pointer, structure and union are called derived data type in C language.
To know more about derived data types, please visit “C – Array“ , “C – Pointer” , “C –
Structure” and “C – Union” topics in this tutorial.
C tokens, Identifiers and Keywords are the basics in a C program. All are explained in this page
with definition and simple example programs.
1. C tokens:
C tokens are the basic buildings blocks in C language which are constructed together to
write a C program.
Each and every smallest individual units in a C program are known as C tokens.
int main()
{
int x, y, total;
x = 10, y = 20;
total = x + y;
Printf (“Total = %d \n”, total);
}
.
where,
16
main – identifier
{,}, (,) – delimiter
int – keyword
x, y, total – identifier
main, {, }, (, ), int, x, y, total – tokens
Do you know how to use C token in real time application programs? We have given simple
real time application programs where C token is used. You can refer the below C programs to
know how to use C token in real time program.
Identifiers in C language:
3. Keywords in C language:
Keywords in C Language
17
do If static while
Besides these keywords, there are some additional keywords supported by Turbo
C.
C CONSTANTS
C Constants are also like normal variables. But, only difference is, their values can not be
modified by the program once they are defined.
Constants refer to fixed values. They are also called as literals
Constants may be belonging to any of the data type.
Syntax:
Types of C constant:
1. Integer constants
2. Real or Floating point constants
3. Octal & Hexadecimal constants
4. Character constants
5. String constants
6. Backslash character constants
18
5 character constants char ‘A’ , ‘B’, ‘C’
6 string constants char “ABCD” , “Hai”
1. Integer Constants in C:
2. Real constants in C:
Backslash_character Meaning
\b Backspace
\f Form feed
\n New line
\r Carriage return
\t Horizontal tab
\” Double quote
\’ Single quote
\\ Backslash
\v Vertical tab
19
\a Alert or bell
\? Question mark
\N Octal constant (N is an octal constant)
\XN Hexadecimal constant (N – hex.dcml cnst)
1. By “const” keyword
2. By “#define” preprocessor directive
Please note that when you try to change constant values after defining in C program, it
will through error.
#include <stdio.h>
void main()
{
const int height = 100; /*int constant*/
const float number = 3.14; /*Real constant*/
const char letter = ‘A’; /*char constant*/
const char letter_sequence[10] = “ABC”; /*string constant*/
const char backslash_char = ‘\?’; /*special char cnst*/
printf(“value of height :%d \n”, height );
printf(“value of number : %f \n”, number );
printf(“value of letter : %c \n”, letter );
printf(“value of letter_sequence : %s \n”, letter_sequence);
printf(“value of backslash_char : %c \n”, backslash_char);
}
Output:
#include <stdio.h>
#define height 100
#define number 3.14
#define letter ‘A’
20
#define letter_sequence “ABC”
#define backslash_char ‘\?’
void main()
{
printf(“value of height : %d \n”, height );
printf(“value of number : %f \n”, number );
printf(“value of letter : %c \n”, letter );
printf(“value of letter_sequence : %s \n”,letter_sequence);
printf(“value of backslash_char : %c \n”,backslash_char);
}
Output:
C VARIABLE
C variable is a named location in a memory where a program can manipulate the data.
This location is used to hold the value of the variable.
The value of the C variable may get change in the program.
C variable might be belonging to any of the data type like int, float, char etc.
21
initialization variable_name = char flag = ‘x’,
value; ch=’l’;
1. Local variable
2. Global variable
3. Environment variable
#include<stdio.h>
void test();
int main()
{
int m = 22, n = 44;
// m, n are local variables of main function
/*m and n variables are having scope
within this main function only.
These are not visible to test funtion.*/
/* If you try to access a and b in this function,
you will get ‘a’ undeclared and ‘b’ undeclared error */
printf(“\nvalues : m = %d and n = %d”, m, n);
test();
}
void test()
{
int a = 50, b = 80;
// a, b are local variables of test function
/*a and b variables are having scope
within this test function only.
These are not visible to main function.*/
/* If you try to access m and n in this function,
you will get ‘m’ undeclared and ‘n’ undeclared
error */printf(“\nvalues : a = %d and b = %d”, a, b);
}
Output:
22
values : m = 22 and n = 44
values : a = 50 and b = 80
The scope of global variables will be throughout the program. These variables can be
accessed from anywhere in the program.
This variable is defined outside the main function. So that, this variable is visible to main
function and all other sub functions.
#include<stdio.h>
void test();int m = 22, n = 44;
int a = 50, b = 80;
int main()
{
printf(“All variables are accessed from main function”);
printf(“\nvalues: m=%d:n=%d:a=%d:b=%d”, m,n,a,b);
test();
}
void test()
{
printf(“\n\nAll variables are accessed from” \
” test function”);
printf(“\nvalues: m=%d:n=%d:a=%d:b=%d”, m,n,a,b);
}
Output:
3. Environment variables in C:
Environment variable is a variable that will be available for all C applications and C
programs.
We can access these variables from anywhere in a C program without declaring and
initializing in an application or C program.
The inbuilt functions which are used to access, modify and set these environment
variables are called environment functions.
23
Environment functions.
There are 3 functions which are used to access, modify and assign an environment
variable in C. They are,
1. setenv()
2. getenv()
3. putenv()
This function gets the current value of the environment variable. Let us assume that
environment variable DIR is assigned to “/usr/bin/test/”.
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf(“Directory = %s\n”,getenv(“DIR”));
return 0;
}
Output:
/usr/bin/test/
This function sets the value for environment variable. Let us assume that environment
variable “FILE” is to be assigned “/usr/bin/example.c”
#include <stdio.h>
#include <stdlib.h>
int main()
{
setenv(“FILE”, “/usr/bin/example.c”,50);
printf(“File = %s\n”, getenv(“FILE”));
return 0;
}
Output:
File = /usr/bin/example.c
24
This function modifies the value for environment variable. Below example program shows
that how to modify an existing environment variable value.
#include <stdio.h>
#include <stdlib.h>
int main()
{
setenv(“DIR”, “/usr/bin/example/”,50);
printf(“Directory name before modifying = ” \
“%s\n”, getenv(“DIR”));
putenv(“DIR=/usr/home/”);
printf(“Directory name after modifying = ” \
“%s\n”, getenv(“DIR”));
return 0;
}
Output:
C OPERATOR
Operators are the symbol which operates on value or a variable. For example: + is a
operator to perform addition.
C programming language has wide range of operators to perform various operations. For
better understanding of operators, these operators can be classified as:
Operators in C programming
Arithmetic Operators
Assignment Operators
25
Relational Operators
Logical Operators
Conditional Operators
Bitwise Operators
Special Operators
Arithmetic Operators
* multiplication
/ division
remainder after
% division( modulo division)
26
}
a+b=13
a-b=5
a*b=36
a/b=2
Remainder when a divided by b=1
Explanation
Here, the operators +, - and * performed normally as you expected. In normal
calculation, 9/4 equals to 2.25. But, the output is 2 in this program. It is because, a and b
are both integers. So, the output is also integer and the compiler neglects the term after
decimal point and shows answer 2 instead of 2.25. And, finally a%b is 1,i.e. ,when a=9 is
divided by b=4, remainder is 1.
Suppose a=5.0, b=2.0, c=5 and d=2
In C programming,
a/b=2.5
a/d=2.5
c/b=2.5
c/d=2
Note: % operator can only be used with integers.
Increment and decrement operators
In C, ++ and -- are called increment and decrement operators respectively. Both of these
operators are unary operators, i.e, used on single operand. ++ adds 1 to operand
and -- subtracts 1 to operand respectively. For example:
Let a=5 and b=10
a++; //a becomes 6
a--; //a becomes 5
++a; //a becomes 6
--a; //a becomes 5
Difference between ++ and -- operator as postfix and prefix
When i++ is used as prefix(like: ++var), ++var will increment the value of var and then
return it but, if ++ is used as postfix(like: var++), operator will return the value of operand
first and then only increment it. This can be demonstrated by an example:
27
#include <stdio.h>
int main(){
int c=2,d=2;
printf("%d\n",c++); //this statement displays 2 then, only c incremented by 1 to 3.
printf("%d",++c); //this statement increments 1 to c then, only c is displayed.
return 0;
}
Output
2
4
Assignment Operators
The most common assignment operator is =. This operator assigns the value in right side to
the left side. For example:
var=5 //5 is assigned to var
a=c; //value of c is assigned to a
5=c; // Error! 5 is a constant.
= 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
Relational Operator
Relational operators checks relationship between two operands. If the relation is true, it
returns value 1 and if the relation is false, it returns value 0. For example:
a>b
Here, > is a relational operator. If a is greater than b, a>b returns 1 if not then, it returns 0.
28
Relational operators are used in decision making and loops in C programming.
Meaning of
Operator Operator Example
5==3 returns
== Equal to false (0)
5>3 returns
> Greater than true (1)
5<3 returns
< Less than false (0)
5!=3 returns
!= Not equal to true(1)
Logical Operators
Logical operators are used to combine expressions containing relation operators. In C, there
are 3 logical operators:
Operato Meaning of
r Operator Example
Explanation
29
For expression, ((c==5) && (d>5)) to be true, both c==5 and d>5 should be true but,
(d>5) is false in the given example. So, the expression is false. For
expression ((c==5) || (d>5)) to be true, either the expression should be true. Since, (c==5) is
true. So, the expression is true. Since, expression (c==5) is true, !(c==5) is false.
Conditional Operator
Conditional operator takes three operands and consists of two symbols ? and : . Conditional
operators are used for decision making in C. For example:
c=(c>0)?10:-10;
If c is greater than 0, value of c will be 10 but, if c is less than 0, value of c will be -10.
Bitwise Operators
A bitwise operator works on each bit of data. Bitwise operators are used in bit level
programming.
| Bitwise OR
^ Bitwise exclusive OR
~ Bitwise complement
Bitwise operator is advance topic in programming . Learn more about bitwise operator in C
programming .
Other Operators
Comma Operator
Comma operators are used to link related expressions together. For example:
int a,c=5,d;
The sizeof operator
It is a unary operator which is used in finding the size of data type, constant, arrays,
structure etc. For example:
#include <stdio.h>
int main(){
30
int a;
float b;
double c;
char d;
printf("Size of int=%d bytes\n",sizeof(a));
printf("Size of float=%d bytes\n",sizeof(b));
printf("Size of double=%d bytes\n",sizeof(c));
printf("Size of char=%d byte\n",sizeof(d));
return 0;
}
Output
Size of int=4 bytes
Size of float=4 bytes
Size of double=8 bytes
Size of char=1 byte
Conditional operators (?:)
Conditional operators are used in decision making in C programming, i.e, executes
different statements according to test condition whether it is either true or false.
Syntax of conditional operators
conditional_expression?expression1:expression2
If the test condition is true, expression1 is returned and if false expression2 is returned.
Example of conditional operator
#include <stdio.h>
int main(){
char feb;
int days;
printf("Enter l if the year is leap year otherwise enter 0: ");
scanf("%c",&feb);
days=(feb=='l')?29:28;
/*If test condition (feb=='l') is true, days will be equal to 29. */
/*If test condition (feb=='l') is false, days will be equal to 28. */
printf("Number of days in February = %d",days);
return 0;
}
Output
Enter l if the year is leap year otherwise enter n: l
Number of days in February = 29
31
C – Decision Control statement
In decision control statements (C if else and nested if), group of statements are executed
when condition is true. If condition is false, then else part statements are executed.
There are 3 types of decision making control statements in C language. They are,
1. if statements
2. if else statements
3. nested if statements
Syntax for each C decision control statements are given in below table with description.
32
true. If condition 2
also gets failure,
then else part is
executed.
In “if” control statement, respective block of code is executed when condition is true.
int main()
{
int m=40,n=40;
if (m == n)
{
printf("m and n are equal");
}
}
Output:
In C if else control statement, group of statements are executed when condition is true. If
condition is false, then else part statements are executed.
#include <stdio.h>
int main()
{
int m=40,n=20;
if (m == n)
{
printf("m and n are equal");
}
else
{
printf("m and n are not equal");
}
Output:
33
m and n are not equal
In “nested if” control statement, if condition 1 is false, then condition 2 is checked and
statements are executed if it is true.
If condition 2 also gets failure, then else part is executed.
#include <stdio.h>
int main()
{
int m=40,n=20;
if (m>n) {
printf("m is greater than n");
}
else if(m<n) {
printf("m is less than n");
}
else {
printf("m is equal to n");
}
}
Output:
m is greater than n
Loop control statements in C are used to perform looping operations until the given condition is
true. Control comes out of the loop statements once condition becomes false.
1. for
2. while
3. do-while
Syntax for each C loop control statements are given in below table with description.
34
Name
1 for for (exp1; exp2; Where,
expr3) exp1 – variable
{ statements; } initialization
( Example: i=0, j=2,
k=3 )
exp2 – condition
checking
( Example: i>5, j<3,
k=3 )
exp3 –
increment/decrement
( Example: ++i, j–, +
+k )
2 while while (condition) where,
{ statements; } condition might be
a>5, i<10
3 do do { statements; } where,
while while (condition); condition might be
a>5, i<10
In for loop control statement, loop is executed until condition becomes false.
#include <stdio.h>
int main()
{
int i;
for(i=0;i<10;i++)
{
printf("%d ",i);
}
Output:
0123456789
In while loop control statement, loop is executed until condition becomes false.
35
#include <stdio.h>
int main()
{
int i=3;
while(i<10)
{
printf("%d\n",i);
i++;
}
Output:
3456789
In do..while loop control statement, while loop is executed irrespective of the condition for
first time. Then 2nd time onwards, loop is executed until condition becomes false.
#include <stdio.h>
int main()
{
int i=1;
do
{
printf("Value of i is %d\n",i);
i++;
}while(i<=4 && i>=2);
Output:
Value of i is 1
Value of i is 2
Value of i is 3
Value of i is 4
36
S.no while do while
1 Loop is Loop is executed for
executed first time
only when irrespective of the
condition is condition. After
true. executing while loop
for first time, then
condition is checked.
Loop control statements in C are used to perform looping operations until the given condition is
true. Control comes out of the loop statements once condition becomes false.
1. for
2. while
3. do-while
Syntax for each C loop control statements are given in below table with description.
37
In for loop control statement, loop is executed until condition becomes false.
#include <stdio.h>
int main()
{
int i;
for(i=0;i<10;i++)
{
printf("%d ",i);
}
Output:
0123456789
In while loop control statement, loop is executed until condition becomes false.
#include <stdio.h>
int main()
{
int i=3;
while(i<10)
{
printf("%d\n",i);
i++;
}
Output:
3456789
In do..while loop control statement, while loop is executed irrespective of the condition for
first time. Then 2nd time onwards, loop is executed until condition becomes false.
38
#include <stdio.h>
int main()
{
int i=1;
do
{
printf("Value of i is %d\n",i);
i++;
}while(i<=4 && i>=2);
Output:
Value of i is 1
Value of i is 2
Value of i is 3
Value of i is 4
The statements which are used to execute only specific block of statements in a series of
blocks are called case control statements.
1. switch
2. break
3. continue
39
4. goto
Switch case statements are used to execute only specific case statements based on the
switch expression.
Below is the syntax for switch case statement.
switch (expression)
{
case label1: statements;
break;
case label2: statements;
break;
default: statements;
break;
}
#include <stdio.h>
int main ()
{
int value = 3;
switch(value)
{
case 1:
printf(“Value is 1 \n” );
break;
case 2:
printf(“Value is 2 \n” );
break;
case 3:
printf(“Value is 3 \n” );
break;
case 4:
printf(“Value is 4 \n” );
break;
default :
printf(“Value is other than 1,2,3,4 \n” );
}
return 0;
}
40
Output:
Value is 3
2. break statement in C:
Break statement is used to terminate the while loops, switch case loops and for loops
from the subsequent execution.
Syntax: break;
#include <stdio.h>
int main()
{
int i;
for(i=0;i<10;i++)
{
if(i==5)
{
printf(“\nComing out of for loop when i = 5″);
break;
}
printf(“%d “,i);
}
}
Output:
01234
Coming out of for loop when i = 5
3. Continue statement in C:
Continue statement is used to continue the next iteration of for loop, while loop and do-
while loops. So, the remaining statements are skipped within the loop for that particular
iteration.
Syntax : continue;
#include <stdio.h>
41
int main()
{
int i;
for(i=0;i<10;i++)
{
if(i==5 || i==6)
{
printf(“\nSkipping %d from display using ” \
“continue statement \n”,i);
continue;
}
printf(“%d “,i);
}
}
Output:
01234
4. goto statement in C:
goto statements is used to transfer the normal flow of a program to the specified label in
the program.
Below is the syntax for goto statement in C.
{
…….
go to label;
…….
…….
LABEL:
statements;
}
#include <stdio.h>
int main()
{
42
int i;
for(i=0;i<10;i++)
{
if(i==5)
{
printf(“\nWe are using goto statement when i = 5″);
goto HAI;
}
printf(“%d “,i);
}
HAI : printf(“\nNow, we are inside label name \”hai\” \n”);
}
Output:
01234
We are using goto statement when i = 5
Now, we are inside label name “hai”
C – Type Qualifiers
C – type qualifiers : The keywords which are used to modify the properties of a variable
are called type qualifiers.
1. const
2. volatile
1. const keyword:
Constants are also like normal variables. But, only difference is, their values can’t be
modified by the program once they are defined.
They refer to fixed values. They are also called as literals.
They may be belonging to any of the data type.
Syntax:
43
Please refer C – Constants topic in this tutorial for more details on const keyword.
2. volatile keyword:
When a variable is defined as volatile, the program may not change the value of the
variable explicitly.
But, these variable values might keep on changing without any explicit assignment by the
program. These types of qualifiers are called volatile.
For example, if global variable’s address is passed to clock routine of the operating
system to store the system time, the value in this address keep on changing without any
assignment by the program. These variables are named as volatile variable.
Syntax:
Storage class specifiers in C language tells the compiler where to store a variable, how to
store the variable, what is the initial value of the variable and life time of the variable.
Syntax:
storage_specifier data_type variable _name
1. auto
2. extern
3. static
4. register
44
memory main program.
Variable definition
might be anywhere
in the C program
Note:
For faster access of a variable, it is better to go for register specifiers rather than auto
specifiers.
Because, register variables are stored in register memory whereas auto variables are
stored in main CPU memory.
Only few variables can be stored in register memory. So, we can use variables as register
that are used very often in a C program.
The scope of this auto variable is within the function only. It is equivalent to local variable. All
local variables are auto variables by default.
#include<stdio.h>
void increment(void);
int main()
{
increment();
increment();
increment();
increment();
return 0;
}
void increment(void)
{
auto int i = 0 ;
printf ( “%d “, i ) ;
45
i++;
}
Output:
0000
Static variables retain the value of the variable between different function calls.
Output:
0123
The scope of this extern variable is throughout the main program. It is equivalent to global
variable. Definition for extern variable might be anywhere in the C program.
#include<stdio.h>
int x = 10 ;
int main( )
46
{
extern int y;
printf(“The value of x is %d \n”,x);
printf(“The value of y is %d”,y);
return 0;
}
int y=50;
Output:
The value of x is 10
The value of y is 50
Register variables are also local variables, but stored in register memory. Whereas, auto
variables are stored in main CPU memory.
Register variables will be accessed very faster than the normal variables since they are
stored in register memory rather than main memory.
But, only limited variables can be used as register since register size is very low. (16 bits,
32 bits or 64 bits)
#include <stdio.h>
int main()
{
register int i;
int arr[5];// declaring array
arr[0] = 10;// Initializing array
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
for (i=0;i<5;i++)
{
// Accessing each variable
printf(“value of arr[%d] is %d \n”, i, arr[i]);
}
return 0;
}
Output:
47
value of arr[0] is 10
value of arr[1] is 20
value of arr[2] is 30
value of arr[3] is 40
value of arr[4] is 50
C – Function
C functions are basic building blocks in a program. All C programs are written using
functions to improve re-usability, understandability and to keep track on them. You can learn
below concepts of C functions in this section in detail.
1. What is C function?
2. Uses of C functions
3. C function declaration, function call and definition with example program
4. How to call C functions in a program?
1. Call by value
2. Call by reference
5. C function arguments and return values
1. C function with arguments and with return value
2. C function with arguments and without return value
3. C function without arguments and without return value
4. C function without arguments and with return value
6. Types of C functions
1. Library functions in C
2. User defined functions in C
1. Creating/Adding user defined function in C library
7. Command line arguments in C
8. Variable length arguments in C
1. What is C function?
A large C program is divided into basic building blocks called C function. C function contains
set of instructions enclosed by “{ }” which performs specific operation in a C program.
Actually, Collection of these functions creates a C program.
2. Uses of C functions:
C functions are used to avoid rewriting same logic/code again and again in a program.
There is no limit in calling C functions to make use of same functionality wherever
required.
We can call functions any number of times in a program and from any place in a
program.
48
A large C program can easily be tracked when it is divided into functions.
The core concept of C functions are, re-usability, dividing a big task into small pieces to
achieve the functionality and to improve understandability of very large C programs.
Function declaration or prototype - This informs compiler about the function name,
function parameters and return value’s data type.
Function call – This calls the actual function
Function definition – This contains all the statements to be executed.
As you know, functions should be declared and defined before calling in a C program.
In the below program, function “square” is called from main function.
The value of “m” is passed as argument to the function “square”. This value is multiplied
by itself in this function and multiplied value “p” is returned to main function from
function “square”.
#include<stdio.h>
// function prototype, also called function declaration
float square ( float x );
float m, n ;
printf ( "\nEnter some number for finding square \n");
scanf ( "%f", &m ) ;
// function call
n = square ( m ) ;
printf ( "\nSquare of the given number %f is %f",m,n );
49
}
Output:
There are two ways that a C function can be called from a program. They are,
1. Call by value
2. Call by reference
1. Call by value:
In call by value method, the value of the variable is passed to the function as parameter.
The value of the actual parameter can not be modified by formal parameter.
Different Memory is allocated for both actual and formal parameters. Because, value of
actual parameter is copied to formal parameter.
Note:
In this program, the values of the variables “m” and “n” are passed to the function
“swap”.
These values are copied to formal parameters “a” and “b” in swap function and used.
#include<stdio.h>
// function prototype, also called function declaration
void swap(int a, int b);
50
int main()
{
int m = 22, n = 44;
// calling swap function by value
printf(" values before swap m = %d \nand n = %d", m, n);
swap(m, n);
}
Output:
2. Call by reference:
In call by reference method, the address of the variable is passed to the function as
parameter.
The value of the actual parameter can be modified by formal parameter.
Same memory is used for both actual and formal parameters since only address is used by
both parameters.
In this program, the address of the variables “m” and “n” are passed to the function
“swap”.
These values are not copied to formal parameters “a” and “b” in swap function.
Because, they are just holding the address of those variables.
This address is used to access and change the values of the variables.
#include<stdio.h>
// function prototype, also called function declaration
void swap(int *a, int *b);
51
int main()
{
Output:
and n = 44
values after swap a = 44
and b = 22
All C functions can be called either with arguments or without arguments in a C program. These
functions may or may not return values to the calling function. Now, we will see simple example
C programs for each one of the below.
52
S.no C function syntax
1 with arguments and with int function ( int ); // function declaration
return values function ( a ); // function call
int function( int a ) // function definition
{statements; return a;}
2 with arguments and without void function ( int ); // function declaration
return values function( a ); // function call
void function( int a ) // function definition
{statements;}
3 without arguments and without void function(); // function declaration
return values function(); // function call
void function() // function definition
{statements;}
4 without arguments and with int function ( ); // function declaration
return values function ( ); // function call
int function( ) // function definition
{statements; return a;}
Note:
If the return data type of a function is “void”, then, it can’t return any values to the calling
function.
If the return data type of the function is other than void such as “int, float, double etc”,
then, it can return values to the calling function.
In this program, integer, array and string are passed as arguments to the function. The return
type of this function is “int” and value of the variable “a” is returned from the function. The
values for array and string are modified inside the function itself.
#include<stdio.h>
#include<string.h>
int main()
{
int i, a = 20;
int arr[5] = {10,20,30,40,50};
char str[30] = "\"fresh2refresh\"";
for (i=0;i<5;i++)
53
{
// Accessing each variable
printf("value of arr[%d] is %d\n",i,arr[i]);
}
printf("value of str is %s\n",str);
printf("value of a is %d\n",a);
for (i=0;i<5;i++)
{
// Accessing each variable
printf("value of arr[%d] is %d\n",i,arr[i]);
}
printf("value of str is %s\n",str);
return 0;
}
a = a+20;
arr[0] = arr[0]+50;
arr[1] = arr[1]+50;
arr[2] = arr[2]+50;
arr[3] = arr[3]+50;
arr[4] = arr[4]+50;
strcpy(str,"\"modified string\"");
return a;
Output:
54
value of arr[4] is 50
value of str is “fresh2refresh”***values after modification***
value of a is 40
value of arr[0] is 60
value of arr[1] is 70
value of arr[2] is 80
value of arr[3] is 90
value of arr[4] is 100
value of str is “modified string”
In this program, integer, array and string are passed as arguments to the function. The return
type of this function is “void” and no values can be returned from the function. All the values of
integer, array and string are manipulated and displayed inside the function itself.
#include<stdio.h>
int main()
{
int a = 20;
int arr[5] = {10,20,30,40,50};
char str[30] = "\"fresh2refresh\"";
printf("value of a is %d\n\n",a);
for (i=0;i<5;i++)
{
// Accessing each variable
printf("value of arr[%d] is %d\n",i,arr[i]);
}
printf("\nvalue of str is %s\n",str);
}
Output:
55
value of a is 20
value of arr[0] is 10
value of arr[1] is 20
value of arr[2] is 30
value of arr[3] is 40
value of arr[4] is 50
In this program, no values are passed to the function “test” and no values are returned from
this function to main function.
#include<stdio.h>
void test();
int main()
{
test();
return 0;
}
void test()
{
int a = 50, b = 80;
printf("\nvalues : a = %d and b = %d", a, b);
}
Output:
values : a = 50 and b = 80
In this program, no arguments are passed to the function “sum”. But, values are returned
from this function to main function. Values of the variable a and b are summed up in the function
“sum” and the sum of these value is returned to the main function.
#include<stdio.h>
int sum();
int main()
56
{
int addition;
addition = sum();
printf("\nSum of two given values = %d", addition);
return 0;
}
int sum()
{
int a = 50, b = 80, sum;
sum = a + b;
return sum;
}
Output:
C – Arithmetic functions
C functions which are used to perform mathematical operations in a program are called
Arithmetic functions.
Example program for abs(), floor(), round(), ceil(), sqrt(), exp(), log(), sin(), cos(), tan(),
pow() and trunc() functions are given below.
“math.h” and “stdlib.h” header files support all the arithmetic functions in C language.
All the arithmetic functions used in C language are given below.
1 abs ( ) This function returns the absolute value of an integer. The absolute value of a
57
number is always positive. Only integer values are supported in C.
2 floor ( ) This function returns the nearest integer which is less than or equal to the
argument passed to this function.
3 round.(.) This function returns the nearest integer value of the float/double/long
double argument passed to this function. If decimal value is from ”.1 to .5″, it
returns integer value less than the argument. If decimal value is from “.6 to .9″, it
returns the integer value greater than the argument.
4 ceil ( ) This function returns nearest integer value which is greater than or equal to the
argument passed to this function.
8 exp ( ) This function is used to calculate the exponential “e” to the xth power.
14 sqrt ( ) This function is used to find square root of the argument passed to this function.
16 trunc.(.) This function truncates the decimal value from floating point value and returns
integer value.
58
There are many inbuilt functions in C language which are used to validate the data type of
given variable and to convert upper to lower case and lower to upper case are given below with
description and simple example programs.
59
alphabetic & converts to
lower case
POINTERS
C Pointer is a variable that stores/points the address of another variable. C Pointer 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.
Where, * is used to denote that “p” is pointer variable and not a normal variable.
Pointer variable or simply pointer are the special types of variables that holds
memory address rather than data, that is, a variable that holds address value is called
a pointer variable or simply a pointer.
Normal variable stores the value whereas pointer variable stores the address of the
variable.
The content of the C pointer always be a whole number i.e. address.
Always C pointer is initialized to null, i.e. int *p = null.
The value of null pointer is 0.
60
#include <stdio.h>
int main()
{
int *ptr, q;
q = 50;
/* address of q is assigned to ptr */
ptr = &q;
/* display q’s value using ptr variable */
printf(“%d”, *ptr);
return 0;
}
Reference operator(&)
If var is a variable then, &var is the address in memory.
61
ARRAYS
Arrays are closely related to pointers in C programming but the important difference
between them is that, a pointer variable can take different addresses as value whereas, in
case of array it is fixed. This can be demonstrated by an example:
#include <stdio.h>
int main(){
char c[4];
int i;
for(i=0;i<4;++i){
printf("Address of c[%d]=%x\n",i,&c[i]);
}
return 0;
}
Address of c[0]=28ff44
Address of c[1]=28ff45
Address of c[2]=28ff46
Address of c[3]=28ff47
Notice, that there is equal difference (difference of 1 byte) between any two consecutive
elements of array.
Note: You may get different address of an array.
C Array is a collection of variables belongings to the same data type. You can store group of data
of same data type in an array.
62
char b[10]; // character array i.e. string
Types of C arrays:
#include<stdio.h>int main(){
int i;
arr[0] = 10;
arr[1] = 20;
63
arr[2] = 30;
arr[3] = 40;
arr[4] = 50; */
for (i=0;i<5;i++)
Output:
value of arr[0] is 10
value of arr[1] is 20
value of arr[2] is 30
value of arr[3] is 40
value of arr[4] is 50
#include<stdio.h>int main(){
int i,j;
64
// declaring and Initializing array
arr[0][1] = 20;
arr[1][0] = 30;
arr[1][1] = 40; */
for (i=0;i<2;i++)
for (j=0;j<2;j++)
// Accessing variables
Output:
65
In arrays of C programming, name of the array always points to the first element of an
array. Here, address of first element of an array is &arr[0]. Also, arr represents the address
of the pointer where it is pointing. Hence, &arr[0] is equivalent to arr.
Also, value inside the address &arr[0] and address arr are equal. Value in
address &arr[0] isarr[0] and value in address arr is *arr. Hence, arr[0] is equivalent to *arr.
Similarly,
&a[1] is equivalent to (a+1) AND, a[1] is equivalent to *(a+1).
&a[2] is equivalent to (a+2) AND, a[2] is equivalent to *(a+2).
&a[3] is equivalent to (a+1) AND, a[3] is equivalent to *(a+3).
.
.
&a[i] is equivalent to (a+i) AND, a[i] is equivalent to *(a+i).
In C, you can declare an array and can use pointer to alter the data of an array.
//Program to find the sum of six numbers with arrays and pointers.
#include <stdio.h>
int main(){
int i,class[6],sum=0;
printf("Enter 6 numbers:\n");
for(i=0;i<6;++i){
scanf("%d",(class+i)); // (class+i) is equivalent to &class[i]
sum += *(class+i); // *(class+i) is equivalent to class[i]
}
printf("Sum=%d",sum);
return 0;
}
66
REVISION QUESTIONS
1. Difference between procedures and functions
• When the parameter is passed into the procedure; it does not return any value whereas a function always returns a
value.
• One of the major differences in both of them is that procedures are not used in databases whereas functions play an
important role in returning values from a database.
• Procedures are capable of returning multiple values and the functions are able to return limited values.
• DML operations can be used in stored procedures; however, they are not possible in functions.
• Functions can return only one value and it is mandatory whereas procedures can return n or zero values.
• In functions, error handling cannot be done whereas it can be performed in stored procedures.
• Input and output parameters can be passed in procedures whereas in case of functions; only input parameters can be
passed.
• Functions can be called from procedures whereas it is not possible to call a procedure from a function.
• Transaction management can be considered in procedures and it cannot be considered in case of functions.
67