Menu Management 
1. Odd / Even 
2. Leap Year 
3. Prime No. 
0. Exit 
Your Choice? 
20 
10
# include ”goto.c” 
main( ) 
clrscr( ) ; 
gotorc ( 10, 20 ) ; printf ( ”1. Odd / Even” ) ; 
gotorc ( 11, 20 ) ; printf ( ”2. Leap year” ) ; 
gotorc ( 12, 20 ) ; printf ( ”3. Prime number” ) ; 
gotorc ( 13, 20 ) ; printf ( ”0. Exit” ) ; 
gotorc ( 15, 20 ) ; printf ( ”Your choice?” ) ; 
scanf ( ”%d”, &choice ) ; 
.. 
.. 
} 
int choice ;
main( ) 
{ 
int choice ; 
/* display menu */ 
scanf ( ”%d”, &choice ) ; 
switch ( choice ) 
{ 
case 1 : 
/* odd / even logic */ 
break ; 
case 2 : 
/* leap year logic*/ 
break ; 
case 3 : 
/*prime number logic*/ 
break ; 
default : 
printf ( ”a” ) ; 
} 
} 
case 0 : 
break ; 
n t a 
Escape 
Sequences 
printf ( ”aaa” ) ; 
Long 
Beep
switch ( choice ) 
{ 
case 1 : 
break ; 
case 2 : 
break ; 
case 3 : 
break ; 
case 0 : 
break ; 
default : 
printf ( ”a” ) ; 
} 
Block Commands 
CH2PR3.C 
Odd / even 
logic 
CH2PR4.C 
Leap year 
logic 
Prime no. 
logic 
Ctrl KR 
Ctrl KR 
Ctrl KR 
CH2PR5.C
Other Block Commands 
Ctrl KB 
Ctrl KK 
Mark block 
Ctrl KV Move block 
Ctrl KC Copy block 
Ctrl KW Write block to file 
Ctrl KY Delete block 
Ctrl KH Hide or unmark block
Readjustments Necessary 
 case 1: 
main( ) 
{ 
… 
… 
} 
break ; 
Delete Delete 
 Shift declarations 
Only Shifting 
Won’t Do
No while, No Menu 
#include ”goto.c” 
main( ) 
{ 
while ( 1 ) 
{ 
/*display menu*/ 
scanf ( ”%d”, choice ) ; 
switch( choice ) 
{ 
case 1 : 
… 
break ; 
case 0 : 
break ; 
} 
} 
int choice ; 
} exit( ) ;
Requirements of A Menu 
 Infinite loop 
 switch
Surprised? 
main( ) 
{ 
float a = 0.7 ; 
if ( a  0.7 ) 
printf ( ”A” ) ; 
else 
printf ( ”B” ) ; 
} 
A
Appearances Are 
Misleading main( ) 
{ 
float a = 0.7 ; 
printf ( ”%d%d”, sizeof ( a ), sizeof ( 0.7 ) ); 
} 
365 0.7 
Integer Double 
4 8
Binary of A Float 
float a = 5.375 ; 
Binary of 5 Binary of .375 
101 .011 
Binary of 5.375 
101.011 
Normalised form 
1.01011 * 22 
.375 * 2 = 0.750 0 
.750 * 2 = 1.500 1 
.500 * 2 = 1.000 1
The Actual Storage 
Mantissa 
32 
0 1000 0001 01011000000000000000000 
Positive 
2 + 127 
. 01011 
1 8 23 
Sign 
Bit Biased 
Exponent
Difference In double 
Mantissa 
64 
1 11 52 
Bias value 
is 1023 
Sign 
Bit 
Biased 
Exponent
Binary of 0.7 
.7 * 2 = 1.4 1 
.4 * 2 = 0.8 0 
.8 * 2 = 1.6 1 
.6 * 2 = 1.2 1 
.2 * 2 = 0.4 0 
.4 * 2 = 0.8 0 
.8 * 2 = 1.6 1 
.6 * 2 = 1.2 1 
.2 * 2 = 0.4 0 
.4 * 2 = 0.8 0 
. . . . . . 
. . . . . .
32 - bit 
Recurring binary 
equivalent of 
0.7 
64 - bit 
Recurring binary 
equivalent of 
0.7 
 
float a = 0.7 ; 
if ( a  0.7 ) 
printf ( ”A” ) ; 
else 
printf ( ”B” ) ; 
A
Overriding Defaults 
336655 336655LL 
00..77 00..77ff 
if ( a  0.7f ) 
printf ( ”A” ) ; 
else 
printf ( ”B” ) ; 
B
Exact Binary 
main( ) 
{ 
float a = 5.375 ; 
if ( a  5.375 ) 
printf ( ”A” ) ; 
else 
printf ( ”B” ) ; 
} 
B
Functions 
main( ) 
{ 
Output: 
I am in main 
printf ( ”n I am in main” ) ; 
} 
bombay( ) 
{ 
printf ( ”n I am in Bombay” ) ; 
} 
kanpur( ) 
{ 
printf ( ”n I am in Kanpur” ) ; 
} 
Output: 
I am in main 
Functions 
main( ) 
printf( ) 
scanf( ) 
getch( ) 
exit( ) 
gotorc( ) 
clrscr( ) 
for( ) 
while( ) 
if( ) 
switch( )
Categories 
Functions 
Std. Library User-Defined 
printf( ) 
scanf( ) 
exit( ) 
clrscr( ) 
kanpur( ) 
bombay( ) 
gotorc( ) 
main( )
Calling Functions 
main( ) 
{ 
printf ( ”n I am in main” ) ; 
bombay( ) 
{ 
printf ( ”n I am in Bombay” ) ; 
} 
kanpur( ) 
{ 
printf ( ”n I am in Kanpur” ) ; 
} 
Output : 
I am in main 
I am in Bombay 
bombay( ) ; kanpur( ) ; I am in Kanpur 
} 
Function Call 
Function Def.
Tips 
 A C program is nothing but a collection 
of 1 or more functions 
 If C program contains 1 function its name 
must be main( ) 
 If C program contains more than 1 function 
then one of them has to be main( ) 
 Execution of any C program always begins 
with main( ) 
 Function names in a program must be unique
Order, Order ! 
bombay( ) 
{ 
printf ( ”n I am in Bombay” ) ; 
} 
main( ) 
{ 
printf ( ”I am in main” ) ; 
bombay( ) ; 
} 
Tip: Functions Tip: Functions ccaann bbee ddeeffiinneedd iinn aannyy oorrddeerr
More Calls, More Bills 
main( ) 
{ 
printf ( ”n I am in main” ) ; 
bombay( ) ; 
bombay( ) ; 
} 
bombay( ) 
{ 
printf ( ”n I am in Bombay” ) ; 
} 
Tip: Tip: MMoorree tthhee ccaallllss,, sslloowweerr tthhee eexxeeccuuttiioonn
Nobody is Nobody’s Boss 
main( ) 
{ 
kanpur( ) 
{ 
Tip: Any function can call 
any other function 
printf ( ”n I am in Kanpur” ) ; 
bombay( ) ; 
} 
printf ( ”n I am in main” ) ; 
bombay( ) ; kanpur( ) ; 
} 
bombay( ) 
{ 
printf ( ”n I am in Bombay” ) ; 
kanpur( ) ; 
} Tip: Any function can call 
any other function
Local v/s STD v/s ISD Calls 
main( ) 
{ 
printf ( ”n I am in main” ) ; 
main( ) ; 
} 
Local Call - Recursive Function 
Process - Recursion
111155 -- 112200 
CChhaapptteerr 44

Vcs8

  • 1.
    Menu Management 1.Odd / Even 2. Leap Year 3. Prime No. 0. Exit Your Choice? 20 10
  • 2.
    # include ”goto.c” main( ) clrscr( ) ; gotorc ( 10, 20 ) ; printf ( ”1. Odd / Even” ) ; gotorc ( 11, 20 ) ; printf ( ”2. Leap year” ) ; gotorc ( 12, 20 ) ; printf ( ”3. Prime number” ) ; gotorc ( 13, 20 ) ; printf ( ”0. Exit” ) ; gotorc ( 15, 20 ) ; printf ( ”Your choice?” ) ; scanf ( ”%d”, &choice ) ; .. .. } int choice ;
  • 3.
    main( ) { int choice ; /* display menu */ scanf ( ”%d”, &choice ) ; switch ( choice ) { case 1 : /* odd / even logic */ break ; case 2 : /* leap year logic*/ break ; case 3 : /*prime number logic*/ break ; default : printf ( ”a” ) ; } } case 0 : break ; n t a Escape Sequences printf ( ”aaa” ) ; Long Beep
  • 4.
    switch ( choice) { case 1 : break ; case 2 : break ; case 3 : break ; case 0 : break ; default : printf ( ”a” ) ; } Block Commands CH2PR3.C Odd / even logic CH2PR4.C Leap year logic Prime no. logic Ctrl KR Ctrl KR Ctrl KR CH2PR5.C
  • 5.
    Other Block Commands Ctrl KB Ctrl KK Mark block Ctrl KV Move block Ctrl KC Copy block Ctrl KW Write block to file Ctrl KY Delete block Ctrl KH Hide or unmark block
  • 6.
    Readjustments Necessary case 1: main( ) { … … } break ; Delete Delete Shift declarations Only Shifting Won’t Do
  • 7.
    No while, NoMenu #include ”goto.c” main( ) { while ( 1 ) { /*display menu*/ scanf ( ”%d”, choice ) ; switch( choice ) { case 1 : … break ; case 0 : break ; } } int choice ; } exit( ) ;
  • 8.
    Requirements of AMenu Infinite loop switch
  • 9.
    Surprised? main( ) { float a = 0.7 ; if ( a 0.7 ) printf ( ”A” ) ; else printf ( ”B” ) ; } A
  • 10.
    Appearances Are Misleadingmain( ) { float a = 0.7 ; printf ( ”%d%d”, sizeof ( a ), sizeof ( 0.7 ) ); } 365 0.7 Integer Double 4 8
  • 11.
    Binary of AFloat float a = 5.375 ; Binary of 5 Binary of .375 101 .011 Binary of 5.375 101.011 Normalised form 1.01011 * 22 .375 * 2 = 0.750 0 .750 * 2 = 1.500 1 .500 * 2 = 1.000 1
  • 12.
    The Actual Storage Mantissa 32 0 1000 0001 01011000000000000000000 Positive 2 + 127 . 01011 1 8 23 Sign Bit Biased Exponent
  • 13.
    Difference In double Mantissa 64 1 11 52 Bias value is 1023 Sign Bit Biased Exponent
  • 14.
    Binary of 0.7 .7 * 2 = 1.4 1 .4 * 2 = 0.8 0 .8 * 2 = 1.6 1 .6 * 2 = 1.2 1 .2 * 2 = 0.4 0 .4 * 2 = 0.8 0 .8 * 2 = 1.6 1 .6 * 2 = 1.2 1 .2 * 2 = 0.4 0 .4 * 2 = 0.8 0 . . . . . . . . . . . .
  • 15.
    32 - bit Recurring binary equivalent of 0.7 64 - bit Recurring binary equivalent of 0.7 float a = 0.7 ; if ( a 0.7 ) printf ( ”A” ) ; else printf ( ”B” ) ; A
  • 16.
    Overriding Defaults 336655336655LL 00..77 00..77ff if ( a 0.7f ) printf ( ”A” ) ; else printf ( ”B” ) ; B
  • 17.
    Exact Binary main() { float a = 5.375 ; if ( a 5.375 ) printf ( ”A” ) ; else printf ( ”B” ) ; } B
  • 18.
    Functions main( ) { Output: I am in main printf ( ”n I am in main” ) ; } bombay( ) { printf ( ”n I am in Bombay” ) ; } kanpur( ) { printf ( ”n I am in Kanpur” ) ; } Output: I am in main Functions main( ) printf( ) scanf( ) getch( ) exit( ) gotorc( ) clrscr( ) for( ) while( ) if( ) switch( )
  • 19.
    Categories Functions Std.Library User-Defined printf( ) scanf( ) exit( ) clrscr( ) kanpur( ) bombay( ) gotorc( ) main( )
  • 20.
    Calling Functions main() { printf ( ”n I am in main” ) ; bombay( ) { printf ( ”n I am in Bombay” ) ; } kanpur( ) { printf ( ”n I am in Kanpur” ) ; } Output : I am in main I am in Bombay bombay( ) ; kanpur( ) ; I am in Kanpur } Function Call Function Def.
  • 21.
    Tips AC program is nothing but a collection of 1 or more functions If C program contains 1 function its name must be main( ) If C program contains more than 1 function then one of them has to be main( ) Execution of any C program always begins with main( ) Function names in a program must be unique
  • 22.
    Order, Order ! bombay( ) { printf ( ”n I am in Bombay” ) ; } main( ) { printf ( ”I am in main” ) ; bombay( ) ; } Tip: Functions Tip: Functions ccaann bbee ddeeffiinneedd iinn aannyy oorrddeerr
  • 23.
    More Calls, MoreBills main( ) { printf ( ”n I am in main” ) ; bombay( ) ; bombay( ) ; } bombay( ) { printf ( ”n I am in Bombay” ) ; } Tip: Tip: MMoorree tthhee ccaallllss,, sslloowweerr tthhee eexxeeccuuttiioonn
  • 24.
    Nobody is Nobody’sBoss main( ) { kanpur( ) { Tip: Any function can call any other function printf ( ”n I am in Kanpur” ) ; bombay( ) ; } printf ( ”n I am in main” ) ; bombay( ) ; kanpur( ) ; } bombay( ) { printf ( ”n I am in Bombay” ) ; kanpur( ) ; } Tip: Any function can call any other function
  • 25.
    Local v/s STDv/s ISD Calls main( ) { printf ( ”n I am in main” ) ; main( ) ; } Local Call - Recursive Function Process - Recursion
  • 26.
    111155 -- 112200 CChhaapptteerr 44