Saturday, December 10, 2011

c programming lecture 1


Introduction
Why Learn C?
The most popular Operating Systems right now are Microsoft Windows, Mac OS X, and
GNU/Linux. Each is written in C. Why? Because Operating Systems run directly on top of the
hardware. There is no lower layer to mediate their requests. Originally, this OS software was written in the Assembly language, which results in very fast and efficient code. However, writing an OS in Assembly is a tedious process, and produces code that will only run on one CPU architecture, such as the Intel X86 or AMD64. Writing the OS in a higher level language, such as C, lets programmers re­target the OS to other architectures without re­writing the entire code.
But why 'C' and not Java or Basic or Perl? Mostly because of memory allocation. Unlike most
computer languages, C allows the programmer to address memory the way he/she would using
assembly language. Languages like Java and Perl shield the programmer from having to worry about memory allocation and pointers. This is usually a good thing. It's quite tedious to deal with memory allocation when building a high­level program like a quarterly income statement report. However, when dealing with low level code such as that part of the OS that moves the string of bytes that
makes
 up that quarterly income report from the computer's memory to the network card's buffer so they can be shipped to the network printer, direct access to memory is critical ­­ something you just can't do with Java. C can be compiled into fast and efficient machine code.
So is it any wonder that C is such a popular language?
Like toppling dominoes, the next generation of programs follows the trend of its ancestors.




Operating Systems designed in C always have system libraries designed in C. Those system libraries
are in turn used to create higher­level libraries (like OpenGL, or GTK), and the designers of those
libraries often decide to use the language the system libraries used. Application developers use the
higher
­level libraries to design word processors, games, media players, and the like. Many of them
will choose to program in the language that higher­level library uses. And the pattern continues on
and on and on...  Why learn C |What you need before you can learn 
History of the C Programming Language
In 1947, three scientists at Bell Telephone Laboratories, William Shockley, Walter Brattain, and John Bardeen created the transistor. Modern computing was beginning. In 1956 at MIT the first fully transistor based computer was completed, the TX­0. In 1958 at Texas Instruments, Jack Kilby created the first integrated circuit. But even before the first integrated circuit existed, the first high level language had already been written.
In 1954 Fortran, the Formula Translator, had been written. It began as Fortran I in 1956. Fortran
begot Algol 58, the Algorithmic Language, in 1958. Algol 58 begot Algol 60 in 1960. Algol 60
begot CPL, the Combined Programming Language, in 1963. CPL begot BCPL, Basic CPL, in 1967.
BCPL begot B in 1969. B begot C in 1971.
B was the first language in the C lineage directly, having been created at Bell Labs by Ken
Thompson. B was an interpreted language, used in early, internal versions of the UNIX operating system. Thompson and Dennis Ritchie, also of Bell Labs, improved B, calling it NB; further
extensions to NB created C, a compiled language. Most of UNIX was rewritten in NB and then C, which led to a more portable operating system.
B was of course named after BCPL, and C was its logical successor.
The portability of UNIX was the main reason for the initial popularity of both UNIX and C. So
rather than creating a new operating system for each new machine, system programmers could
simply write the few system­dependent parts required for the machine, and write a C compiler for
the
 new system. Thereafter since most of the system utilities were written in C, it simply made sense
to
 also write new utilities in that language.  Histor |Using a Compiler 
Getting Started
This book is intended to be an introduction to C programming. Although some basic computer literacy is assumed, no special knowledge is needed.
The minimum software required to start programming in C is a text editor to create C source files, and C compiler to turn those source files into executable programs.
Many programmers, however, prefer to use a IDE (Integrated development environments). This is a
program which combines editing, compiling and debugging into a convenient all­in­one interface. There are a variety of these available on almost every computer platform. Some can be downloaded free­of­charge while others are commercial products.
C Compilers:

Platform
OpenWatcom               [1] DOS, Windows, Netware, OS/2
Borland C                      [2] Windows
For Windows, Dev­C++ is recommended for its ease­of­use and simplicity of installation.

Installing the GNU C Compiler on Linux can vary in method from Linux distribution to

distribution.

  For Redhat, get a gcc RPM, e.g. using Rpmfind and then install (as root) using rpm                                     ­ivh

gcc­version­release.arch.rpm
  For Fedora Core, install the GCC compiler (as root) by using yum  install  gcc.
  For Mandrake, install the GCC compiler (as root) by using urpmi  gcc
  For Debian, install the GCC compiler (as root) by using apt­get  install  gcc.
  For Ubuntu, install the GCC compiler by using sudo  apt­get  install  gcc, or by
    
using Synaptic. You do not need Universe enabled.
  For Slackware, the package is available on their website ­ simply download, and type
     
installpkg  gcc­xxxxx.tgz
  For Gentoo, you should already have GCC already installed as it will have been used when
     
you first installed. To update it run (as root) emerge ­uav  gcc
  For Arch GNU/Linux, install the GCC compiler (as root) by using pacman           ­Sy  gcc.
  For FreeBSD, NetBSD, OpenBSD, DragonFly BSD, Darwin the port of GNU gcc is
available in the base system, or it could be obtained using the ports collection or pkgsrc.
  If you cannot become root, get the GCC tarball from ftp://ftp.gnu.org/ and follow the
instructions in it to compile and install in your home directory. Be warned though, you need a C compiler to do that ­ yes, gcc itself is written in C.
  You can use some commercial C compiler/IDE.
A text editor with syntax highlighting is recommended, as it can make code easier to read at a
glance. Highlighting can also make it easy to spot syntax errors. Most programmers' text editors on
Windows and Unix systems can do this.  What you need before you can lear  A taste of C 




Dev­C++
Dev C++, as mentioned before, is an Integrated Development Enviroment (IDE) for the C++
programming language, available from Bloodshed Software.
C++ is a programming language which contains within itself most of the C language, plus a few extensions ­ as such, most C++ compilers also compile C programs, sometimes with a few
adjustments (like invoking it with a different name or commandline switch). Therefore you can use Dev C++ for C developement.
Dev C++ is not, however, the compiler: It is designed to use the MinGW or Cygwin versions of
GCC ­ both of which can be downloaded as part of the Dev C++ package, although they are
completely different projects.
Dev C++ simply provides an editor, syntax highlighting, some facilities for the visualisation of code (like class and package browsing) and a graphical interface to the chosen compiler. Because Dev C++ analyses the error messages produced by the compiler and attempts to distinguish the line
numbers
 from the errors themselves, the use of other compiler software is discouraged since the format of their error messages is likely to be different.
The current version of Dev­C++ is a beta for version 5 ­ as such, it still has a significant number of
bugs. However, all the features are there and it is quite usable ­ as such, it is still considered one of the best free software C IDEs available for Windows.
A version of Dev­C++ for Linux is in the pipeline; it is not quite usable yet, however Linux users
already have a wealth of IDEs available to them (for example KDevelop and Anjuta.) Also, almost
all the graphical text editors, and other common editors such as emacs and vi(m), support syntax
highlighting.

gcc
The GCC is a free set of compilers developed by the Free Software Foundation, with Richard
Stallman as one of the main architects.

Detailed Steps for Obtaining the Free, Widely Respected and Easy to Use GCC Compiler if You're on Windows:
1. Go to http://www.cygwin.com and click on the "Install Cygwin Now" button in the upper right
corner of the page.
2. Click "run" in the window that pops up, and click "next" several times, accepting all the default
settings.
3. Choose any of the Download sites ("ftp.easynet.be", etc.) when that window comes up; press "next" and the Cygwin installer should start downloading.
4. When the "Select Packages" window appears, scroll down to the heading "Devel" and click on the "+" by it. In the list of packages that now displays, scroll down and find the "gcc­core" package; this is the compiler. Click once on the word "Skip", and it should change to some number like "3.4" etc. (the version number), and an "X" will appear next to "gcc­core" and several other related packages
that will now be downloaded.
5. Click "next" and the compiler as well as the Cygwin tools should start downloading; this could
take a while. While you're waiting, go to http://www.crimsoneditor.com and download that free
programmer's editor; it's powerful yet easy to use for beginners.
6. Once the Cygwin downloads are finished and you have clicked "next", etc. to finish the



installation, double­click the Cygwin icon on your desktop to begin the Cygwin "command prompt". Your home directory will automatically be set up in the Cygwin folder, which now should be at
"C:\cygwin" (the Cygwin folder is in some ways like a small unix/linux computer on your Windows machine ­­ not technically of course, but it may be helpful to think of it that way).
7. Type "gcc" at the Cygwin prompt and press "enter"; if "gcc: no input files" or something like it appears you have succeeded and now have the gcc compiler on your computer (and congratulations ­­ you have also just received your first error message!).

Detailed Steps for Compiling and Running Your First "Hello, world!" Program on Windows:
1. Open Notepad or another text editor (like the Crimson Editor listed above), and copy and paste this program into a new file:


#include  <stdio.h>
int  main()
{
printf("Hello,  world!\n"); return  (0);
}

2. Save this file as "hello.c" in the folder with your username, in the "home" folder in the Cygwin folder (i.e., somewhere like, "C:\cygwin\home\your­username­here").
3. Double­click the Cygwin icon on your desktop to start a Cygwin command prompt, and type "ls" to list the contents of your home folder; you should see your program "hello.c" listed if you have saved your program to the location listed in step #2, above.
4. Now type "gcc ­o hello hello.c" and press enter to compile your program. If any error messages come up, make sure your "hello.c" file looks exactly like the code above, and make sure you are in the same folder as your "hello.c" file (you can enter "cd" at the prompt at any time to return to the "C:\cygwin\home\you­username­here" folder if you are unsure where you are.)
5. If all goes well and no error messages come up, type "ls" again at the prompt and you should now see "hello.c" as well as "hello.exe", your newly compiled program.
6. Type "hello.exe" and press enter to run your program; you should see "Hello, world!" printed out ­­ welcome to the miracle of computing! (On newer versions it may help to type "./hello.exe"

The current stable (usable) version is 4.0 published on 20 April 2005, which supports several
platforms. In fact, GCC is not only a C compiler, but a family of compilers for several languages,
such as C++, Ada , Java, and Fortran.
To get started using GCC, you can simply call gcc from the command line, followed by some of the modifiers:
­c: indicates that the compiler is supposed to generate an object file, which can be later linked to other files to form a final program.
­o: indicates that the next parameter is the name of the resulting program (or library). If this option is not specified, the compiled program will, for historic reasons, end up in a file called "a.out" or "a.exe" (for cygwin users).



­g3: indicates that debugging information should be added to the results of compilation ­O2 ­ffast­math: indicates that the compilation should be optimized
­W ­Wall ­fno­common ­Wcast­align ­Wredundant­decls ­Wbad­function­cast ­Wwrite­strings ­Waggregate­return ­Wstrict­prototypes ­Wmissing­prototypes: indicates that gcc should warn about many types of suspicious code that are likely to be incorrect
­E: indicates that gcc should only preprocess the code; this is useful when you are having trouble understanding what gcc is doing with #include and #define, among other things
For example, to compile the file hello.c into the program hello, use
gcc  ­o  hello  hello.c 



0 comments: