Title: Operating System
1Operating System
2The Basics of C
- Reference
- Lecture note 2 and 3 http//www.cise.ufl.edu/cl
ass/cgs3460fa09/notes.html
3The General Form of a Simple Program
The simplest C programs have the following
form int main(void) declarations
statements The word int may be omitted
(although its good practice to include it). The
use of void is also optional. Each declaration
and each statement (except for compound
statements) must end with a semicolon.
4The General Form of a Simple Program
C99 does not require that declarations precede
statements. However, each variable must be
declared before it is used for the first time
5Comments
- Begin with / and end with /.
- / This is a comment /
- May extend over more than one line.
- / This comment starts on one line,
- but ends on another. /
- Warning Failing to close a comment will cause
the compiler to ignore part of your program. - printf("Hello") / forgot to close this
comment... -
- printf("Goodbye") / so it ends here /
- In C99, comments can also be written this way
- // This is a comment.
6Example Printing a Message
/ Illustrates comments, strings, and the printf
function / include ltstdio.hgt int
main(void) printf("To C, or not to C ")
printf("that is the question.\n") return 0
7Example Computing the Volume
/ Illustrates the use of variables, expressions,
and assignment statements / include
ltstdio.hgt int main(void) int height, length,
width, volume height 5 length 20 width
10 volume height length width printf("The
height is d\n", height) printf("The length is
d\n", length) printf("The width is d\n",
width) printf("The volume is d\n",
volume) return 0
8Defining Constants
A macro definition has the form define
identifier replacement-list Macros often
represent constants values that wont change
during program execution define N 100 Macro
definitions are handled by the C preprocessor.
Wherever the identifier appears later in the
source file, the preprocessor replaces it by
the replacement list.
9Defining Constants
If the replacement list contains operators, it is
best to enclose it in parentheses. define EOF
(-1) define TWO_PI (23.14159) By convention,
names of C constants contain only upper-case
letters. Advantages of defining constants
Programs are easier to read. Programs are
easier to modify. Helps reduce errors of
inconsistent use, as well as
typographical errors.
10Example Converting Fahrenheit to Celsius
/ Illustrates macro definition, floating-point
numbers, and scanf / include
ltstdio.hgt define FREEZING_PT 32.0 define
SCALE_FACTOR (5.0 / 9.0) int main(void) float
fahrenheit, celsius printf("Enter Fahrenheit
temperature ") scanf("f", fahrenheit) celsius
SCALE_FACTOR (fahrenheit -
FREEZING_PT) printf("\nCelsius equivalent is
.1f\n", celsius) return 0
11Input and Output
12The printf Function
- The first argument in a call of printf is a
string, which may contain both ordinary
characters and conversion specifications, which
begin with the symbol. - Ordinary characters are printed as they appear in
the string conversion specifications are matched
one-by-one with the remaining arguments in the
call of printf - int i, j
- float x, y
- printf("i d, j d, x f, y f\n",
- i, j, x, y)
13The printf Function
- Warning C compilers dont check that the number
of conversion specifications in a format string
matches the number of output items - printf("d d\n", i) / too few items /
- printf("d\n", i, j) / too many items /
- Furthermore, theres no check that a conversion
specification is appropriate for the type of item
being printed - printf("f d\n", i, x)
14Conversion Specifications
- A conversion specification has the form -m.pX
- m (optional) specifies the minimum field width.
- - (optional) indicates left justification
within the field the default is right
justification. - .p (optional) specifies
- Number of digits after the decimal point (for a
floating point number) - Minimum number of digits to print (for an integer)
15Conversion Specifications
- X is one of the following letters
- d - decimal signed integer
- e - exponential floating point
- f - fixed decimal floating point
- g - whichever of e or f produces a shorter
string - This is not a complete description of conversion
specifications.
16printf Example
Sample program include ltstdio.hgt int
main(void) int i float f i 40 f
839.21 printf("d5d-5d5.3d\n", i, i,
i, i) printf("10.3f10.3e-10g\n", f, f,
f) return 0 Output 40 4040
040 839.210 8.392e02839.21
17Escape Sequences
- String literals sometimes need to contain control
characters (such as tab and newline) or
characters that have a special meaning in C (such
as "). These characters can be represented by
escape sequences. - Character escapes consist of \ followed by one
character - alert (bell) \a backslash \\
- backspace \b question mark \?
- form feed \f single quote \'
- new-line \n double quote \"
- carriage return \r
- horizontal tab \t
- vertical tab \v
18Escape Sequences
- Writing the \a escape causes a beep.
- Writing the \n escape causes the cursor to move
to the beginning of the next line. - Writing the \t escape causes the cursor to move
to the next tab stop. - The \" escape allows us to print the double
quote character printf("\"Hello!\"") - String literals may contain any number of escape
sequences - printf("Item\tUnit\tPurchase\n\tPrice\tDate\n")
19The scanf Function
- scanf requires a format string, followed by
variables into which input is to be stored. In
most cases, each variable must be preceded by the
symbol . - Warning Forgetting to put the symbol in
front of a variable will have unpredictable and
possibly disastrous results.
20The scanf Function
scanf format strings are similar to printf
format strings, but usually contain only
conversion specifications int i, j float
x, y scanf("ddff", i, j, x, y)
Note When used with scanf, the e, f, and g
conversions are identical each causes scanf to
read a floating-point number. A sign, exponent,
and decimal point may or may not be present.
21How scanf Works
scanf ignores white-space characters (blanks,
tabs, and new-line characters) when searching for
an input item. If scanf is used in the following
way scanf("ddff", i, j, x, y) the
input could be split over several lines 1 -20
.3 -4.0e3 or put on a single line 1 -20 .3
-4.0e3
22The scanf Format String
A scanf format string may contain ordinary
characters in addition to conversion
specifications. A non-white-space character in
a format string must match the next input
character or scanf terminates without reading
further. (The non-matching character can be read
by a later call of scanf.) The call scanf("d/d/
d", month, day, year) will read 5/ 28/
2002 but not 5 / 28 / 2002
23The scanf Format String
A white-space character in a format string
matches zero or more white-space characters in
the input. The call scanf("d /d /d", month,
day, year) will read 5 / 28 / 2002 and all
similar inputs, regardless of the amount of space
before and after each / symbol.
24The scanf Format String
-
- Warning Putting a new-line character at the end
of a scanf format string is usually a bad idea - scanf("d\n", i)
- After reading an integer, scanf skips
white-space characters until it finds a
non-white-space character. An interactive program
will hang until the user enters a nonblank
character.