• Appendix A, "Memory Addressing, Binary, and Hexadecimal," page 460, contains a tutorial on these topics before you start to learn the C language.. An editor is similar to a word proces
Trang 1representation makes C much more usable and meaningful You also should eventually become familiar with binary and hexadecimal numbers If you do not want to learn these topics, you can still become a very good C
programmer, but knowing what goes on ''under the hood" will make C more meaningful to you
• Appendix A, "Memory Addressing, Binary, and
Hexadecimal," page 460, contains a tutorial on these topics
before you start to learn the C language
The C Programming Process
To give C programming instructions to your computer, you need an editor and a C compiler An editor is similar to a word processor; it is a program
that enables you to type a C program into memory, make changes (such as moving, copying, inserting, and deleting text), and save the program more permanently in a disk file After you use the editor to type the program, you must compile it before you can run it The compiler takes the C instructions you write and converts those instructions to code the computer can
understand
Many of today's compilers come with their own built-in editor, as well as a
debugger to help locate and correct errors (called bugs) that creep into most
people's programs at one time or another during the writing stage Unless the only language in your background is an interactive language such as QBasic,
or a macro language such as those found in major software applications such
as Microsoft Office, it is most likely that you've used a debugger Only after compiling the C program that you write can your computer run the program and show the results from that program
NOTE
Actually, you might have a difficult time even locating a C compiler
Trang 2on C and uses a technique called object-oriented programming, OOP,
in which data values perform actions that the programmer gives them Therefore, a compiler such as Visual C++ or Borland C++ will recognize your C code once you've set the proper options to inform the compiler that you are writing C programs.
CAUTION
Today's compilers are often Windows-based UNIX computers also run windowing environments To write and execute a C program, you'll have to run the program in a text window Otherwise, you have to not only learn C, but also programming for the graphical user interface, such as Windows, as well—which is quite a feat This book teaches C
in a text-based environment so that you can concentrate on learning the language and all its nuances However, where you apply that
knowledge is often in a windows environment—after you learn the proper techniques for programming in a windowed environment.
Trang 3
programmer has more freedom with data storage, the languages do not check data type accuracy for the programmer The trade-off is worth it, however The designers of C did not want to hamper C programmers by adding lots of strict rules to the language
C is a small, block-structured programming language C has fewer than 40 keywords To make up for its small vocabulary, C has one of the largest
assortments of operators, such as those used for calculations and data
comparisons (The C-based languages have more operators than virtually every other language in existence, second only to APL.) The large number of operators in C could tempt programmers to write cryptic programs that do a lot with a small amount of code As you learn throughout this book, however, making the program more readable is more important than squeezing out bytes This book teaches you how to use the C operators to their fullest
extent, while maintaining readable programs
C's large number of operators (more than the number of keywords) requires a
more judicious use of an operator precedence table that states the order in
which C processes multiple operators inside a single statement
• Appendix B, ''C's Precedence Table," page 476, contains C's
operator precedence table that you can refer to as you learn C
Unlike most other languages that have only four or five levels of precedence,
C has 15 As you learn C, you need to master each of these 15 levels The precedence table is not as difficult as it sounds, but its importance cannot be overstated
C also has no input or output statements (You might want to read that
sentence again!) C has no commands that perform input or output This is one of the most important reasons why C and C-based languages are
available on so many different computers The I/O (input and output)
Trang 4QBasic, for instance, has almost 20 I/O commands—some of which write to the screen, to the printer, to a modem, and so on If you write a QBasic
program for a microcomputer, chances are sky-high that the program cannot run on a mainframe
C's input and output is performed through the abundant use of function calls.
With every C compiler comes a library of standard I/O functions that your program calls to perform input and output These standard routines are
hardware independent, because they work on any device and on any
computer that conforms to the ANSI C standard (as most do)
To master C completely, you need to be more aware of your computer's hardware than most other languages require you to be You certainly do not have to be a hardware expert, but understanding the internal data
Trang 5
While you are programming, remember the difference between a program and its output Your program contains only the C instructions that you write But the computer follows your instructions only after you run the program
Throughout this book's examples, you will often see a program listing (that
is, the C instructions in the program) followed by the results that occur when you run the program The results are the output of the program, and they go
to an output device such as the screen, the printer, or a disk file
All C programs use the C filename extension One way that C++ compilers know that you are compiling a C program is the C filename extension as opposed to the CPPextension C++ programs require
Proper Program Design
You must plan your programs before typing them into your C editor When builders construct houses, for example, they don't immediately grab their lumber and tools and start building They first find out what the owner of the house wants, draw up the plans, order the materials, gather the workers, and then they start building the house
Example
The hardest part of writing a program is breaking the problem into logical steps that the computer can follow Learning C is a requirement, but C is not the only thing you should consider There is a method of writing programs—
a formal procedure you should learn—that makes your programming job easier To write a program you should
1 Define the problem to be solved with the computer
Trang 63 Break the problem into logical steps to achieve this output, including
determining the input required by the program Often, the input comes from a user at the keyboard or from a data file
4 Write the program (using the editor)
5 Compile the program
6 Test the program to make sure it performs as you expect
As you can see from this procedure, the typing of your program occurs
toward the end of your programming This is important, because you first need to plan how to tell the computer how to perform each task Designing the program in advance makes the entire program structure more accurate, and helps to keep you from having to make many changes later A builder, for example, knows that a room is much harder to add after the house is built
So, if you do not properly plan every step, it is going to take you
Trang 7
language that is tedious, time-consuming, and difficult to change The Bell Labs designers knew they needed a higher-level programming language to implement their project quicker and make its code easier to maintain
Because other high-level languages at the time (COBOL, FORTRAN, PL/I, and Algol) were too slow to use for an operating system's code, the Bell Labs programmers decided to write their own language They based their new language on Algol and BCPL, two high-level but efficient languages used throughout the European markets, but rarely in America BCPL strongly influenced C, although BCPL did not offer the various data types that the makers of C required After a few versions, these Bell programmers
developed a language that met their goals very well C is efficient (it is
sometimes called a high low-level language due to its speed of execution)
and flexible, and contains the proper constructs enabling it to be maintained over time
How C Differs
If you have programmed before, you should understand a little about how C differs from other programming languages on the market (Today's new C-based languages, such as Java, also contain many of C's nuances.) Besides
being a very efficient language, C is known also as a weakly typed language;
that is, the data types you assign to variables do not necessarily require that same type of data (Proper coding techniques learned in this book, however, will help to eliminate this problem.) If you declare a numeric variable, and then decide to put a letter into it, C enables you to do this The data may not
be in the format you expect, but C does its best This is much different than stronger-typed languages such as COBOL and Pascal These languages
require rigid conformity to consistent data types; you cannot store, for
example, a character in a numeric storage location Although you can get into trouble a little more easily, C enables you to view the same data in different ways
Trang 8C is an extremely flexible language—particularly if it is to be used to write operating systems At any one time, an operating system does not know what
is coming down the line If, for example, an operating system expects a
number but instead receives a letter, the language used must be flexible
enough to handle this different data without aborting
NOTE
C's philosophy is this: Trust the programmers—they must know what they're doing!
The added responsibility of the weakly typed, flexible C language adds to the programmer's burden of being careful while programming Although the
Trang 9
longer to create the final, working program It is always more difficult to make major changes after your program is written
Planning and developing according to these six steps becomes much more important as you write longer and more complicated programs Throughout this book, you learn helpful tips for program design But now it's time to launch into C, so you can experience typing in your own program and then seeing it run
NOTE
This book teaches the ANSI C standard programming language,
programs that adhere to the standard C programming language adopted
by the American National Standards Institute (ANSI), and makes no attempt to tie in specific editor or compiler commands— there are too many on the market to cover them all in one book As long as you write ANSI C-specific programs, the tools you use to edit, compile, and run those programs are secondary Your goal of good programming
is the result of whatever applications you produce, not the tools you use to do it.
The Compile Process
After you type and edit your C program's source code, you must compile the program The process you use to compile your program depends on the version of C and the computer you are using
NOTE
Each program in this book contains a comment that specifies a recommended filename for the source program You do not have to follow the file-naming conventions used in this book; the filenames are only suggestions If you use a mainframe, you need to follow the dataset-naming conventions set up by your system administrator.
Unlike many other programming languages, your C program must be routed
through a preprocessor before it is compiled C source code can contain preprocessor directives that control the way your programs compile.
Trang 10company's system personnel to learn how to compile programs for your programming environment Again, learning the programming environment is not as critical as learning the C language The compiler is just a way to
transform your program from a source code file to an executable file
Your program must go through one additional stage after compiling and
before running It is called the linking, or the link editing, stage When your
program is linked, the compiler sends runtime information to your program such as the memory addresses where variables and code will be stored when your program executes You can also combine several compiled programs into one executable program by linking them Most of the time, however, your compiler initiates the link editing stage and you do not have to worry about controlling the linking process
Trang 11
Just a few years ago, C was the most popular programming language being used Programmers wrote C code for PCs, mainframes, and supercomputers
C was standardized so that the same program would run on every kind of computer using every kind of operating system available
Today, the use of C has dramatically decreased Rarely will a project be
written in C Programmers are using languages such as C++ and Java to create applications that run on standalone, networked, and Internet-based machines Yet, when learning to program, C is considered to be the one
language it is imperative a programmer master before moving on to the other languages in use today
TIP
Due to the Internet's phenomenal growth, new languages are appearing
to handle the different challenges that Internet-based processing requires Companies looking for programmers in these newer, and sometimes obscure, languages often advertise for C programming skills The companies know that someone well-versed in C can pick up these offshoot languages rapidly Therefore, learning C will boost your career potential even if you are never hired to write C-based code.
The reason for C's recommended mastery, despite its low levels of actual use,
is that C is the common denominator of many of today's languages; learn C and these languages will be simple to learn Languages such as C++ and Java are based on C In fact, many of the statements and commands in these newer languages are identical to the ones found in C Overall, C is much simpler to learn than these languages because it carries with it a much slimmer toolkit
of add-on procedures
CAUTION
When some people attempt to learn C, even if they are programmers in other languages, they find that C can be cryptic and difficult to
understand This does not have to be the case When you are taught to write clear and concise C code, in an order that builds on fundamental
Trang 12programming concepts, C is no more difficult to learn or use than any other programming language.
The History of C
Before you jump into C, you might find it helpful to know a little about the evolution of the C programming language Bell Labs first developed this language in the early 1970s, primarily so that Bell programmers could write
their UNIX operating system for a new DEC (Digital Equipment
Corporation) computer Bell Labs designed UNIX to run efficiently on small equipment, and it was the first operating system to be written entirely in a high-level programming language Until that time, operating systems were