Download presentation
Presentation is loading. Please wait.
1
Chapter 7 Simple Date Types Dr. Jiung-yao Huang Dept. Comm. Eng. Nat. Chung Cheng Univ. E-mail : comjyh@ccu.edu.tw TA: 鄭筱親 陳昱豪
2
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-2 本章重點 Enumerated type Declaring a function parameter Bisection method
3
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-3 outline 7.1 REPRESENTATION AND CONVERSION OF NUMERIC TYPES 7.2 REPRESENTATION AND CONVERSION OF TYPE CHAR 7.3 ENUMERATED TYPES 7.4 ITERATIVE APPROXIMATIONS CASE STUDY: BISECTION METHOD FOR FINDING ROOTS 7.5 COMMON PROGRAMMING ERRORS
4
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-4 7.1 Representation and Conversion of Numeric Types Simple data type A data type used to store a single value Uses a single memory cell to store a variable Different numeric types has different binary strings representation in memory
5
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-5 Figure 7.1 Internal Formats of Type int and Type double mantissa: binary fraction between 0.5~1.0 for positive numbers -0.5~-1.0 for negative numbers exponent: integer real number: mantissa x 2 exponent
6
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-6 Figure 7.2 Program to Print Implementation- Specific Ranges for Positive Numeric Data %e : print DBL_MIN, DBL_MAX in scientific notation p.805, limits.h, float.h
7
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-7 7.1 (cont) Integer Types in C TypeRange in Typical Microprocessor Implementation short-32767 ~ 32767 unsigned short0 ~ 65535 int-32767 ~ 32767 unsigned0 ~ 65535 long-2147483647 ~ 2147483647 unsigned long0 ~ 4294967295
8
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-8 7.1 (cont) Floating-Point Types in C TypeApproximate Range* Significant Digits* float10 -37 ~10 38 6 double10 -307 ~10 308 15 long double10 -4931 ~10 4932 19
9
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-9 7.1 (cont) Numerical Inaccuracies Representational error (round-off error) An error due to coding a real number as a finite number of binary digits Cancellation error An error resulting from applying an arithmetic operation to operands of vastly different magnitudes; effect of smaller operand is lost
10
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-10 7.1 (cont) Numerical Inaccuracies Arithmetic underflow An error in which a very small computational result is represented as zero Arithmetic overflow An error that is an attempt to represent a computational result that is too large
11
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-11 7.1 (cont) Automatic Conversion of Data Types variable initialized int k = 5, m = 4, n; double x = 1.5, y = 2.1, z;
12
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-12 7.1 (cont) Automatic Conversion of Data Types Context of ConversionExampleExplanation Expression with binary operator and operands of different numeric types k + x value is 6.5 Value of int k is converted to type double Assignment statement with type double target variable and type int expression z = k / m; expression value is 1; value assigned to z is 1.0 Expression is evaluated first. The result is converted to type double Assignment statement with type int target variable and type double expression n = x * y; expression value is 3.15; value assigned to n is 3 Expression is evaluated first. The result is converted to type int
13
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-13 7.1 (cont) Explicit Conversion of Data Types cast an explicit type conversion operation not change what is stored in the variable Ex. frac = (double) n1 / (double) d1; Average = (double) total_score / num_students (p.63) p.63 Table 2.9
14
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-14 7.2 Representation and Conversion of Type char A single character variable or value may appear on the right-hand side of a character assignment statement. Character values may also be compared, printed, and converted to type int. #define star ‘*’ char next_letter = ‘A’; if (next_letter < ‘Z’) …
15
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-15 7.2 (cont) Three Common character codes (Appendix A) Digit character ASCII ‘0’ ~’9’ have code value 48~57 ‘0’ < ‘1’ < ‘2’…….< ‘9’ Uppercase letters ASCII ‘A’~’Z’ have code values 65~90 ‘A’ < ‘B’ < ‘C’……< ‘Z’ Lowercase letters ASCII ‘a’~’z’ have code values 97~122 ‘a’ < ‘b’ < ‘c’…….< ‘z’
16
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-16 7.2 (cont) Example 7.1 collating sequence A sequence of characters arranged by character code number Fig. 7.3 uses explicit conversion of type int to type char to print part of C collating sequence
17
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-17 Figure 7.3 Program to Print Part of the Collating Sequence
18
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-18 7.3 Enumerated Types Enumerated type A data type whose list of values is specified by the programmer in a type declaration Enumeration constant An identifier that is one of the values of an enumerated type Fig. 7.4 shows a program that scans an integer representing an expense code and calls a function that uses a switch statement to display the code meaning.
19
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-19 Figure 7.4 Enumerated Type for Budget Expenses
20
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-20 Figure 7.4 Enumerated Type for Budget Expenses (cont’d)
21
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-21 Figure 7.4 Enumerated Type for Budget Expenses (cont’d)
22
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-22 7.3 (cont) Enumerated Type Definition Syntax : typedef enum {identifier_list} enum_type; Example : typedef enum {sunday, monday, tuesday, wednesday, thursday, friday, saturday} day_t;
23
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-23 7.3 (cont) Example 7.3 The for loop in Fig. 7.5 scans the hours worked each weekday for an employee and accumulates the sum of these hours in week_hours.
24
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-24 Figure 7.5 Accumulating Weekday Hours Worked
25
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-25 7.4 Iterative Approximations root (zero of a function) A function argument value that causes the function result to be zero Bisection method Repeatedly generates approximate roots until a true root is discovered.
26
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-26 Figure 7.6 Six Roots for the Equation f(x) = 0
27
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-27 Figure 7.7 Using a Function Parameter Declaring a function parameter is accomplished by simply including a prototype of the function in the parameter list.
28
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-28 7.4 (cont) Calls to Function evaluate and the Output Produced Call to evaluateOutput Produced evaluate(sqrt, 0.25, 25.0, 100.0) f(0.25000)=0.50000 f(25.00000)=5.00000 f(100.00000)=10.00000 evaluate(sin, 0.0, 3.14156, 0.5*3.14156) f(0.00000)=0.00000 f(3.14159)=0.00000 f(1.57079)=1.00000
29
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-29 7.4 (cont) Case Study: Bisection Method for Finding Roots Problem Develop a function bisect that approximates a root of a function f on an interval that contains an odd number of roots. Analysis x mid = x left + x right 2.0
30
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-30 7.4 (cont) Case Study: Bisection Method for Finding Roots Analysis Problem Inputs double x_left double x_right double epsilon double f(double farg) Problem Outputs double root int *errp
31
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-31 Figure 7.8 Change of Sign Implies an Odd Number of Roots
32
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-32 Figure 7.9 Three Possibilities That Arise When the Interval [xleft, xright] Is Bisected
33
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-33 7.4 (cont) Case Study: Bisection Method for Finding Roots Design Initial Algorithm 1.if the interval contains an even number of roots 2.Set error flag 3.Display error message else 4.Clear error flag 5.repeat as long as interval size is greater than epsilon and root is not found 6.Compute the function value at the midpoint of the interval 7.if the function value is zero, the midpoint is a root else 8.Choose the left or right half of the interval in which to continue the search 9.Return the midpoint of the final interval as the root
34
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-34 7.4 (cont) Case Study: Bisection Method for Finding Roots Design Program variables int root_found double x_mid double f_left, f_mid, f_right Refinement 1.1 f_left = f(x_left) 1.2 f_right = f(x_right) 1.3 if signs of f_left and f_right are the same
35
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-35 7.4 (cont) Case Study: Bisection Method for Finding Roots Design Refinement 5.1 while x_right – x_left > epsilon and !root_found 8.1 if root is in left half of interval (f_left*f_mid<0.0) 8.2 Change right end to midpoint else 8.3 Change left end to midpoint Implementation (Figure 7.10)
36
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-36 Figure 7.10 Finding a Function Root Using the Bisection Method
37
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-37 Figure 7.10 Finding a Function Root Using the Bisection Method (cont’d)
38
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-38 Figure 7.10 Finding a Function Root Using the Bisection Method (cont’d)
39
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-39 Figure 7.11 Sample Run of Bisection Program with Trace Code Included
40
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-40 7.5 Common Programming Errors Arithmetic underflow and overflow resulting from a poor choice of variable type are causes of erroneous results. Programs that approximate solutions to numerical problems by repeated calculations often magnify small errors. Not reuse the enumerated identifiers in another type or as a variable name C does not verify the value validity in enum variables
41
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-41 Chapter Review(1) Type int and double have different internal representations. Arithmetic with floating-point data may not be precise, because not all real numbers can be represented exactly. Type char data are represented by storing a binary code value for each symbol. Defining an enumerated type requires listing the identifier that are the values of the type.
42
中正大學通訊工程系 潘仁義老師 Advanced Network Technology Lab 3-42 Chapter Review(2) A variable or expression can be explicitly converted to another type by writing the new type’s name in parentheses before the value to convert. A function can take another function as a parameter. The bisection method is a technique for iterative approximation of a root of a function.
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.