StartingC
startingC: Learning the C Programming Language
Introduction
svn co http://source.ggy.bris.ac.uk/subversion-open/startingC/trunk ./startingC
A Quintessential First Program
OK, now that we have the example code, let's get cracking and run our first C program. First of all, move into the example directory:
cd startingC/examples/example1
We'll use of a Makefile for each example, so as to make the build process painless (hopefully!). All we need do is run make (see the [make tutorial about make] if you're interested in this further):
make
Now, we can run the classic program:
./hello.exe
and you should get the friendly response:
hello, world!
Bingo! We've just surmounted--in some ways--our hardest step; running our first C program. Given this quantum leap, everything else will be plain sailing from here, honest!
Types & Operations
Buoyed with confidence from our first example, let's march fearlessly onwards into the realm of variable types and basic operations. To do this, move up and over to the directory example2 and type make to build the example programs:
cd ../example2 make
Take a look inside types.c and after the start of the main function, you'll see a block of variable declarations:
char nucleotide; /* A, C, G or T for our DNA */ int numPlanets; /* eight in our solar system - poor old Pluto! */ float length; /* e.g. 1.8288m, for a 6' snooker table */ double accum; /* an accumulator */
C, like many languages (e.g. Fortran), requires that variables must be declared to be of a certain type before they can be used, and here we see examples of four intrinsic types provided by the language. It's a very good habit to comment all your variable declarations, and here the comments pretty much explain what the various types are. double is a double precision--twice the storage space of a float--floating point number. The extra space make a double a good choice for an accumulator where you want to minimise rounding errors and avoid under- and overflow as best as possible. (The Fortran programmers amongst us will note, with a whince, the absence of an implicit type for complex numbers.)
int
char
float
double
short & long
sizeof() casting
enumerated types
Now, it's very important that you muck around with these example programs as much as possible! Ideally, so much so that you break them! We never learn as much as when we make a mess of things, and since these are just toy programs, you may as well go for it! If you get in a pickle, you can get the original programs back with a quick waft of the Subversion wand:
svn revert *
Exercises
types.c
- do this
- then that
operations.c
- this
- that
The C Preprocessor
Loops & Conditionals
if then else
(switch) case (default - fall through)
while and for
break & continue
Functions & Header Files
Arrays & Pointers
address, dereference address arith 2d arrays binary trees and linked lists - just give examples
Structures
DAB again
watch out for padding
The Command Line and I/O
Further Reading
The bible is The C Programming Language by Kernighan & Ritchie.