Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Operating System Discussion Section. The Basics of C Reference: Lecture note 2 and 3 notes.html."— Presentation transcript:

1 Operating System Discussion Section

2 The Basics of C Reference: Lecture note 2 and 3 http://www.cise.ufl.edu/class/cgs3460fa09/ notes.html

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

4 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

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

6 Example: Printing a Message /* Illustrates comments, strings, and the printf function */ #include int main(void) { printf("To C, or not to C: "); printf("that is the question.\n"); return 0; }

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

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

9 Defining Constants If 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.

10 Example: Converting Fahrenheit to Celsius /* Illustrates macro definition, floating-point numbers, and scanf */ #include #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; }

11 Input and Output Printf Scanf

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

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

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

15 Conversion 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.

16 printf Example Sample program: #include 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 |

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

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

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

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

21 How 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("%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

22 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 read 5/ 28/ 2002 but not 5 / 28 / 2002

23 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 read 5 / 28 / 2002 and all similar inputs, regardless of the amount of space before and after each / symbol.

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


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

Similar presentations


Ads by Google