0% found this document useful (0 votes)
5 views

UNIT I Notes

programming in c unit 1 notes

Uploaded by

psaranya
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

UNIT I Notes

programming in c unit 1 notes

Uploaded by

psaranya
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 26

UNIT I - BASICS OF C PROGRAMMING

Introduction to 'C' programming fundaments – Structure of 'C' program - compilation and linking processes
- Constants, Variables: Data Types, Expressions using Operators in 'C', Managing Input and Output
Operators, Decision Making and Branching, Looping statements, Solving Simple Scientific and Statistical
Problems.
INTRODUCTION TO C PROGRAMMING FUNDAMENTALS
C is a high-level language which also provides the capabilities that enable the programmers to ‘get in
close’with the hardware and allows them to interact with the computer on a much lower level.
a) C is a core language : In computing, C is a general purpose, cross-platform, block
structuredprocedural, imperative computer programming language.
b) C is a small language: C has only thirty-two keywords. This makes it relatively easy to learn
compared to bulkier languages.
c) C is quick: can write codes which run quickly, and the program can be very ‘close to the hardware’.
d) C is portable: C programs written on one system can be run with little or no modification on other
systems. If modifications are necessary, they can often be made by imply changing a few entries
in aheader fi le accompanying the main program.
DEVELOPING PROGRAMS IN C
There are mainly three steps:
1. Writing the C program
2. Compiling the program and
3. Executing it.
• For these steps, some software components are required, namely an operating system, a text
editor(integrated development environment), the C compiler, assembler, and linker.
• C uses a semicolon as a statement terminator; the semicolon is required as a signal to the
compiler to indicate that a statement is complete.
• All program instructions, which are also called statements, have to be written in lower case
characters.
A brief explanation of each of the processes involved in the compilation model is given as follows:
Writing or Editing the source program using a text editor or an IDE and saving it with .c extension.
Programming Environment Most programming language compilers come with a specifi c editor that
canprovide facilities for managing the programs. Such an editor offers a complete environment for
writing, developing, modifying, deploying, testing, and debugging the programs. Such software is
referred to as anintegrated development environment or IDE.
Preprocessing is the fi rst phase of the C compilation. It processes include-fi les, conditional
compilationinstructions and macros. preprocessor directive is a statement (such as #defi ne) that gives
the preprocessor specifi c instructions on how to modify your source code. The preprocessor
is invoked as the fi rst part of your compiler program’s compilation step. It is usually hidden from the
programmer because it is run automatically by the compiler.
Compilation is the second pass. It takes the output of the preprocessor, and the source code, and
generatesassembler source code.
Assembly is the third stage of compilation. It takes the assembly source code and produces an assembly
listing with offsets. The assembler output is stored in an object file.
Linking is the final stage of compilation. After the program has been translated into object code, it is
readyto be linked. The purpose of the linking phase is to get the program into a final form for execution
on the
computer. The program may use other source programs that were previously processed by the
compiler.
These functions are stored as separate object fi les which must be
linked to our object fi le. There are three types of errors that may
occur:
a) Compile errors These are given by the compiler and prevent the program from not running.
b) Linking errors These are given by the linker or at runtime and ends the program. The linker can
also detect and report errors, for example, if part of the program is missing or a non-existent library
component is referenced.
c) Runtime errors These are given by the operating system. Removing errors from a program is called
debugging.
A SIMPLE C PROGRAM
/* A Simple C
Program */#include
<stdio.h>
int main(void)
{
printf(“C is
Sea\n”);return 0;
}
A comment
line
/* A Simple C Program */
This is a comment line.In C, the comments can be included in the program. The comment lines start
with
/* and terminate with */. These statements can be put anywhere in the program. The compiler
considersthese as non-executable statements.

Preprocessor
In C, all lines that begin with # are directives for the preprocessor, which means that all these directives
will be processed before the program is actually compiled. The #include directive includes the contents
ofa fi le during compilation. In this case, the fi le stdio.h is added in the source program before the
actual compilation begins. stdio.h is a header fi le that comes with the C compiler and contains
information aboutinput and output functions
e.g. printf()
(a) they must begin in the fi rst column and no spaces are allowed between ‘#’ and include and
(b) theyare not terminated by a semicolon.
main()
This is the starting point of the program. A C program may contain one or more functions one
of which must be main(). Functions are the building blocks of a C program. For now the functions
may be recognized by the presence of parentheses after their names.
{}
This is a brace. As the name implies, braces come in packs of two, i.e. for every open brace
there must be a matching close. Braces allow me to lump pieces of program together. Such a lump of
programis often called a block. Such a block of program instructions, within these braces, form the
body of thefunction main().
printf(“C is Sea\n”);
printf() is a ‘library function’ The \n (pronounced backslash n) in the string argument of the
function printf() “C is Sea\n” is an example of an escape sequence. It is used to print the new line
character. If the program is executed, the \n does not appear in the output. Each \n in the string
argumentof a printf() causes the cursor to be placed at the beginning of the next line of output. Think
of an escapesequence as a ‘substitute character’ for outputting special characters or some positional
action on the printing point, known as cursor, when the output device is a visual diaplay unit.
return 0;
This statement indicates that the value returned by the function main(), after the program
instructions in its body
void - It indicates no value.
int – indicates integer datatype

ILLUSTRATED VERSION OF A PROGRAM


BACKSLASH CODE

Summary of major points:


• program execution begins at main()
• keywords are written in lower-case
• statements are terminated with a semi-colon
• text strings are enclosed in double quotes
• C is case sensitive, use lower-case and try not to capitalise variable names
• \n means position the cursor on the beginning of the next line
• printf() can be used to display text to the screen
• The curly braces {} define the beginning and end of a program block.
BASIC STRUCTURE OF C PROGRAMS
C programs are essentially constructed in the following manner, as a number of well defined sections.
/* HEADER SECTION */
/* Contains name, author, revision number*/
/* INCLUDE SECTION */
/* contains #include statements */
/* CONSTANTS AND TYPES SECTION */
/* contains types and #defines */
/* GLOBAL VARIABLES SECTION */
/* any global variables declared here */
/* FUNCTIONS SECTION */
/* user defined functions */
/* main() SECTION */int main()
{
}
Header File
• The header files, usually incorporate data types, function declarations and macros, resolves
this issue. The file with .h extension is called header file, because it’s usually included at the
head of aprogram.
• Every C compiler that conforms to the international standard (ISO/IEC 9899) for the language
willhave a set of standard header files supplied with it.
• The header files primarily contain declarations relating to standard library functions and macros
that are available with C.
STANDARD HEADER FILES
• During compilation, the compilers perform type checking to ensure that the calls to the library
and

other user-defined functions are correct. This form of checking helps to ensure the semantic
correctness of the program.

PHILOSOPHY : MAIN
• main() is a user defined function. main() is the first function in the program which gets called
whenthe program executes. The start up code c calls main() function. We can’t change the
name of the main() function.
• main() is must.
• According to ANSI/ISO/IEC 9899:1990 International Standard for C, the function called at
programstart up is named main. The implementation declares no prototype for this function. It
can be defined with no parameters:
int main(void) { /* ... */ }
• or with two parameters (referred to here as argc and argv) :
• int main(int argc, char *argv[ ]) { /* ... */ }
STRUCTURE : C PROGRAM

DECLARATION & DEFINITION


• Declaration means describing the type of a data object to the compiler but not allocating any
space for it.
 A declaration announces the properties of a data object or a function. If a variable or
function is declared and then later make reference to it with data objects that do not
matchthe types in the declaration, the compiler will complain.
 data_type variable_name_1,
• Definition means declaration of a data object and also allocating space to hold the data object.
 A definition, on the other hand, actually sets aside storage space (in the case of a data
object) or indicates the sequence of statements to be carried out (in the case of a
function).
VARIABLES:ATTRIBUTES
• All variables have three important attributes:
 A data type that is established when the variable is defined, e.g., integer, real,
character. Once defined , the type of a C variable cannot be changed.
 A name of the variable.
 A value that can be changed by assigning a new value to the variable. The kind of values a
variable can assume depends on its type. For example, an integer variable can only take
integer values, e.g., 2, 100, –12.
DATA TYPES
The four basic data types are
1. INTEGER

These are whole numbers, both positive and negative. Unsigned integers (positive values only)
are supported. In addition, there are short and long integers.
The keyword used to define integers is,
int
An example of an integer value is 32. An example of declaring an integer variable called sum is,
int sum;
sum = 20;
2. FLOATING POINT
These are numbers which contain fractional parts, both positive and negative. The keyword used to
define float variables is,
float
An example of a float value is 34.12. An example of declaring a float variable called money is,
float money;
money =0.12;
3. DOUBLE
These are exponetional numbers, both positive and negative. The keyword used to define double
variables is,
double
An example of a double value is 3.0E2. An example of declaring a double variable called big is,
double big;
big =312E+7;
4. CHARACTER
These are single characters. The keyword used to define character variables is,
char
An example of a character value is the letter A. An example of declaring a character
variable called letter is,
char letter;
letter= 'A';
Note: the assignment of the character A to the variable letter is done by enclosing the
value in single quotes. Remember the golden rule: Single character - Use single quotes.
Sample program illustrating each data type
Example:
#include < stdio.h >
main()
{
int sum;
float money;
char letter;
double pi;
sum = 10; /* assign integer value */
money = 2.21; /* assign float value */
letter = 'A'; /* assign character value */
pi = 2.01E6; /* assign a double value */
printf("value of sum = %d\n", sum );
printf("value of money = %f\n", money);
printf("value of letter = %c\n", letter);
printf("value of pi = %e\n", pi );
}
Sample program output
value of sum = 10
value of money =2.210000
value of letter =A
value of pi = 2.010000e+06
TYPE CONVERSION
Though the C compiler performs automatic type conversions, the programmer should be aware of
what is going on so as to understand how C evaluates expressions.
 When a C expression is evaluated, the resulting value has a particular data type. If all the
variables in the expression are of the same type, the resulting type is of the same type as well.
For example, if x and y are both of int type , the expression x +y is of int type as well.
 The smallest to the largest data types conversion with respect to size is along the arrow as
shown below:

OPERATORS AND EXPRESSIONS


An ex pression is a sequence of operators and operands that specifies computation of a value, or that
designates an object or a function, or that generates side effects, or that performs a combination thereof.
ARITHMETIC OPERATORS:
The symbols of the arithmetic operators are

Operation Operator Comment Value of Sum before Value of sum after


Multiply * sum = sum * 2; 4 8
Divide / sum = sum / 2; 4 2
Addition + sum = sum + 2; 4 6
Subtraction - sum = sum -2; 4 2
Increment ++ ++sum; 4 5
Decrement -- --sum; 4 3
Modulus % sum = sum % 3; 4 1
OPERATOR PRECEDENCE:
It dictates the order of evaluation of operators in an expression.
ASSOCIATIVITY:
It defines the order in which operators of the same precedence are evaluated in an expression.
Associativity can be either from left to right or right to left.
OPERATOR PRECEDENCE ASSOCIATIVITY
Function call
Array subscripting
Structure and union member access
Structure and union member access through
pointer
Compound literal
() [] -> . ++ - - Suffix/postfix increment and decrement Left to right
+ - ! ~ (type)* & sizeof Unary operator Right to left
*/ % Multiplication/division/modulus left-to-right
+ – Addition/subtraction left-to-right
<< >> Bitwise shift left, Bitwise shift right left-to-right
< <= Relational less than/less than or equal to
> >= Relational greater than/greater than or equal to left-to-right
Example:
#include <stdio.h>
main()
{
int sum = 50;
float modulus;
modulus = sum % 10;
printf("The %% of %d by 10 is %f\n", sum, modulus);
}
PRE/POST INCREMENT/DECREMENT OPERATORS
PRE means do the operation first followed by any assignment operation. POST means do the operation
after any assignment operation. Consider the following statements
++count; /* PRE Increment, means add one to count */
count++; /* POST Increment, means add one to count */
Example:
#include <stdio.h>
main()
{
int count = 0, loop;
loop = ++count; /* same as count = count + 1; loop =
count; */ printf("loop = %d, count = %d\n", loop, count);
loop = count++; /* same as loop = count; count = count
+ 1; */ printf("loop = %d, count = %d\n", loop, count);
}
If the operator precedes (is on the left hand side) of the variable, the operation is performed first, so the
statement
loop = ++count;
really means increment count first, then assign the new value of count to loop.
THE RELATIONAL OPERATORS
These allow the comparison of two or more variables.
==equal to
!=not equal
< less than
<= less than or equal to
>greater than
>= greater than or equal to
Example:
#include <stdio.h>
main() /* Program introduces the for statement, counts to ten */
{
int count;
for( count = 1; count <= 10; count = count + 1 )
printf("%d ", count );
printf("\n");

}
RELATIONALS (AND, NOT, OR, EOR)
Combining more than one condition
These allow the testing of more than one condition as part of selection statements. The symbols
are
LOGICAL AND &&
Logical and requires all conditions to evaluate as TRUE (non-zero).
LOGICAL OR ||
Logical or will be executed if any ONE of the conditions is TRUE (non-zero).
LOGICAL NOT !
logical not negates (changes from TRUE to FALSE, vsvs) a condition.
LOGICAL EOR ^
Logical eor will be excuted if either condition is TRUE, but NOT if they are all true.
Example:
The following program uses an if statement with logical AND to validate the users input to be in
the range 1-10.
#include <stdio.h>
main()
{
int number; int
valid = 0;
while( valid == 0 ) {
printf("Enter a number between 1 and 10 -->");
scanf("%d", &number);
if( (number < 1 ) || (number > 10) ){
printf("Number is outside range 1-10. Please re-enter\n");
valid = 0;
}
else
valid = 1;

}
printf("The number is %d\n", number );
}
Example:
NEGATION

#include <stdio.h>
main()
{ int flag = 0;
if( ! flag ) {
printf("The flag is not set.\n");
flag = ! flag;
}
printf("The value of flag is %d\n", flag);

}
Example:

Consider where a value is to be inputted from the user, and checked for validity to be within a
certain range, lets say between the integer values 1 and 100.
#include <stdio.h>
main()
{
int number;
int valid = 0;
while( valid == 0 ) {
printf("Enter a number between 1 and 100");
scanf("%d", &number );
if( (number < 1) || (number > 100) ) printf("Number
is outside legal range\n");
else
valid = 1;
}
printf("Number is %d\n", number );
}
THE CONDITIONAL EXPRESSION OPERATOR or TERNARY OPERATOR
This conditional expression operator takes THREE operators. The two symbols used to denote
this operator are
the ? and the :. The first operand is placed before the ?, the second operand between the ? and the
:, and the third after the :. The general format is,
condition ? expression1 : expression2
If the result of condition is TRUE ( non-zero ), expression1 is evaluated and the result of the

evaluation becomes the result of the operation. If the condition is FALSE (zero), then expression2
is evaluated and its result becomes the result of the operation. An example will help,

s = ( x < 0 ) ? -1 : x * x;

If x is less than zero then s = -1


If x is greater than zero then s = x * x
Example:
#include <stdio.h>
main()
{
int input;
printf("I will tell you if the number is positive, negative or zero!"\n");
printf("please enter your number now--->");
scanf("%d", &input );
(input < 0) ? printf("negative\n") : ((input > 0) ? printf("positive\n") :printf("zero\n"));
}
BIT OPERATIONS
C has the advantage of direct bit manipulation and the operations available are,
Operato Value of Sum Value of sum
Operation r Comment before after
sum = sum &
AND & 2; 4 0
OR | sum = sum | 2; 4 6
Exclusive OR ^ sum = sum ^ 2; 4 6
1's
Complement ~ sum = ~sum; 4 -5
sum = sum <<
Left Shift << 2; 4 16
sum = sum >>
Right Shift >> 2; 4 0
Example:
/* Example program illustrating << and >> */
#include <stdio.h>
main()

{
int n1 = 10, n2 = 20, i = 0;
i = n2 << 4; /* n2 shifted left four times */printf("%d\n", i);
i = n1 >> 5; // n1 shifted right five times
printf("%d\n", i);
}

Example:
/* Example program using EOR operator */
#include <stdio.h>
main()
{
int value1 = 2, value2 = 4;
value1 ^= value2;
value2 ^= value1;
value1 ^= value2;
printf("Value1 = %d, Value2 = %d\n", value1, value2);
}
Example:
/* Example program using AND operator */
#include <stdio.h>
main()
{
int loop;

for( loop = 'A'; loop <= 'Z'; loop++ )


printf("Loop = %c, AND 0xdf = %c\n", loop, loop & 0xdf);
}
MANAGING INPUT AND OUTPUT OPERATORS
FORMATTED INPUT/OUTPUT
Printf ():
printf() is actually a function (procedure) in C that is used for printing variables and text. Where
text appears in double quotes "", it is printed without modification. There are some exceptions
however. This has to do with the \ and % characters. These characters are modifier's, and for the
present the \ followed by the n character represents a newline character.

#include <stdio.h>
main()
{
printf("Programming in C is easy.\n");
printf("And so is Pascal.\n");
}
OUTPUT:
Programming in C is easy.
And so is Pascal.
FORMATTERS for printf are, Cursor Control
Formatters
\n newline
\t tab
\r carriage return
\f form feed
\v vertical tab
Scanf ():
Scanf () is a function in C which allows the programmer to accept input from a keyboard.
Example:
#include <stdio.h>
main() /* program which introduces keyboard input */
{
int number;
printf("Type in a number \n");
scanf("%d", &number);
printf("The number you typed was %d\n", number);
}

FORMATTERS FOR scanf()


The following characters, after the % character, in a scanf argument, have the following effect.
d read a decimal integer
o read an octal value
x read a hexadecimal value
h read a short integer
l read a long integer
f read a float value
e read a double value
c read a single character
s read a sequence of characters
[...] Read a character string. The characters inside the brackets
UNFORMATTED INPUT/OUTPUT

Functions Description
Reads a single character from the user at the
getch()
console, without echoing it.
Reads a single character from the user at the console, and
getche()
echoing it.
Reads a single character from the user at the console, and
getchar()
echoing it, but needs an Enter key to be pressed at the end.
gets() Reads a single string entered by the user at the console.
puts() Displays a single string's value at the console.
putch() Displays a single character value at the console.
putchar() Displays a single character value at the console.

DECISION MAKING
IF STATEMENTS
The if statements allows branching (decision making) depending upon the value or state of
variables. This allows statements to be executed or skipped, depending upon decisions. The
basic format is,
Syntax
if( expression ) program
statement;
Example
if( students < 65 )
++student_count;
In the above example, the variable student_count is incremented by one only if the value of the
integer variable students is less than 65.
The following program uses an if statement to validate the users input to be in the range 1-10.
Example:
#include <stdio.h>
main()
{
while( valid == 0 ) {
printf("Enter a number between 1 and 10 -->");scanf("%d", &number);
/* assume number is valid */ valid = 1;
if( number < 1 ) {
printf("Number is below 1. Please re-enter\n"); valid = 0;
}
if( number > 10 ) {
printf("Number is above 10. Please re-enter\n"); valid = 0;
}
}
printf("The number is %d\n", number );
}
IF ELSE
The general format for these are,
Syntax:
if( condition 1 ) statement1;
else if( condition 2 ) statement2;
else if( condition 3 ) statement3;
else statement4;
The else clause allows action to be taken where the condition evaluates as false (zero).
The following program uses an if else statement to validate the users input to be in the range 1-10.
Example:
#include <stdio.h>
main(){
int number; int valid =0;
while( valid == 0 ) {
printf("Enter a number between 1 and 10 -->");
scanf("%d",&number);
if( number < 1 ) {
printf("Number is below 1. Please re-enter\n"); valid = 0;
}
else if( number > 10 ) {
printf("Number is above 10. Please re-enter\n");
valid = 0;
}
else
valid = 1;
}
printf("The number is %d\n", number );
}

This program is slightly different from the previous example in that an else clause is used to setthe variable
valid to 1. In this program, the logic should be easier to follow.
NESTED IF ELSE
/* Illustates nested if else and multiple arguments to the scanf function. */
Example:
#include <stdio.h>
main(){
int invalid_operator = 0;char
operator;
float number1, number2, result;
printf("Enter two numbers and an operator in the format\n");
printf(" number1 operator number2\n");
scanf("%f %c %f", &number1, &operator, &number2);
if(operator == '*')
result = number1 * number2;else
if(operator == '/')
result = number1 / number2;else
if(operator == '+')
result = number1 + number2;else if
( operator == ' -' )
result = number1 - number2 ;else
invalid_operator = 1;
if( invalid_operator != 1 )
printf("%f %c %f is %f\n", number1, operator, number2, result );
else
printf("Invalid operator.\n");
}

SWITCH CASE:
The switch case statement is a better way of writing a program when a series of if elses occurs.The
general format for this is,
Syntax

switch ( expression ) {
case value1:
program statement;
program statement;
......
break;
case valuen:
program statement;
.......
break;
default:
.......
.......
}

The keyword break must be included at the end of each case statement. The default clause is
optional, and is executed if the cases are not met. The right brace at the end signifies theend of
the case selections.
Example:
main()
{
int menu, numb1, numb2, total;
printf("enter in two numbers -->");
scanf("%d %d", &numb1, &numb2 );
printf("enter in choice\n");
printf("1=addition\n");
printf("2=subtraction\n"); scanf("%d",&menu );
switch( menu ) {
case 1: total = numb1 + numb2; break; case 2:
total = numb1 - numb2; break; default:
printf("Invalid option selected\n");
}
if( menu == 1 )
printf("%d plus %d is %d\n", numb1,numb2,total );else
if( menu == 2 )
printf("%d minus %d is %d\n", numb1, numb2, total );
}

The above program uses a switch statement to validate and select upon the users input choice,simulating a simple
menu of choices.
BRANCHING AND LOOPING

ITERATION, FOR LOOPS


The basic format of the for statement is,
Syntax
for( start condition; continue condition; re-evaulation)
program statement;
Example:
/* sample program using a for statement
*/ #include <stdio.h>
main() /* Program introduces the for statement, counts to ten */
{
int count;
for( count = 1; count <= 10; count = count + 1)
printf("%d ", count );
printf("\n");
}

The program declares an integer variable count. The first part of the for statement
for( count = 1;
initialises the value of count to 1. The for loop continues whilst the condition
count <= 10;
evaluates as TRUE. As the variable count has just been initialised to 1, this
condition is TRUE and so the program statement
printf("%d ", count );
is executed, which prints the value of count to the screen, followed by a space character.
Next, the remaining statement of the for is executed
count = count + 1 );
which adds one to the current value of count. Control now passes back to the conditionaltest,
count <= 10;
which evaluates as true, so the program statement
printf("%d ", count );
is executed. Count is incremented again, the condition re-evaluated etc, until count reaches a
value of 11.
When this occurs, the conditional test
count <= 10
evaluates as FALSE, and the for loop terminates, and program control passes to the statement
printf("\n");
which prints a newline, and then the program terminates, as there are no more statements left toexecute.
THE WHILE STATEMENT
The while provides a mechanism for repeating C statements whilst a condition is true. Its format is,
Syntax:

while( condition )
program statement;

Somewhere within the body of the while loop a statement must alter the value of the conditionto
allow the loop to finish.
Example:
/* Sample program including while */
#include <stdio.h>
main()
{
int loop = 0;
while( loop <= 10 ) {
printf("%d\n", loop);
++loop;
}
}
The above program uses a while loop to repeat the statements
printf("%d\n", loop);
++loop;
whilst the value of the variable loop is less than or equal to 10.
Note how the variable upon which the while is dependant is initialised prior to the while statement (in this
case the previous line), and also that the value of the variable is altered within the loop, so that eventually the
conditional test will succeed and the while loop will terminate.
This program is functionally equivalent to the earlier for program which counted to ten
THE DO WHILE STATEMENT
The do { } while statement allows a loop to continue whilst a condition evaluates as TRUE (non-zero).
The loop is executed as least once.
Syntax:
while( condition )
program statement;
Example:
/* Demonstration of DO...WHILE */
#include <stdio.h>
main(){
int value, r_digit;
printf("Enter the number to be reversed.\n");
scanf("%d", &value);
do {
r_digit = value % 10;
printf("%d", r_digit); value
= value / 10;
} while( value != 0 );
printf("\n");
}
The above program reverses a number that is entered by the user. It does this by using the modulus
% operator to extract the right most digit into the variable r_digit. The original number is thendivided by
10, and the operation repeated whilst the number is not equal to 0.

You might also like