Friday, 24 February 2012

Graphics in C


Graphics mode Initialization
initgraph() function is used to load the graphics drivers and initialize the graphics system. For every function, that uses graphics mode, graphics mode must be initialized before using that function.

void far initgraph(int far *driver, int far *mode, char far *path)

Function detectgraph
Detectgraph function determines the graphics hardware in the system, if the function finds a graphics adapter then it returns the highest graphics mode that the adapter supports.
void far detectgraph(int far *driver, int far *mode)

Integer that specifies the graphics driver to be used. You can give graphdriver a value using a constant of the graphics_drivers enumeration type.

Integer that specifies the initial graphics mode (unless *graphdriver = DETECT). If *graphdriver = DETECT, initgraph sets *graphmode to the highest resolution available for the detected driver. You can give *graphmode a value using a constant of the graphics_modes enumeration type.


Function closegraph
This function shutdown the graphics mode and returns to the position it was before the initgraph function was called.
void far closegraph(void)
Example 1:
#include
#include

void main()
{
int gd=DETECT, gm;

initgraph(&gd, &gm, "c:\\turboc\\bgi");
circle(200,100,150);

getch();
closegraph();
}


Example 2:
#include
#include
void main()
{
int gd=DETECT, gm;
initgraph(&gd, &gm, " c:\\turboc\\bgi");

circle(100,100,50);
outtextxy(75,170, "Circle");
rectangle(200,50,350,150);
outtextxy(240, 170, "Rectangle");
ellipse(500, 100,0,360, 100,50);
outtextxy(480, 170, "Ellipse");
line(100,250,540,250);
outtextxy(300,260,"Line");

getch();
closegraph();
}


Some Useful Graphics.h Functions:
int getdisplaycolor( int color );
int converttorgb( int color );
void delay( int msec );
void getarccoords( arccoordstype *arccoords );
int getbkcolor( );
int getcolor( );
int getmaxcolor( );
int getmaxheight( );
int getmaxwidth( );
int getmaxx( );
int getmaxy( );
void getfillpattern( char *pattern );
void getfillsettings( fillsettingstype *fillinfo );
void getlinesettings( linesettingstype *lineinfo );
bool getrefreshingbgi( );
int getwindowheight( );
int getwindowwidth( );
int getpixel( int x, int y );
void getviewsettings( viewporttype *viewport );
int getx( );
int gety( );
void setcolor( int color );
void setfillpattern( char *upattern, int color );
void setfillstyle( int pattern, int color );
void setlinestyle( int linestyle, unsigned upattern, int thickness );
void setrefreshingbgi(bool value);
void setviewport( int left, int top, int right, int bottom, int clip );
void setwritemode( int mode );
void moverel( int dx, int dy );
void moveto( int x, int y );
void refreshbgi(int left, int top, int right, int bottom);
void refreshallbgi( );
void setbkcolor( int color );

File Handling in C

A file is a collection of bytes stored on a secondary storage device, which is generally a disk of some kind. The collection of bytes may be interpreted, for example, as characetrs, words, lines, paragraphs and pages from a textual document; fields and records belonging to a database; or pixels from a graphical image. There are two kinds of files that programmers deal with text files and binary files.

Text Files

A text file can be a stream of characters that a computer can process sequentially. It is not only processed sequentially but only in forward direction. For this reason a text file is usually opened for only one kind of operation (reading, writing, or appending) at any given time.
Binary Files
A binary file is no different to a text file. It is a collection of bytes. In C Programming Language a byte and a character are equivalent. No special processing of the data occurs and each byte of data is transferred to or from the disk unprocessed. C Programming Language places no constructs on the file, and it may be read from, or written to, in any manner chosen by the programmer.

Opening a file:
The general format of the function used for opening a file is
FILE *fp;
fp=fopen(“filename”,”mode”);


The first statement declares the variable fp as a pointer to the data type FILE. As stated earlier, File is a structure that is defined in the I/O Library. The second statement opens the file named filename and assigns an identifier to the FILE type pointer fp. fopen() contain the file name and mode (the purpose of opening the file).

r is used to open the file for read only.
w is used to open the file for writing only.
a is used to open the file for appending data to it.

Closing a File

A file must be closed as soon as all operations on it have been completed. This would close the file associated with the file pointer. The input output library supports the function to close a file.

Syntax to close file

fclose(filepointer);


Example
#include
void main(void)
{
FILE *myfile;
char c;
myfile = fopen("firstfile.txt", "r");
if (myfile == NULL) printf("File doesn't exist\n");
else {
do {
c = getc(myfile);

putchar(c);

} while (c != EOF);

}
fclose(myfile);

}


File operation functions in C:
Function NameOperation
fopen()Creates a new file. Opens an existing file.
fcloseCloses a file which has been opened for use
getc()Reads a character from a file
putc()Writes a character to a file
fprintf()Writes a set of data values to a file
fscanf()Reads a set of data values from a file
getw()Reads a integer from a file
putw()Writes an integer to the file
fseek()Sets the position to a desired point in the file
ftell()Gives the current position in the file
rewind()Sets the position to the beginning of the file

Structures and Unions in C

A structure is a collection of variables under a single name. These variables can be of different types, and each has a name which is used to select it from the structure. A structure is a convenient way of grouping several pieces of related information together.

struct mystruct
{
int numb;
char ch;
}

Structure has name mystruct and it contains two variables: an integer named numb and a character named ch.

struct mystruct s1;

Accessing Member Variables

s1.numb=12;

s1.ch=’b’;

printf(“\ns1.numb=%d”,s1.numb);

printf(“\ns1.ch=%c”,s1.ch);


typedef can also be used with structures. The following creates a new type sb which is of type struct chk and can be initialised as usual:
typedef struct chk
{
char name[50];
int magazinesize;
float calibre;
} sb;

ab arnies={"adam",30,7};

Unions:
A union is an object that can hold any one of a set of named members. The members of the named set can be of any data type. Members are overlaid in storage. The storage allocated for a union is the storage required for the largest member of the union, plus any padding required for the union to end at a natural boundary of its strictest member.

union {
char n;
int age;
float weight;
} people;

people.n='g';
people.age=26;
people.weight=64;

Strings in C

Character type array is called string. All strings end with the NULL character. Use the %s placeholder in the printf() function to display string values.

Declaration:
char name[50];
Example
#include
void main (void )
{
char *st1 = "abcd";
char st2[] = "efgh";
printf( "%s\n", s1);
printf( "%s\n", s2);

}

void main(void){

char myname[] = { 'S', 't', 'e', 'v', 'e' };

printf("%s \n",myname);
}

String input and output:
The gets function relieves the string from standard input device while put S outputs the string to the standard output device.

The function gets accepts the name of the string as a parameter, and fills the string with characters that are input from the keyboard till newline character is encountered.
The puts function displays the contents stored in its parameter on the standard screen.
The syntax of the gets function is
gets (str_var);

The syntax of the puts character is
puts (str_var);
Example:

# include <>
Void main ( )
{
char myname [40];
printf (“Type your Name :”);
gets (myname);
printf (“Your name is :”);
puts(myname);
}
Some String Functions:
FunctionDescription
strcpy(string1, string2)Copy string2 into string1
strcat(string1, string2)Concatenate string2 onto the end of string1
length = strlen(string)Get the length of a string
strcmp(string1, string2)Return 0 if string1 equals string2, otherwise nonzero
strchr(string1, chr);will find the first matching character in a string.

Arrays in C


An array is a series of elements of the same type placed in contiguous memory locations that can be individually referenced by adding an index to a unique identifier.

An array is a data structure of multiple elements with the same data type. Array elements are accessed using subscript. The valid range of subscript is 0 to size -1.

Declaration of Array

int arr[10];


Example:


#include
void main(void)
{
int a[5];
int i;
for(i = 0;i<5;i++)
{
a[i]=i;
}

for(i = 0;i<5;i++)
{
printf("%d value of I is = %d\n",i,a[i]);
}
}


Output

1 value of I is = 0

2 value of I is = 1

3 value of I is = 2

4 value of I is = 3

5 value of I is = 4


Multidimensional Arrays
A multi-dimensional array of dimension n (i.e., an n-dimensional array or simply n-D array) is a collection of items which is accessed via n subscript expressions. Multidimensional arrays can be described as "arrays of arrays".
Example:



#include

void main(void){
int a[3][2];
int i,j;
for(i = 0;i<3;i++){
for(j=0;j<2 ;j++) {
scanf(“%d”,&a[i][j]); }
}

for(i = 0;i<3;i++){
for(j=0;j<2;j++) {
printf("value in array %d\n",a[i][j]);
}
}

}

Pointers in C

A pointer is a variable suitable for keeping memory addresses of other variables; the values you assign to a pointer are memory addresses of other variables or other pointers.

C pointers are characterized by their value and data-type. The value is the address of the memory location the pointer points to, the type determines how the pointer will be incremented/decremented in pointer or subscript arithmetic.
Pointers are used to manipulate arrays and they can be used to return more than one value from a function.

Pointers are declared by using the asterisk(*).

int *p;

Each variable has two attributes: address and value. The address is the location in memory. In that location, the value is stored. During the lifetime of the variable, the address is not changed but the value may change.

#include

void main (void)
{
int i;
int * a;
i = 10;
a = &i;
printf (" The address of i is %8u \n", a);
printf (" The value at that location is %d\n", i);
printf (" The value at that location is %d\n", *a);
}
Output:
The address of i is 631672
The value at that location is 10
The value at that location is 10
Arrays and Pointers:
An array is actually a pointer to the 0th element of the array. Dereferencing the array name will give the 0th element. This gives us a range of equivalent notations for array access. In the following examples, arr is an array.







ArrayPointer
arr[0]*arr
arr[1]*(arr+1)
arr[n]*(arr+n)

Functions in C

Function is a block of statements which perform some specific task and always return single value to the calling function. Functions are used to minimize the repetition of code.

Some languages distinguish between functions which return variables and those which don't. C assumes that every function will return a value. If the programmer wants a return value, this is achieved using the return statement. If no return value is required, none should be used when calling the function.

There are two types of functions in c language.
1. Library Functions

A function which is predefined in c language is called library function printf(), scanf(), getch() etc are library functions

2. User Defined Functions
A function written by a programmer is called user defined function.

Example
#include
int add (int x, int y) {
int z;
z = x + y;
return (z);
}
main ()
{
int i, j, k;
i = 15;
j = 5;
k = add(i, j);
printf ("The value of k is %d\n", k);
}

Output

The value of k is 20

Scope of Function:
Only a limited amount of information is available within the body of each function. Variables declared within the calling function can't be accessed from the outside functions unless they are passed to the called function as arguments.
Global Variables:
A variable that is declared out side all functions is called Global variable. Global variables don't die on return from a function. Their value is retained, and is available to any other function in whole program.

Local Variables:

A variable that is declared within a function is called Local variable. They are created each time the function is called, and destroyed on return from the function. The values passed to the functions (arguments) are also treated like local variables.

Static Variables:

Static variables are like local variables but they don't die on return from the function. Instead their last value is retained, and it becomes available when the function is called again.

Loops in C

Loops are used to repeat one statement or set statements more than one time. Most real programs contain some construct that loops within the program, performing repetitive actions on a stream of data or a region of memory. There are several ways to loop in C.

For Loop
For loop is a counter loop. The for loop allows automatic initialization of instrumentation of a counter variable. The general form is

for (initialization; condition; increment/decrement)
{
statements block
}

If the statement block is only one statement, the braces are not necessary. Although the for allows a number of variations, generally the initialization is used to set a counter variable to its starting value. The condition is generally a relational statement that checks the counter variable against a termination value, and the increment increments (or decrements) the counter value. The loop repeats until the condition becomes false.

Example

Main(){
int i;


for(i = 0; i < count; i++)
{
printf(“%d\n”,i);
}
}

While Loop

The while loop repeats a statement until the test at the top proves false.
The while loop has the general form:
while(condition)
{
statement block
}


The while tests its condition at the top of the loops. Therefore, if the condition is false to begin with, the loop will not execute at all. The condition may be any expression. An example of a while follows. It reads characters until end-of-file is encountered.
Example

main(){
int t = 0;

while(t<=10) { printf(“%d\n”,t); t=t+1; } }

do-while loop
This is very similar to the while loop except that the test occurs at the end of the loop body. This guarantees that the loop is executed at least once before continuing. Such a setup is frequently used where data is to be read. The test then verifies the data, and loops back to read again if it was unacceptable.

void main(void){

int val;
do
{ printf("Enter 1 to continue and 0 to exit :");
scanf("%d\n", &val);
} while (val!= 1 && val!= 0)

}

Control Structure in C

C language possesses such decision making capabilities and supports the following
statements known as control or decision-making statements.

1. if statement
2. switch statement
3. Conditional operator statement
4. goto statement

if Statement
The if statement is a powerful decision making statement and is used to control
the flow of execution of statements. It is basically a two-way decision statement
and is used in conjunction with an expression.

Syntax
if (conditional)
{
block of statements executed if conditional is true;
}
else
{
block of statements if condition false;
}

Example
main()
{
int x=5

if (x > 1)
{
x=x+10;
}

printf("%d", x);

}

if…else statement
The if....else statement is an extension of the simple if statement. The general form is

if (condition)
{
True-block statement(s)
}
else
{
False-block statement(s)
}


If the condition is true, then the true-block statement(s), immediately following the if
statement are executed; otherwise the false-block statement(s) are executed.

void main(void)
{
int a, b;
char ch;

printf("Choice:\n");
printf("(A) Add, (S) Subtract, (M) Multiply, or (D) Divide?\n");
ch = getchar();
printf("\n");

printf("Enter a: ");
scanf("%d", &a);
printf("Enter b: ");
scanf("%d", &b);

if(ch=='A') printf("%d", a+b);
else if(ch=='S') printf("%d", a-b);
else if(ch=='M') printf("%d", a*b);
else if(ch=='D' && b!=0) printf("%d", a/b);

}

if-else-if statement

void main(void)
{
int numb;


printf("Type any Number : ");
scanf("%d", &numb);

if(numb > 0) {
printf("%d is the positive number", numb);
}
else if(numb < 0)
printf("%d is the Negative number", numb);
else printf("%d is zero",numb);


}
Switch Statement:
The switch and case statements help control complex conditional and branching operations.
The switch statement transfers control to a statement within its body.

Syntax:
switch (expression) {
case item:
statements;
break;
case item:
statements;
break;

case item:
statements;
break;
default:
statement;
break;
}

Example:
#include

main(){
int numb;
printf(“Type any Number”);
scanf(“%d”,&numb);

switch(numb %2)
{
case 0 : printf("the number %d is even \n", numb);

case 1 : printf("the number %d is odd \n", numb);
break;
}

}

Ternary condition

The ? (ternary condition) operator is a more efficient form for expressing simple if
statements. It has the following form:

expression1 ? expression2: expression3

Example:

res = (a>b) ? a : b;
if a is greater than b than res has the value a else the res has value b.

break statement

break statement is used to exit from a loop or a switch, control passing to the first
statement beyond the loop or a switch.

With loops, break can be used to force an early exit from the loop, or to implement a
loop with a test to exit in the middle of the loop body. A break within a loop should
always be protected within an if statement which provides the test to control the exit condition.

Example

For(i=0;i<=10;i++)

{

if(i==5){

break;

}

printf(“\n%d”,i);

}

Output:

0

1

2

3

4

continue statement

continue is similar to the break statement but it only works within loops where its effect
is to force an immediate jump to the loop control statement.

Like a break, continue should be protected by an if statement.

Example

For(i=0;i<10;i++)

{

if(i==5){

continue;

}

printf(“\n%d”,i);

}

Output:

0

1

2

3

4

6

7

8

9


The goto statement

The goto is a unconditional branching statement used to transfer control of the program from
one statement to another.

One must ensure not to use too much of goto statement in their program because its
functionality is limited. It is only recommended as a last resort if structured solutions are
much more complicated.

Constants And Variables

The alphabets, numbers and special symbols when properly combined form constants, variables and keywords. A constant is an entity that does not change.

Variables:
A variable is an entity that may change it value. In any program we typically do lots of calculations. The results of these calculations are stored in computer memory locations. To make the retrieval and usage of these values we give names to the memory locations. These names are called variables.

Keywords:
A keyword is a word that is part of C Language itself. These words have predefined meanings and these words cannot be used as variable names.
C Keywords
charsignedbreakfor
autoconstsizeofcase
ifexterndoublestruct
continuegotoregisterenum
typedefdefaultreturnstatic
floatuniondoswitch
volatileintunsignedelse
whilelongvoidshort


Types of Variables
There are two main types of variables in C: numeric variables that hold only numbers or values, and string variables that hold text, from one to several characters long.

Basic fundamental data types in C Language
NameDescriptionSizeRange
charCharacter or small integer.1bytesigned: -128 to 127
unsigned: 0 to 255
short intShort Integer.2bytessigned: -32768 to 32767
unsigned: 0 to 65535
long int (long)Long integer.4bytessigned: -2147483648 to 2147483647
unsigned: 0 to 4294967295
boolBoolean value. It can take one of two values: true or false.1bytetrue or false
floatFloating point number.4bytes+/- 3.4e +/- 38 (~7 digits)
doubleDouble precision floating point number.8bytes+/- 1.7e +/- 308 (~15 digits)
long doubleLong double precision floating point number.8bytes+/- 1.7e +/- 308 (~15 digits)

First Program Using C

Here is your first c program. Write carefully because C Language is a case sensative language.
#include <>
void main()

{
printf("Hello World\n");
}

Press ALT+F9 to compile your program. If you have any error in your program, you will get the message, remove your errors and then execute your program you will got the out put.

Hello World
printf()
The printf() function prints output to stdout, according to format and other arguments passed to printf(). The string format consists of two types of items - characters that will be printed to the screen, and format commands that define how the other arguments to printf() are displayed.

printf( "Hello World’ );

scanf()
The scanf() function reads input from stdin, according to the given format, and stores the data in the other arguments. It works a lot like printf(). The format string consists of control characters, whitespace characters, and non-whitespace characters.

void main(void)
{
int i;
scanf(“%d”,&i);
printf(“%d”,i);
}

Introduction To C

C was developed by Dennis Ritchie at Bell Laboratories in 1972. Most of its principles and ideas were taken from the earlier language B, BCPL and CPL. CPL was developed jointly between the Mathematical Laboratory at the University of Cambridge and the University of London Computer Unit in 1960s. CPL (Combined Programming Language) was developed with the purpose of creating a language that was capable of both machine independent programming and would allow the programmer to control the behavior of individual bits of information. But the CPL was too large for use in many applications. In 1967, BCPL (Basic Combined Programming Language) was created as a scaled down version of CPL while still retaining its basic features. This process was continued by Ken Thompson. He made B Language during working at Bell Labs. B Language was a scaled down version of BCPL. B Language was written for the systems programming. In 1972, a co-worker of Ken Thompson, Dennis Ritchie developed C Language by taking some of the generality found in BCPL to the B language.

The original PDP-11 version of the Unix system was developed in assembly language. In 1973, C language had become powerful enough that most of the Unix kernel was rewritten in C. This was one of the first operating system kernels implemented in a language other than assembly.

During the rest of the 1970's, C spread throughout many colleges and universities because of its close ties to UNIX and the availability of C compilers. Soon, many different organizations began using their own versions of C Language. This was causing great compatibility problems. In 1983, the American National Standards Institute (ANSI) formed a committee to establish a standard definition of C Language. That is known as ANSI Standard C. Today C is the most widely used System Programming Language.