1 / 29

16.216 ECE Application Programming

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

Download Presentation

16.216 ECE Application Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 16.216ECE Application Programming Instructor: Dr. Michael Geiger Fall 2014 Lecture 4: Operators Basic variable output with printf()

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

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

  4. Arithmetic Operations ECE Application Programming: Lecture 4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

More Related