unit2_c
unit2_c
Chapter 2 Marks 10
Basics of C Programming
Introduction to C
C is a programming language developed at AT & T’s Bell Laboratories of USA in 1972. It was
designed and written by a man named Dennis Ritchie. In the late seventies C began to
replace the more familiar languages of that time like PL/I, ALGOL, etc
Characteristics of C:
We briefly list some of C's characteristics that define the language and also have lead to its
popularity as a programming language. Naturally we will be studying many of these aspects
throughout the course.
• Small size
• Extensive use of function calls
• Loose typing
• Structured language
• Low level (Bitwise) programming readily available
• Pointer implementation - extensive use of pointers for memory, array, structures and
functions.
C has now become a widely used professional language for various reasons.
• It has high-level constructs.
• It can handle low-level activities.
• It produces efficient programs.
• It can be compiled on a wide variety of computers.
Program
There is a close analogy between learning English language and learning C language. The
classical method of learning English is to first learn the alphabets used in the language, then
learn to combine these alphabets to form words, which in turn are combined to form
sentences and sentences are combined to form paragraphs. Learning C is similar and easier.
Instead of straight-away learning how to write programs, we must first know what
alphabets, numbers and special symbols are used in C, then how using them constants,
variables and keywords are constructed, and finally how are these combined to form an
instruction. A group of instructions would be combined later on to form a program.
In the example (1) above, the <> tells the preprocessor to search for the included file in a
special known \include directory or directories.
In the example (2), the double quotes (“ ”) indicate that the current directory should be
checked for the header file first. If it is not found, the special directory (or directories)
should be checked.
The example (3) is similar, but the named relative directory \mine\include is checked for the
header file mylib.h.
Relative paths can also be proceeded by the .\ or ..\ notation; absolute paths always begin
with a \.
# defines:
ANSI C allows you to declare constants. The # define directive is used to tell the
preprocessor to perform a search-and-replace operation.
Example:
# define Pi 3.14159
# define Tax-rate 0.0735
In the example above, the preprocessor will search through the source file and replace
every instance of the token Pi with 3.14159
After performing the search and replace operation, the preprocessor removes the # define
line.
User-written functions:
Divide the application into logical procedural units and factor out commonly used code to
eliminate repetition.
The alphabets, numbers and special symbols when properly combined form constants,
variables and keywords.
Identifiers
Identifiers are user defined word used to name of entities like variables, arrays, functions,
structures etc. Rules for naming identifiers are:
1) name should only consists of alphabets (both upper and lower case), digits
and underscore (_) sign.
2) first characters should be alphabet or underscore
3) name should not be a keyword
4) since C is a case sensitive, the upper case and lower case considered
differently, for example code, Code, CODE etc. are different identifiers.
5) identifiers are generally given in some meaningful name such as value, net_salary, age,
data etc. An identifier name may be long, some implementation recognizes only first eight
characters, most recognize 31 characters. ANSI standard compiler recognize 31 characters.
Some invalid identifiers are 5cb, int, res#, avg no etc.
Keyword
There are certain words reserved for doing specific task, these words are known as reserved
word or keywords. These words are predefined and always written in lower case or small
letter. These keywords cann’t be used as a variable name as it assigned with fixed meaning.
Some examples are int, short, signed, unsigned, default, volatile, float, long, double,
break, continue, typedef, static, do, for, union, return, while, do, extern, register, enum,
case, goto, struct, char, auto, const etc.
Data types
Data types refer to an extensive system used for declaring variables or functions of different
types before its use. The type of a variable determines how much space it occupies in
storage and how the bit pattern stored is interpreted. The value of a variable can be
changed any time.
A variable declared to be of type int can be used to contain integral values only—that is,
values that do not contain decimal places. A variable declared to be of type float can be
used for storing floating- point numbers (values containing decimal places). The double type
is the same as type float, only with roughly twice the precision. The char data type can be
used to store a single character, such as the letter a, the digit character 6, or a semicolon
similarly A variable declared char can only store character type value.
There are two types of type qualifier in c
Size qualifier: short, long
Sign qualifier: signed, unsigned
When the qualifier unsigned is used the number is always positive, and when signed is used
number may be positive or negative. If the sign qualifier is not mentioned, then by default
sign qualifier is assumed. The range of values for signed data types is less than that of
unsigned data type. Because in signed type, the left most bit is used to represent sign, while
in unsigned type this bit is also used to represent the value. The size and range of the
different data types on a 16 bit machine is given below:
Constants
Constant is a any value that cannot be changed during program execution. In C, any
number, single character, or character string is known as a constant. A constant is an entity
that doesn’t change whereas a variable is an entity that may change.
For example, the number 50 represents a constant integer value. The character string
"Programming in C is fun.\n" is an example of a constant character string. C constants can
be divided into two major categories:
Primary Constants
Secondary Constants
These constants are further categorized as
Numeric constant: Numeric constant consists of digits. It required minimum size of 2 bytes
and max 4 bytes. It may be positive or negative but by default sign is always positive. No
comma or space is allowed within the numeric constant and it must have at least 1 digit.
The allowable range for integer constants is -32768 to 32767. Truly speaking the range of an
Integer constant depends upon the compiler.
For a 16-bit compiler like Turbo C or Turbo C++ the range is –32768 to 32767.
For a 32-bit compiler the range would be even greater. Mean by a 16-bit or a 32- bit
compiler, what range of an Integer constant has to do with the type of compiler.
It is categorized a integer constant and real constant. An integer constants are whole
number which have no decimal point. Types of integer constants are:
Decimal constant: 0-------9(base 10)
Octal constant: 0-------7(base 8)
Hexa decimal constant: 0----9, A------F(base 16)
In decimal constant first digit should not be zero unlike octal constant first digit must be
zero(as 076, 0127) and in hexadecimal constant first two digit should be 0x/ 0X (such as
0x24, 0x87A). By default type of integer constant is integer but if the value of integer
constant is exceeds range then value represented by integer type is taken to be unsigned
integer or long integer. It can also be explicitly mention integer and unsigned integer type by
suffix l/L and u/U.
Real constant is also called floating point constant. To construct real constant we must
follow the rule of ,
-real constant must have at least one digit.
-It must have a decimal point.
-It could be either positive or negative.
-Default sign is positive.
-No commas or blanks are allowed within a real constant. Ex.: +325.34
426.0
-32.76
Character constant
Character constant represented as a single character enclosed within a single quote. These
can be single digit, single special symbol or white spaces such as ‘9’,’c’,’$’, ‘ ’ etc. Every
character constant has a unique integer like value in machine’s character code as if machine
using ASCII (American standard code for information interchange). Some numeric value
associated with each upper and lower case alphabets and decimal integers are as:
A------------ Z ASCII value (65-90)
a-------------z ASCII value (97-122)
0-------------9 ASCII value (48-59)
; ASCII value (59)
String constant
Set of characters are called string and when sequence of characters are enclosed within a
double quote (it may be combination of all kind of symbols) is a string constant. String
constant has zero, one or more than one character and at the end of the string null
character(\0) is automatically placed by compiler. Some examples are “,sarathina” , “908”,
“3”,” ”, “A” etc. In C although same characters are enclosed within single and double quotes
it represents different meaning such as “A” and ‘A’ are different because first one is string
attached with null character at the end but second one is character constant with its
corresponding ASCII value is 65.
Symbolic constant
Symbolic constant is a name that substitute for a sequence of characters and, characters
may be numeric, character or string constant. These constant are generally defined at the
beginning of the program as #define name value , here name generally written in upper
case for example
#define MAX 10
#define CH ‘b’
#define NAME “sony”
Variables
Variable is a data name which is used to store some data value or symbolic names for
storing program computations and results. The value of the variable can be change during
the execution. The rule for naming the variables is same as the naming identifier.
Before used in the program it must be declared. Declaration of variables specify its name,
data types and range of the value that variables can store depends upon its data types.
Syntax:
int a;
char c;
float f;
Variable initialization
When we assign any initial value to variable during the declaration, is called initialization of
variables. When variable is declared but contain undefined value then it is called garbage
value. The variable is initialized with the assignment operator such as
Data type variable name=constant;
Example: int a=20;
Or int a;
a=20;
Expressions
An expression is a combination of variables, constants, operators and function call. It can be
arithmetic, logical and relational for example:-
int z= x+y // arithmatic expression
a>b //relational
a==b // logical
func(a, b) // function call
Operator
This is a symbol use to perform some operation on variables, operands or with the constant.
Some operator required 2 operands to perform operation or some required single
operation. Several operators are there those are, arithmetic operator, assignment,
increment, decrement, logical, conditional, comma, size of, bitwise and others.
1. Arithmetic Operator
This operator used for numeric calculation. These are of either Unary arithmetic operator,
Binary arithmetic operator. Where Unary arithmetic operator required only one operand
such as +,-, ++, --,!, tiled. And these operators are addition, subtraction, multiplication,
division. Binary arithmetic operator on other hand required two operand and its operators
are +(addition), -(subtraction), *(multiplication), /(division), %(modulus). But modulus
cannot applied with floating point operand as well as there are no exponent operator in c.
Unary (+) and Unary (-) is different from addition and subtraction.
When both the operands are integer then it is called integer arithmetic and the result is
always integer. When both the operand are floating point then it is called floating arithmetic
and when operand is of integer and floating point then it is called mix type or mixed mode
arithmetic . And the result is in float type.
2. Assignment Operator
A value can be stored in a variable with the use of assignment operator. The assignment
operator(=) is used in assignment statement and assignment expression. Operand on the
left hand side should be variable and the operand on the right hand side should be variable
or constant or any expression. When variable on the left hand side is occur on the right
hand side then we can avoid by writing the compound statement. For example,
int x= y;
int Sum=x+y+z;
It again categories into prefix post fix . In the prefix the value of the variable is incremented
1st, then the new value is used, where as in postfix the operator is written after the operand
(such as m++,m--).
EXAMPLE
let y=12;
z= ++y;
y= y+1;
z= y;
Similarly in the postfix increment and decrement operator is used in the operation. And
then increment and decrement is performed.
EXAMPLE
x= 5;
y= x++;
y=x;
x= x+1;
4. Relational Operator
It is use to compared value of two expressions depending on their relation. Expression that
contain relational operator is called relational expression.
Here the value is assign according to true or false value.
a.(a>=b) || (b>20)
b.(b>a) && (e>b)
c. 0(b!=7)
5. Conditional Operator
It sometimes called as ternary operator. Since it required three expressions as operand and
it is represented as (? , :).
SYNTAX
exp1 ? exp2 :exp3
Here exp1 is first evaluated. It is true then value return will be exp2 . If false then
exp3.
EXAMPLE
void main()
{
int a=10, b=2
int s= (a>b) ? a:b;
printf(“value is:%d”);
}
Output:
Value is:10
6. Comma Operator
Comma operator is use to permit different expression to be appear in a situation where only
one expression would be used. All the expressions are separator by comma and are
evaluated from left to right.
EXAMPLE
int i, j, k, l;
for(i=1,j=2;i<=5;j<=10;i++;j++)
7. Sizeof Operator
Size of operator is a Unary operator, which gives size of operand in terms of byte that
occupied in the memory. An operand may be variable, constant or data type qualifier.
Generally it is used make portable program (program that can be run on different machine).
It determines the length of entities, arrays and structures when their sizes are not known to
the programmer. It is also use to allocate size of memory dynamically during execution of
the program.
EXAMPLE
main( )
{
int sum;
float f;
printf( "%d%d" ,size of(f), size of (sum) );
printf("%d%d", size of(235 L), size of(A));
}
8. Bitwise Operator
Bitwise operator permit programmer to access and manipulate of data at bit level.
Various bitwise operator enlisted are
one's complement (~)
bitwise AND (&)
bitwise OR (|)
bitwise XOR (^)
left shift (<<)
right shift (>>)
These operator can operate on integer and character value but not on float and double. In
bitwise operator the function showbits( ) function is used to display the binary
representation of any integer or character value.
In one's complement all 0 changes to 1 and all 1 changes to 0. In the bitwise OR its value
would obtaining by 0 to 2 bits. As the bitwise OR operator is used to set on a particular bit in
a number. Bitwise AND the logical AND.
It operates on 2operands and operands are compared on bit by bit basic. And hence both
the operands are of same type.
Logical or Boolean Operator
Operator used with one or more operand and return either value zero (for false) or one (for
true). The operand may be constant, variables or expressions. And the expression that
combines two or more expressions is termed as logical expression.
C has three logical operators:
Operator Meaning
&& AND
|| OR
! NOT
Where logical NOT is a unary operator and other two are binary operator. Logical AND gives
result true if both the conditions are true, otherwise result is false. And logical OR gives
result false if both the condition false, otherwise result is true.
scanf()
The scanf() method, in C, reads the value from the console as per the type specified.
printf()
The printf() method, in C, prints the value passed as the parameter to it, on the console
screen.
Float:
Input: scanf("%f", &floatVariable);
Output: printf("%f", floatVariable);
Character:
Input: scanf("%c", &charVariable);
Output: printf("%c", charVariable);
// C program to show input and output
#include <stdio.h>
int main()
{
// Declare the variables
int num;
char ch;
float f;
// --- Integer ---
// Input the integer
printf("Enter the integer: ");
scanf("%d", &num);
return 0;
}
Output:
Enter the integer: 10
Entered integer is: 10
Comments in C
A well-documented program is a good practice as a programmer. It makes a program more
readable and error finding become easier. One important part of good documentation is
Comments.
Multi-line comment
Represented as /* any_text */ start with forward slash and asterisk (/*) and end with
asterisk and forward slash (*/).
It is used to denote multi-line comment. It can apply comment to more than a single line.
It is referred to as C-Style comment as it was introduced in C programming.
/*Comment starts
continues
continues
.
.
.
Comment ends*/