1 / 42

# Chapter 7 - PowerPoint PPT Presentation

Chapter 7. Simple Date Types. Dr. Jiung-yao Huang Dept. Comm. Eng. Nat. Chung Cheng Univ. E-mail : [email protected] TA: 鄭筱親 陳昱豪. 本章重點. Enumerated type Declaring a function parameter Bisection method. outline. 7.1 REPRESENTATION AND CONVERSION OF NUMERIC TYPES

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about ' Chapter 7' - ardice

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### Chapter 7

Simple Date Types

Dr. Jiung-yao Huang

Dept. Comm. Eng.

Nat. Chung Cheng Univ.

E-mail : [email protected]

TA: 鄭筱親 陳昱豪

• Enumerated type

• Declaring a function parameter

• Bisection method

• 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

• 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

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

Figure 7.2 Program to Print Implementation-Specific Ranges for Positive Numeric Data

p.805, limits.h, float.h

%e : print DBL_MIN, DBL_MAX in scientific notation

• 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

• 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

• variable initialized

• int k = 5, m = 4, n;

• double x = 1.5, y = 2.1, z;

p.63 Table 2.9

• 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)

• 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’) …

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’

• 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

Figure 7.3 Program to Print Part of the Collating Sequence

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

Figure 7.4 Enumerated Type for Budget Expenses

Figure 7.4 Enumerated Type for Budget Expenses (cont’d)

Figure 7.4 Enumerated Type for Budget Expenses (cont’d)

• Syntax：

typedef enum

{identifier_list}

enum_type;

• Example：

typedef enum

{sunday, monday, tuesday, wednesday, thursday, friday, saturday}

day_t;

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

Figure 7.5 Accumulating Weekday Hours Worked

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

Figure 7.6 Six Roots for the Equation f(x) = 0

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.

x Producedleft

+ xright

xmid =

2.0

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

• Analysis

• Problem Inputs

• double x_left

• double x_right

• double epsilon

• double f(double farg)

• Problem Outputs

• double root

• int *errp

Figure 7.8 Produced Change of Sign Implies an Odd Number of Roots

Figure 7.9 ProducedThree PossibilitiesThat Arise When the Interval [xleft, xright] Is Bisected

• 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

• 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

• 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

• 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)

Figure 7.10 Produced Finding a Function Root Using the Bisection Method

Figure 7.10 Produced Finding a Function Root Using the Bisection Method (cont’d)

Figure 7.10 Produced Finding a Function Root Using the Bisection Method (cont’d)

Figure 7.11 Produced Sample Run of Bisection Program with Trace Code Included

7.5 Common Programming Errors Produced

• 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

Chapter Review(1) Produced

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

Chapter Review(2) Produced

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