Sunteți pe pagina 1din 14

Learn C by example in just 5 hours.C tutorial on-line.

Have you always wanted to master a programming language. Well today if you are glancing at this page you have chosen a language which perhaps without doubt is the most versatile. But to learn C for say basic programmers is a challenge. While the old basic used interpreters C uses compilers and basically is very portable. But let quit all this jibrish and get to the heart of this page. I say you can learn C programming in 3 hours. Well atleast the basics that will help you to build more powerful programs.You say I can't show you C in 5 hours. Well let's test that ...

A simple hello program.(demonstrates the const function in all c programs--the main() function.) (example-1) main() { puts("hello world guess who is writing a c program"); return(0); } That's it. In all c programs there is a main function which is followed by a { and closed by a } after a return()function.It doesn't have to be return(0) but that depends upon the type of c compiler you have. Check your compiler before you start your programming. You saw above that puts function is used to put a whole sentence on the screen; but are there functions that will put characters on the screen/take characters: Yes and next is a table of what they are and what they do. Read them and the examples that follow. getchar() Gets a single character from the input/keyboard.

putchar() Puts a single character on the screen.

The printf function is a function used to print the output to the screen.printf() needs to know if the output is an integer,real,etc example-2 main() { printf(hello); } Assuming hello was defined earlier say by #define hello "Hello!" the output is Hello!. But if the output is an integer then %d has to be attatched to the printf statement.

This above can be shown as printf("I am %d years old",12) which will result in the following result:I am 12 years old The %d tells that an integer is to be placed here. Now we will look into a function called scanf().This lets you input from the kewyboard and for that input to be taken by the program and processed.Once again it is important to tell scanf() what type of data is being scanned. Here is an example of a program that demonstrates both scanf and printf in unison. example-3 main() { int count; puts("Please enter a number: "); scanf("%d", &count); printf("The number is %d",count); }

That concludes the first hour of your tutorial.Now this is a list of data type identifiers. %f=float %c=char %s =s tring %e=inputs number in scientific notation. As you saw in the first hour of our tutorial c is a language in which you program using functions. Functions are usually identified by the following characteristic:>> functionname() In c the main() function is essential. Think of it as a constant function for all your programs and all other functions can be accessed from the main().Before I show you how we do that let us have an example where we want to pause a program before the screen is changed. This would involve the foll- owing procedure:>> write a main function then use puts function to put statements on the screen like we did in section 1 above and then before the next set of puts statements declare a pause. This is how it is done: example-4 main() { puts("hello there"); puts("what is your name?") pause() puts("It is nice to meet you") } pause(); { int move_on;

printf("press entere to continue"); move_on=getchar(); return(0); } This above will pause until a key is pressed on the keyboard. Granted that the above program makes no sense from a practical point of view but I want to show is the use of another function inside the main function. C has many functions that comes with it. See your compiler manual to see what you have.Now we are going to look at conditions in c programming:>> the if command and do command. Here is an example of th if command: example-5 main() { float cost,tax,luxury,total; luxury=0.0; printf("Enter the cost of the item: "); scanf("%f", &cost); tax=cost*0.06; if(cost>40000.0) luxury=cost*0.005; total=cost+tax+luxury; printf("the total cost is %0.2f",total); } This is a simple example of one if statement. Another If statement is the if -else statement. This can be shown as this example-6 if(cost >40000) { luxury=cost*0.005; printf("The luxury tax is %.2f",luxury); } else { puts("There is no luxury tax for the items"); luxury=0.0; } Now the format a do statement is as follows: do { instruction; instruction

} while(condition); The format for a FOR statement is as follows: for(initial=value;condition;increment) instruction; Now for an example: example-7 main() { int row,column; puts("\t\tMY Handy multipication table"); for(row=1;tow<=10;row++) { for(column=1;column<=10;column++) printf("%6d", row*column); putchar('\n'); } } The output is a multipication table of 10x10 size. example-8 main() { int temp; float celsius; char repeat; do { printf("Input a temperature:"); scanf("%d", &temp); celsius=(5.0/9.0)*(temp-32); printf(%d degrees F is %6.2f degrees celsius\n",temp, celsius); printf(("do you have another temperature?"); repeat=getchar(); putchar('\n'); } while(repeat=='y'|| repeat=='y'); } This shows you to how to use the do command for conditional programming in c. Now we are in our 3rd hour.

Now we will concentrate on arrays: What is a flag? A flag is an algorithm that informs the program that a certain condition has occured. example-9 main() { int temp; float celsius; char repeat; char flag; do { flag='n"; do { if(flag=='n') printf("Input a valid temperature :"); else printf("input a valid temperature,stupid:"); scanf("%d",&temp); flag='y'; } while (temp<0||temp >100); celsius=(5.0/9.0)*(temp-32); printf("%d degrees F is %6.2f degrees celsius\n",temp,celsius); printf("Do you have another temperature?"); repeat=getchar(); putchar('\n'); } while (repeat=='y' || repeat=='Y"); } That was an example of how flags work. What is the break command? The break command ends the loop in which it is placed just as if the while condition, or the condition in a for loop becomes false.

How to declare an array?


An array can be defined as follows: int temp[5]={45,56,12,98,12};

This would mean the following: temp[0]=45....temp[4]=12 This was a single dimension array with 5 elements of the integer type.If you wanted to depict float variables just use float temp instead of int temp. Let us now see an example of using an array for two tasks. main() { int temps[31]; int index,total; float average,celsius; total=0.0; for(index=0;index<31;index++) { printf("enter temperature #%d:",index); scanf("%d",&temps[index]); } for(index=0;index<31;index++) total+=temps[index]; average=total/31.0 printf("average is:%f\n\n", average); puts9"fahrenheit\tcelsius\n"); for(index=0;index<31;index++) { celsius=(5.0/9.0)*(temps[index]-32); printf("%d\t\t%6.2f\n",temps[index],celsius); } } Now I am going to show you how to pass an array. When you pass an array you are actually passing the address of the array.

example-10
#define count 31 main() { int temps[count]; int index; float celsius; for(index=0; index< count;index++) { celsius=(5.0/9.0)*(heat[index]-32); printf("%d\t\t%6.2f\n",heat[index],celsius); } }

Now we are in the fourth hour of our tutorial.We are now going to look at 1)comparing strings 2)determining string lengths. 3) combining strings 4)structures.

Comparing 2 strings:>> In c it is not possible to directly compare two


strings so a statement like if (string1==string2) is not valid. Most c libraries contain a function called the strcmp().This is used to compare two strings in the following manner. if(strcmp(name1,name2)==0) puts("The names are the same"); else puts("The names are not the same.");

Determining string length.:>> This is done using the strlen()


function. a simple programming bit showing this function looks like this: gets(name); count=strlen(name); printf("the string %s has %d characters",name,count);

Combining strings:>>We use the function strcpy() an example follows:


Example-11 strcpy(name,"Adam"); strcpy(name1,"and eve"); strcat(name,name1); puts(name); The assumption being that adam and eve are two values of the variables name1 and name2. The end result is the combination of the 2 names.

What are structures?


A structure variable is a collection of other variables comprising different types.

What are pointers?


Ponters are variables which refer to the memory locations of other variables. This is how a structure is defined.

example-12 struct cd { char name[20]; char description[40]; char category[12]; float cost; int number; }; main() Notice how the main function comes after the definition of the structure. In the example above the cd was a cd disk and I was writing the definition of a cd collection program. Now in the fifth hour I will show you how to output your data onto a disk.After all what is the use of the program if you can't save output to a disk. Inorder to do this we have to use a pointer. The pointer in this case is FILE. The syntax to declare a file is :FILE*file_ponter; The link between your program, the file and the computer is established with the fopen() function using the syntax shown below: pointer=fopen("FILENAME","mode"); For example to create a file by the name cd.dat we do the following: FILE*cdfile; cdfile=fopen("CD>DAT","w"); If you will be reading from the file above use "r" instead "w" in the second sentence. In order to rpint information use the following command: FILE*cdfile; cdfile=fopen("PRN","w"); A file is closed by using the fclose() command.Next we will look at an exam ple of reading from a file.

example-13
#include "stdio.h" main() { FILE*fp; int letter; if((fp=fopen("MYFILE","r"))==NULL) {

puts("Cannot oepn the file"); exit(); } while((letter=fgetc(fp)) !=eof) printf("%c",letter); fclose(fp); } The eof statement means end of file and this is included in the stdio.h header file which was declared at the start of the example. The stdio.h header file is one of many that comes with your compiler. So check your compiler specifics for other header files which will help perform other functions. Now that you went through this tutorial you should be in a position to write simple programs and save it to a disk so you can give it your friends or even your boss. In no way the depth of c can be done in 5 hours but the nut and bolts can be learned that fast.Wher e you go from there depends upon your ambitions and hard work. This page is maintained by Francis Thottungal.

C has a concept of 'data types' which are used to define a variable before its use. The definition of a variable will assign storage for the variable and define the type of data that will be held in the location.

The value of a variable can be changed any time. C has the following basic built-in datatypes.

int float double char

Please note that there is not a boolean data type. C does not have the traditional view about logical comparison, but thats another story.

int - data type


int is used to define integer numbers.
{ int Count; Count = 5; }

float - data type


float is used to define floating point numbers.
{ }

float Miles; Miles = 5.6;

double - data type


double is used to define BIG floating point numbers. It reserves twice the storage for the number. On PCs this is likely to be 8 bytes.
{ double Atoms; Atoms = 2500000; }

char - data type


char defines characters.
{ char Letter; Letter = 'x'; }

Modifiers
The data types explained above have the following modifiers.

short long signed unsigned

The modifiers define the amount of storage allocated to the variable. The amount of storage allocated is not cast in stone. ANSI has the following rules:
short int <= int <= long int float <= double <= long double

What this means is that a 'short int' should assign less than or the same amount of storage as an 'int' and the 'int' should be less or the same bytes than a 'long int'. What this means in the real world is:
Type Bytes Range --------------------------------------------------------------------short int 2 -32,768 -> +32,767 (32kb) unsigned short int 2 0 -> +65,535 (64Kb) unsigned int 4 0 -> +4,294,967,295 ( 4Gb) int 4 -2,147,483,648 -> +2,147,483,647 ( 2Gb) long int 4 -2,147,483,648 -> +2,147,483,647 ( 2Gb) signed char 1 -128 -> +127 unsigned char 1 0 -> +255 float 4 double 8 long double 12

These figures only apply to todays generation of PCs. Mainframes and midrange machines could use different figures, but would still comply with the rule above. You can find out how much storage is allocated to a data type by using the sizeof operator discussed in Operator Types Session. Here is an example to check size of memory taken by various datatypes.
int main() { printf("sizeof(char) == %d\n", sizeof(char)); printf("sizeof(short) == %d\n", sizeof(short)); printf("sizeof(int) == %d\n", sizeof(int)); printf("sizeof(long) == %d\n", sizeof(long)); printf("sizeof(float) == %d\n", sizeof(float)); printf("sizeof(double) == %d\n", sizeof(double)); printf("sizeof(long double) == %d\n", sizeof(long double)); printf("sizeof(long long) == %d\n", sizeof(long long));

return 0;

Qualifiers
A type qualifier is used to refine the declaration of a variable, a function, and parameters, by specifying whether:

The value of a variable can be changed. The value of a variable must always be read from memory rather than from a register

Standard C language recognizes the following two qualifiers:


const volatile

The const qualifier is used to tell C that the variable value can not change after initialisation. const float pi=3.14159; Now pi cannot be changed at a later time within the program. Another way to define constants is with the #define preprocessor which has the advantage that it does not use any storage The volatile qualifier declares a data type that can have its value changed in ways outside the control or detection of the compiler (such as a variable updated by the system clock or by another program). This prevents the compiler from optimizing code referring to the object by storing the object's value in a register and re-reading it from there, rather than from memory, where it may have changed. You will use this qualifier once you will become expert in "C". So for now just proceed.

What are Arrays:


We have seen all baisc data types. In C language it is possible to make arrays whose elements are basic types. Thus we can make an array of 10 integers with the declaration.
int x[10];

The square brackets mean subscripting; parentheses are used only for function references. Array indexes begin at zero, so the elements of x are: Thus Array are special type of variables which can be used to store multiple values of same data type. Those values are stored and accessed using subscript or index.

Arrays occupy consecutive memory slots in the computer's memory.


x[0], x[1], x[2], ..., x[9]

If an array has n elements, the largest subscript is n-1. Multiple-dimension arrays are provided. The declaration and use look like:
int name[10] [20]; n = name[i+j] [1] + name[k] [2];

Subscripts can be arbitrary integer expressions. Multi-dimension arrays are stored by row so the rightmost subscript varies fastest. In above example name has 10 rows and 20 columns. Same way, arrays can be defined for any data type. Text is usually kept as an array of characters. By convention in C, the last character in a character array should be a `\0' because most programs that manipulate character arrays expect it. For example, printf uses the `\0' to detect the end of a character array when printing it out with a `%s'. Here is a program which reads a line, stores it in a buffer, and prints its length (excluding the newline at the end).
main( ) { int n, c; char line[100]; n = 0; while( (c=getchar( )) != '\n' ) { if( n < 100 ) line[n] = c; n++; } printf("length = %d\n", n); }

Array Initialization

As with other declarations, array declarations can include an optional initialization Scalar variables are initialized with a single value Arrays are initialized with a list of values The list is enclosed in curly braces

int array [8] = {2, 4, 6, 8, 10, 12, 14, 16};

The number of initializers cannot be more than the number of elements in the array but it can be less in which case, the remaining elements are initialized to 0.if you like, the array size can be inferred from the number of initializers by leaving the square brackets empty so these are identical declarations:
int array1 [8] = {2, 4, 6, 8, 10, 12, 14, 16};

int array2 [] = {2, 4, 6, 8, 10, 12, 14, 16};

An array of characters ie string can be initialized as follows:


char string[10] = "Hello";

S-ar putea să vă placă și