operating system discussion section. the basics of c reference: lecture note 2 and 3 notes.html

24
Operating System Discussion Section

Upload: franklin-morgan

Post on 18-Jan-2018

223 views

Category:

Documents


0 download

DESCRIPTION

The 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 it’s 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.

TRANSCRIPT

Page 1: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

Operating System

Discussion Section

Page 2: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

The Basics of C

Reference: Lecture note 2 and 3

http://www.cise.ufl.edu/class/cgs3460fa09/notes.html

Page 3: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

The 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 it’s 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.

Page 4: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

The 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

Page 5: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

Comments• 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.

This type of comment is terminated by the end of the line.

Page 6: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

Example: Printing a Message/* Illustrates comments, strings, and the printf

function */

#include <stdio.h>

int main(void)

{

printf("To C, or not to C: ");

printf("that is the question.\n");

return 0;

}

Page 7: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

Example: Computing the Volume/* Illustrates the use of variables, expressions, and assignment statements */#include <stdio.h>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;}

Page 8: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

Defining Constants

• A macro definition has the form

#define identifier replacement-list

• Macros often represent constants: values that won’t 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.

Page 9: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

Defining ConstantsIf the replacement list contains operators, it is best to enclose it in parentheses.

#define EOF (-1)#define TWO_PI (2*3.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.

Page 10: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

Example: Converting Fahrenheit to Celsius

/* Illustrates macro definition, floating-point numbers, and scanf */

#include <stdio.h>#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;}

Page 11: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

Input and Output

• Printf

• Scanf

Page 12: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

The 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);

Page 13: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

The printf Function• Warning: C compilers don’t 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, there’s no check that a conversion specification is appropriate for the type of item being printed:

printf("%f %d\n", i, x);

Page 14: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

Conversion SpecificationsA 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)

Page 15: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

Conversion Specifications• X is one of the following letters:

d - decimal signed integere - exponential floating pointf - fixed decimal floating pointg - whichever of e or f produces a shorter string

• This is not a complete description of conversion specifications.

Page 16: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

printf Example• Sample program:

#include <stdio.h>int main(void) { int i; float f; i = 40; f = 839.21; printf("|%d|%5d|%-5d|%5.3d|\n", i, i, i, i); printf("|%10.3f|%10.3e|%-10g|\n", f, f, f); return 0;}

• Output:|40| 40|40 | 040|| 839.210| 8.392e+02|839.21 |

Page 17: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

Escape SequencesString 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

Page 18: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

Escape 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");

Page 19: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

The 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.

Page 20: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

The scanf Function• scanf format strings are similar to printf format strings, but usually contain only conversion specifications:

int i, j; float x, y; scanf("%d%d%f%f", &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.

Page 21: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

How scanf Worksscanf 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("%d%d%f%f", &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

Page 22: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

The 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 read5/ 28/ 2002

but not5 / 28 / 2002

Page 23: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

The 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 read5 / 28 / 2002

and all similar inputs, regardless of the amount of space before and after each / symbol.

Page 24: Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3  notes.html

The 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.