C is a powerful and compact computer language that allows you to write programs that specify exactly what you want your computer to do. You’re in charge: you create a program, which is just a set of instructions, and your computer will follow them.
Programming
in C isn’t difficult, as you’re about to find out. I’m going to teach you all
the fundamentals of C programming in an
enjoyable and easy-to-understand way, and by the end of this chapter you’ll
have written your first few C programs. It’s as easy as that!
In this chapter you’ll learn:
• What the C
language standard is
• What the
standard library is
• How to
create C programs
• How C
programs are organized
• How to write
your own program to display text on the screen
The C
Language
Responsive Iframe
Maintain Aspect Ratio 16:9
Resize the window to see the effect.
C is
remarkably flexible. It has been used for developing just about everything you
can imagine by way of a computer program, from accounting applications to word
processing and from games to operating systems. It is not only the basis for
more advanced languages, such as C++, it is also used currently for developing
mobile phone apps in the form of Objective C. Objective C is standard C with a thin veneer of object-oriented
programming capability added. C is easy to learn because of its compactness.
Thus, C is an ideal first language if you have ambitions to be a programmer.
You’ll acquire sufficient knowledge for practical application development
quickly and easily.
The C language is defined by an
international standard, and the latest is currently defined by the
document ISO/IEC 9899:2011. The current
standard is commonly referred to as C11, and the language that I describe in
this book conforms to C11. You need to be aware that some elements of the
language as defined by C11 are optional.
This implies that a C compiler that conforms to the C11 standard may not
implement everything in the standard. (A
compiler is just a program that
converts your program written in terms you understand into a form your computer
understands.) I will identify any language feature in the book that is optional
so far as C11 is concerned, just so you are aware that it is possible that your
compiler may not support it.
It is also possible that a C11
compiler may not implement all of the language features mandated by the C11
standard. It takes time to implement new language capabilities, so compiler
developers will often take an incremental approach to implementing them. This
provides another reason why a program may not work. Having said that, I can
confirm from my own experience that the most common reason for things not
working in a C program, at least 99.9% of the time, is that a mistake has been
made.
The
Standard Library
The standard library for C is also specified
within the C11 standard. The standard library defines constants, symbols, and
functions that you frequently need when writing a C program. It also provides
some optional extensions to the basic C language. Machine-dependent facilities
such as input and output for your computer are implemented by the standard
library in a machine-independent form. This means that you write data to a disk
file in C in the same way on your PC as you would on any other kind of
computer, even though the underlying hardware processes are quite different.
The standard functionality that the library contains includes capabilities that
most programmers are likely to need, such as processing text strings or math
calculations. This saves you an enormous amount of effort that would be
required to implement such things yourself.
The standard
library is specified in a set of standard files called header files. Header files always have names with the extension .h.
To make a particular set of standard features available in your C program file,
you just include the appropriate standard header file in a way that I’ll
explain later in this chapter. Every program you write will make use of the
standard library. A summary of the header files that make up the standard
library is in Appendix E.
Learning C
If you are completely new to
programming, there are some aspects of C that you do not need to learn, at
least not the first time around. These are capabilities that are quite
specialized or used relatively infrequently. I have put all these together in
Chapter 14 so you will learn about them
when you are comfortable with the rest.
Although the
code for all the examples is available for download from the Apress web site (http://www.apress.com), I recommend that you type in all the
examples in the book, even when they are very simple. Keying stuff in makes it
less likely that you will forget things later. Don’t be afraid to experiment
with the code. Making mistakes is very educational in programming. The more
mistakes you make early on, the more you are likely to learn.
Creating C
Programs
There are four fundamental stages,
or processes, in the creation of any C program:
• Editing
• Compiling
• Linking
• Executing
You’ll soon
know all these processes like the back of your hand because you’ll be carrying
them out so often. First, I’ll explain what each process is and how it
contributes to the development of your C program.
Editing
Editing is the
process of creating and modifying C source code—the name given to the program
instructions you write. Some C compilers come with a specific editor program
that provides a lot of assistance in managing your programs. In fact, an editor
often provides a complete environment for writing, managing, developing, and
testing your programs.
This is sometimes called an integrated development environment
(IDE).
You can also
use a general-purpose text editor to create your source files, but the editor
must store the code as plain text without any extra formatting data embedded in
it. Don’t use a word processor such as Microsoft Word; word processors aren’t
suitable for producing program code because of the extra formatting information
they store along with the text. In general, if you have a compiler system with
an editor included, it will provide a lot of features that make it easier to
write and organize your source programs. There will usually be automatic
facilities for laying out the
programming
in C
program text appropriately and color
highlighting for important language elements, which not only makes your code
more readable but also provides a clear indicator when you make errors when
keying in such words.
If you’re
working with Linux, the most common text editor is the Vim editor. Alternately
you might prefer to use the GNU Emacs editor. With Microsoft Windows, you could
use one of the many freeware and shareware programming editors. These will
often provide help in ensuring your code is correct, with syntax highlighting
and autoindenting. There is also a version of Emacs for Microsoft Windows. The
Vi and VIM editors from the UNIX environment are available for Windows too, and
you could even use Notepad++ (http://notepad-plus-plus.org/).
Of course, you can also purchase one
of the professionally created programming development environments that support
C, such as those from Borland or Microsoft, in which case you will have very
extensive editing capabilities. Before parting with your cash though, it’s a
good idea to check that the level of C that is supported conforms to the
current C standard, C11. With some of the products out there that are primarily
aimed at C++ developers, C has been left behind somewhat.
Compiling
The compiler converts your source code into machine language and
detects and reports errors in the compilation process. The input to this stage
is the file you produce during your editing, which is usually referred to as a source file.
The compiler can detect a wide range
of errors that are due to invalid or unrecognized program code, as well as
structural errors where, for example, part of a program can never be executed.
The output from the compiler is known as object
code and it is stored in files called object
files, which usually have names with the extension .obj in the Microsoft
Windows environment, or .o in the Linux/UNIX environment. The compiler can
detect several different kinds of errors during the translation process, and
most of these will prevent the object file from being created.
The result of a successful
compilation is a file with the same name as that used for the source file, but
with the .o or .obj extension.
If you’re working in UNIX, at the
command line, the standard command to compile your C programs will be cc (or
the GNU’s Not UNIX [GNU] compiler, which is .gcc). You can use it like this:
cc -c myprog.c
where myprog.c is the name of the
source file that contains the program you want to compile. Note that if you
omit
the -c flag, your program will
automatically be linked as well. The result of a successful compilation will be
an object file.
Most C compilers will have a
standard compile option, whether it’s from the command line (such as cc
myprog.c) or a menu option from within an IDE (where you’ll find a Compile menu
option). Compiling from within an IDE is generally much easier than using the
command line.
Compilation is a two-stage process.
The first stage is called the preprocessing
phase, during which your code may be modified or added to, and the second
stage is the actual compilation that generates the object code. Your source
file can include preprocessing macros,
which you use to add to or modify the C program statements. Don’t worry if this
doesn’t make complete sense now. It will come together for you as the book
progresses.
Linking
The linker combines the object modules
generated by the compiler from source code files, adds required code modules
from the standard library supplied as part of C, and welds everything into an
executable whole. The linker also detects and reports errors; for example, if
part of your program is missing or a nonexistent library component is referenced.
In practice, a program of any
significant size will consist of several source code files, from which the
compiler generates object files that need to be linked. A large program may be
difficult to write in one working session, and it may be impossible to work
with as a single file. By breaking it up into a number of smaller source files
that each provide a coherent part of what the complete program does, you can
make the development of the program a lot easier. The source files can be
compiled separately, which makes eliminating simple typographical errors a bit
easier.
0 comments:
Post a Comment