290 likes | 359 Vues
16.216 ECE Application Programming. Instructor: Dr. Michael Geiger Fall 2014 Lecture 4: Operators Basic variable output with printf(). Lecture outline. Announcements/reminders Program 1 regrades due 9/11 Program 2 due 9/17 Sign up for the course discussion group
E N D
16.216ECE Application Programming Instructor: Dr. Michael Geiger Fall 2014 Lecture 4: Operators Basic variable output with printf()
Lecture outline • Announcements/reminders • Program 1 regrades due 9/11 • Program 2 due 9/17 • Sign up for the course discussion group • No office hours today (ECE Dept. meeting) • Group hours start tomorrow: Ball 314, 1-4 • Review • Variables • Today’s lecture • Operators • Basic variable output with printf() ECE Application Programming: Lecture 4
Review: Variables • Four basic data types • int, float, double, char • Variables • Have name, type, value, memory location • Variable declarations: examples • int x; • float a, b; • double m = 2.35; • Assignments: examples with variables above • a = 7.5; • x = a + 2; x = 9, not 9.5 • m = m – 1; m = 1.35 ECE Application Programming: Lecture 4
Arithmetic Operations ECE Application Programming: Lecture 4
Results of arithmetic operations • 3+7 10 • - 3.0 15.0 (using non-integer makes result double precision) • 12.62 + 9.8 22.42 • .08*12.3 0.984 • 12.0/ 2.0 6.0 • 10/5 2 • 10/3 3 (not 3.333…) • 10 % 3 1 • 12 % 5 2 ECE Application Programming: Lecture 4
Operators (cont.) • Previous operators are binary • Deal with two values • C also supports some unary operators • For now, we’ll simply deal with unary negation • e.g., if x = 3, the statement -x; produces the value -3 • Important note:The statement above does not change the value of x ECE Application Programming: Lecture 4
Operators and variables • Operators can be used either with constants or variables • Examples: int main() { int w, x, y, z; w = 3 + 2; // w = 5 x = -w; // x = -5 y = x – 7; // y = -12 z = w * y; // z = -60 return 0; } ECE Application Programming: Lecture 4
Operators (cont.) • More complex statements are allowed • e.g. x = 1 + 2 - 3; • Parentheses help you prioritize parts of statement • Makes difference with order of operations • x = 1 + 2 * 3; is different than x = (1 + 2) * 3; ECE Application Programming: Lecture 4
Example: Arithmetic operations • Evaluate each of the following expressions, including the type (int or double) in your answer • 19/3 • 3/19 • 19%3 • 3%19 • 5 + 7/2 • 5.0 + 7/2 • 5 + 7.0/2 • 5 * 3 % 3 / 6 + 14 + 10 / 2 • 5 * (3 % 3) / 6 + 14.0 + 10/3 ECE Application Programming: Lecture 4
Example solution • 19/3 = 6 (integer division) • 3/19 = 0 (integer division) • 19%3 = 1 • 3%19 = 3 • 5 + 7/2 = 5 + 3 = 8 • 5.0 + 7/2 = 5.0 + 3 = 8.0 • 5 + 7.0/2 = 5 + 3.5 = 8.5 ECE Application Programming: Lecture 4
Example solution (cont.) • For each of the following, underlined part(s) evaluated first at each step • 5 * 3 % 3 / 6 + 14 + 10 / 2 = 15 % 3 / 6 + 14 + 5 = 0 / 6 + 14 + 5 = 0 + 14 + 5 = 19 • 5 * (3 % 3) / 6 + 14.0 + 10/3 = 5 * 0 / 6 + 14.0 + 10/3 = 0 / 6 + 14.0 + 3 = 0 + 14.0 + 3 = 17.0 ECE Application Programming: Lecture 4
I/O basics • Need ability to • Print variables (or results calculated using them) • Read values from input • Output: printf() • Already seen basics • Input: scanf() ECE Application Programming: Lecture 4
Basic printf() formatting • To print variables/constants, insert %<type> (format specifier) in your format string • %c: single character • %d or %i: signed decimal integer • %u: unsigned decimal integer • %x or %X: unsigned hexadecimal integer • %f: float; %lf: double • Prints 6 digits after decimal point by default • %s: string • When printed, format specifier is replaced by value of corresponding expression • If x is 3, printf("x + x = %d", x + x) prints: x + x = 6 ECE Application Programming: Lecture 4
printf() example float a=67.49,b=9.999925;printf("hello %f there %f\n",a,b);printf("%f%f%f%f\n",a,a,b,b);printf("a=%f, b=%f",a,b);printf("Cool huh?\n"); Printed: hello 67.490000 there 9.99992567.49000067.4900009.9999259.999925a=67.490000, b=9.999925Cool huh? ECE Application Programming: Lecture 4
Example: printf() • Show the output from each programs(assume #include <stdio.h> for all) void main() { inti=2, j=3, k, m; k = j * i; m = i + j; printf("%d %d %d %d\n", i, j, k, m); } void main() { double f, g; f = 1.0 / 4.0; g = f * 20; printf("f = %lf,\ng = %lf\n", f, g); } void main() { int a = 5, b = 2; printf("Output%doesn't%dmake%dsense", a, b, a + b); } ECE Application Programming: Lecture 4
Example solution void main() { int i=2, j=3, k, m; k = j * i; k = 2 * 3 = 6 m = i + j; m = 2 + 3 = 5 printf("%d %d %d %d\n", i, j, k, m); } Output:2 3 6 5 ECE Application Programming: Lecture 4
Example solution (cont.) void main() { double f, g; f = 1.0 / 4.0; f = 0.25 g = f * 20; g = 0.25 * 20 = 5 printf("f = %lf,\ng = %lf\n", f, g); } Output: f = 0.250000, g = 5.000000 (remember, 6 places after decimal point printed by default with floating-point data) ECE Application Programming: Lecture 4
Example solution (cont.) void main() { int a = 5, b = 2; printf("Output%doesn't%dmake%dsense", a, b, a + b); } Output: Output5oesn't2make7sense (Every %d gets replaced with a number, which is underlined above to show what happens—in practice, the console isn’t going to underline your output!) ECE Application Programming: Lecture 4
printf() details • Detailed slides on printf() follow • Skip these if you don’t want to go overboard with the full details of how the function works ECE Application Programming: Lecture 4
printf() Documentation info: int printf(const char *format [,argument] ...) Type of value returned Name of function First arg type and formal name(required, since no brackets) ( ) indicate printf is a function next argument type and name(in this case it may be any simple type) … indicates previous argument repeated zero or more times [ ] indicate optional arguments ECE Application Programming: Lecture 4
printf() int printf(const char *format [,argument] ...) • Type of value returned (int in this case) • All functions return at most one value. • The type void is used to indicate a function returns no value • There is no requirement to use the value returned. • The printf() function returns the number of characters printed (including spaces); returns negative value if error occurs. ECE Application Programming: Lecture 4
printf() int printf(const char *format [,argument] ...) • Name of function; printf( ) in this case • A function name is ALWAYS followed by a set of (), even if the function takes no arguments ECE Application Programming: Lecture 4
printf() int printf(const char *format [,argument] ...) • Type (const char *) and name (format) of first argument • For the moment, const char * can be thought of as a series of characters enclosed in double quotes • The name format may be thought of as a code indicating how the arguments are to be interpreted, and how the output should look. ECE Application Programming: Lecture 4
printf() int printf(const char *format [,argument] ...) • zero of more optional arguments, each preceded by a comma • zero because of the … • optional because of the [ ] ECE Application Programming: Lecture 4
scanf() function • Used to get input from user • Returns number of items successfully assigned • First argument is format specifiers • Essentially same as printf() format string • Every format specifier (%d, %lf, etc.) corresponds to an input value to be read • Format string can contain other characters, which will be ignored if they are present • If they’re not, you have a problem … • Remaining arguments are variable addresses • Use “address of” operator: & • For example, given: int a; The address of a is: &a ECE Application Programming: Lecture 4
scanf() function Documentation info: int scanf(const char *format [,argument] ...) format - is format specifiers similar to printf() specifiers arguments - are ADDRESSES of where to store what the user enters ECE Application Programming: Lecture 4
scanf() function int hours;float rate; scanf("%d %f",&hours,&rate); If user types: 34 5.7 hours ? 1284 rate ? 1288 hours 34 1284 rate 5.7 1288 ECE Application Programming: Lecture 4
scanf() format strings • scanf() will skip space characters for all types but %c • Read input until it finds something that’s not a space, then see if it matches the desired type • If type matches, value will be stored in specified variable • If type doesn’t match, nothing stored; function stops • Space in string only matters if using %c • %c will read any character • Includes spaces, newlines, etc. • Example: given scanf("%d%c", &i, &c); • Input: 3a i = 3, c = 'a' • Input: 3 a i = 3, c = ' ' • Input: 3 a i = 3, c = '\n' (assuming newline directly after 3) ECE Application Programming: Lecture 4
Final notes • Next time • scanf() examples • PE1: Flowcharts & debugging • Reminders: • Program 2 due 9/17 • Sign up for the course discussion group • No office hours today (ECE Dept. meeting) • Group hours start tomorrow: Ball 314, 1-4 ECE Application Programming: Lecture 4