egr 2261 unit 2 basic elements of c++ read malik, chapter 2. homework #2 and lab #2 due next week....

74
EGR 2261 Unit 2 Basic Elements of C++ Read Malik, Chapter 2. Homework #2 and Lab #2 due next week. Quiz next week.

Upload: aubrie-price

Post on 02-Jan-2016

216 views

Category:

Documents


0 download

TRANSCRIPT

EGR 2261 Unit 2Basic Elements of C++

Read Malik, Chapter 2. Homework #2 and Lab #2 due next

week. Quiz next week.

A Quick Look at a C++ Program

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 2

A Quick Look at a C++ Program (cont’d.)

• Sample run:

3C++ Programming: From Problem Analysis to Program Design, Seventh Edition

A Quick Look at a C++ Program (cont’d.)

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 4

A Quick Look at a C++ Program(cont’d.)

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 5

A Quick Look at a C++ Program (cont’d.)

• Variable: a memory location whose contents can be changed.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 6

Figure 2-2 Memory allocation after the four variable declaration statements

Figure 2-3 Memory spaces after the statement length = 6.0; executes

? ? ? ?

? ? ?

The Basics of a C++ Program

• Function (or subprogram): a collection of statements that, when executed, accomplishes something useful.– May be predefined or user-defined.

• Syntax rules: rules that specify which statements (instructions) are legal or valid.

• Semantic rules: determine the meaning of the instructions.

• Programming language: a set of rules, special symbols, and reserved words.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 7

Special Symbols

• Some special symbols in C++ :

• This is not a complete list of special symbols.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 8

Reserved Words (Keywords)

• Reserved words (or keywords):– You cannot redefine these words.– You cannot use them for anything other than their

intended use.Examples:

– int– using– return

– See Appendix A (next slide) in textbook for complete list.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 9

Tokens

• Tokens: the smallest meaningful units of a program.• C++ tokens include special symbols, reserved words,

and identifiers.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 11

Reserved words Identifier Special symbol

Identifiers

• Identifier: the name of something that appears in a program.– Consists of letters, digits, and the underscore character (_).– Must begin with a letter or underscore.

• C++ is case sensitive.– NUMBER is not the same as number.

• Two predefined identifiers are cout and cin.• Unlike reserved words, predefined identifiers may be

redefined, but it is not a good idea.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 12

Identifiers (cont’d.)

• Examples of legal identifiers in C++:• first• payRate2• Employee_Salary

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 13

Comments

• Comments are for the reader, not the compiler.• Two types:

– Single line: begin with //// This is a C++ program. // Welcome to C++ Programming.

– Multiple line: enclosed between /* and *//* You can include comments that can occupy several lines.*/

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 14

Whitespace

• Every C++ program contains whitespace.– Includes blanks, tabs, and newline characters.

• Whitespace must separate reserved words and identifiers from each other.

• Proper use of whitespace (such as indenting) can also make programs more readable.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 15

Data Types

• Data type: set of values together with a set of allowed operations on those values.

• C++ data types fall into three categories:– Simple data types– Structured data types– Pointers

• For the next few weeks we’ll mostly use simple data types.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 16

Simple Data Types

• Three categories of simple data:– Integral: integers (numbers without a decimal).

• Can be further categorized:– char, short, int, long, long long, bool, unsigned char, unsigned short, unsigned int, unsigned long

– Floating-point: decimal numbers.• Can be further categorized:

– float, double, long double– Enumeration type: user-defined data type. We won’t use.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 17

Partial Hierarchy of Data Types

Data Types

Simple Data Types

Integral(int, bool,

char, …)

Floating-Point

(float, double,

…)

Enumeration

Structured Data Types Pointers

Simple Data Types (cont’d.)

• The ranges shown above are typical. Different compilers may allow different ranges of values.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 19

int Data Type

• Examples of int data:-6728078+763

• Do not use commas within numbers. Typing 1,430 instead of 1430 will usually cause an error.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 20

bool Data Type

• The bool type has only two possible values: true and false.– For keeping track of true/false (Boolean)

information, such as whether a person’s age is greater than 21.

• This is considered an integral data type because it’s actually implemented as a 0 for false and a 1 for true.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 21

char Data Type

• Used for single characters: letters, digits, and special symbols.

• Each character is enclosed in single quotes:– 'A', 'a', '0', '*', '+', '$', '&'

• A blank space is a character.– Written ' ', with a space left between the single quotes.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 22

char Data Type (cont’d.)

• Different character sets exist, but we’ll use ASCII.• ASCII: American Standard Code for Information

Interchange– Each of 128 integer values (from 0 to 127) represents a

different character; see Appendix C in textbook (next slide).

– Collating sequence: Characters have a predefined ordering based on the ASCII numeric value.For example, the ASCII code for 'A' is 65 and the ASCII code for ‘D' is 68, so we can say that 'A' < ‘D'.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 23

Floating-Point Data Types

• Non-integer numbers can be entered or displayed using decimal notation or using a modified scientific notation.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 25

Floating-Point Data Types (cont’d.)

• float– Typical Range: -3.4E+38 to 3.4E+38 (four bytes)

• double– Typical Range: -1.7E+308 to 1.7E+308 (eight bytes)

• Ranges of data types are system-dependent.• We’ll generally use double when we want a

floating-point number.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 26

Review: Simple Data Types

• Three categories of simple data:– Integral: integers (numbers without a decimal)

• Can be further categorized:– char, short, int, long, long long, bool, unsigned char, unsigned short, unsigned int, unsigned long

– Floating-point: decimal numbers• Can be further categorized:

– float, double, long double– Enumeration type: user-defined data type. We won’t use.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 27

Arithmetic Operators

• Some C++ arithmetic operators:• + addition• - subtraction• * multiplication• / division• % modulus (or remainder)

• You can use +, -, *, and / with integral and floating-point data types.

• You can use % only with integral data types.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 28

Arithmetic Expressions

• Arithmetic expressions combine values (operands) and arithmetic operators to yield a result.

• Example: 12.8 * 17.5 - 34.50

• Arithmetic expressions can be:– Integral expressions: all operands are integers.– Floating-point expressions: all operands are floating-point.– Mixed expressions: some operands are integer, some are

floating-point.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 29

Integral Expressions

• Integral expression: an arithmetic expression in which all operands are integers.– Yields an integer result.– Example: 2 + 3 * 5

– Caution: When you use / with integers, the integer result is truncated (no rounding).

– Example: 7 / 2 yields a result of 3

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 30

• We know that 7 ÷ 2 = 3.5

• Recall that another way to say this is that 7 ÷ 2 = 3 with a remainder of 1.

• In this example, 3 is called the quotient and 1 is called the remainder.

• In C++, using the / operator with integers yields the quotient.

• Example: In C++, 7 / 2 yields a result of 3

• And using the % operator with integers yields the remainder.

• Example: In C++, 7 % 2 yields a result of 1

Quotient and Remainder

Floating-Point Expressions

• Floating-point expression: an arithmetic expression in which all operands are floating-point.– Yields a floating-point result.– Example: 7.0 / 2.0

• The expression above yields 3.5

– Another example: 12.8 * 17.5 - 34.50

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 32

Operator Precedence and Associativity

• Operators inside parentheses are evaluated first.• *, /, and % have the same level of precedence and

are evaluated next.• + and – have the same level of precedence and are

evaluated next.• Arithmetic operators on the same level of

precedence are performed from left to right. (They have “left-to-right associativity.”)

• Example: Evaluate the following expression: 3 * 7 - 6 + 2 * 5 / 4 + 6

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 33

Mixed Expressions

• Mixed expression: an arithmetic expression that has operands of different data types (some integer, some floating-point).

• Examples:2 + 3.56 / 4 + 3.95.4 * 2 - (3.6 + 5) / 2

• See next slide for rules on how C++ evaluates these.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 34

Mixed Expressions (cont’d.)

• Evaluation rules:– The precedence and associativity rules from above

still apply.– If an operator has the same types of operands:

• It is evaluated according to the type of the operands.

– If operator has both types of operands:• Integer is “promoted” to floating-point.• Operator is evaluated.• Result is floating-point.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 35

Type Conversion and Casting

• Implicit type conversion (also called coercion) occurs when C++ automatically changes a value of one type to another type. We’ve seen an example of this with mixed expressions.

• C++ also lets you perform explicit type conversion using the cast operator:static_cast<dataTypeName>(expression)

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 36

Type Conversion (Casting) (cont’d.)

37C++ Programming: From Problem Analysis to Program Design, Seventh Edition

Unary Versus Binary Operators

• The arithmetic operators we’ve discussed are all binary operators: they take two operands.

• Some operators are unary operators (one operand). • In fact, + and – can be either binary or unary,

depending on the context.• Unary – is negation.• Example: –2 * 3• Another example: +2 * –3

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 38

Other Operators

• As well as the arithmetic operators discussed above, C++ has many other operators.

• See Appendix B (next slide) in the textbook for a complete list that shows precedence and associativity. – Note from this list that unary + and – have higher

precedence than binary + and – .

• Unfortunately the table in Appendix B contains a few typos, so be sure to fix them using the list of textbook typos on the course website.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 39

Review: Data Types

• Recall that C++ data types fall into three categories:– Simple data types (int, char, bool, double, …)

– Structured data types– Pointers

• For the next few weeks we’ll mostly use simple data types, plus one structured data type called the string type.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 41

string Type

• A string is a sequence of zero or more characters enclosed in double quotation marks.– Contrast with char data type, which is a single character

inside single quotation marks.

• A string’s length is the number of characters in it.– Example: length of "William Jacob" is 13

• Each character has a position in the string, with the first character at position 0.– Example: In "William Jacob", the character ‘m’ is at

position 6.

42C++ Programming: From Problem Analysis to Program Design, Seventh Edition

string Type (cont’d.)

• Unlike the simple data types discussed earlier, string is not built into the core C++ language. It’s a programmer-defined type supplied in the C++ Standard Library.

• So the five data types that we will use extensively are– int– char– bool– double– string

43C++ Programming: From Problem Analysis to Program Design, Seventh Edition

Variables

• The expressions we’ve looked at used constant numeric values.– Example: 2 * 3.5

• In most programs you’ll also use variables, which are named memory locations whose values can change as the program runs.– Example: 2 * payRate

• When naming your variables, be sure to follow the rules we saw earlier for identifiers.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 44

• In C++ you must declare each variable’s data type before you can use the variable.

• Syntax to declare one or more variables:

Declaring Variables

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 45

Putting Data into Variables

• A variable is said to be initialized the first time you place a value into it.

• A variable that has not been initialized will hold an unpredictable “garbage” value. Visual Studio gives an error message if you use an uninitialized variable in an expression.

• Ways to place data into a variable:– Use an assignment statement.– Use input (read) statements.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 46

Assignment Statement

• The assignment statement takes the form:

• The expression is evaluated and its value is assigned to the variable on the left side.

• Examples:dailyRate = 0.0002;

annualRate = 365 * dailyRate;

• In C++, = is called the assignment operator.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 47

Assignment Statement (cont’d.)

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 48

Declaring & Initializing Variables

• You can use the assignment operator to initialize a variable in the same statement that declares it.

• Examples:int first = 13, second = 10;char ch = ' ';double x = 12.6;

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 49

Assignment versus Equality

• The = operator in C++ has a different meaning from the meaning it has in your math classes.

• Example: in a math class, the following statement cannot be true:

x = x + 1;• But this is a perfectly good (and

frequently used) C++ statement. It tells the program to increase x’s value by 1.

Increment and Decrement Operators

• The increment operator ++ increases a variable by 1.– Example: The statement

x++;does the same thing as the statement x = x + 1;

• Similarly, the decrement operator -- decreases a variable’s value by 1.– Example: The statement

x--;does the same thing as the statement x = x - 1;

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 51

Pre- and Post-Increment/Decrement

• These operators’ behavior depends on whether they’re placed before or after the variable name.– Pre-increment: ++variable increments the variable, and then uses

the incremented value in the expression.– Post-increment: variable++ uses the variable’s original value in

the expression, and then increments the variable.

• What is the difference between the following?

• Similarly for pre-decrement (--variable) and post-decrement (variable--).

C++ Programming: From Problem Analysis to Program Design, Seventh Edition

x = 5;y = ++x;

x = 5;y = x++;

52

Input (Read) Statement

• cin is used with >> to let the user enter a value.

• This is called an input statement (or read statement).• The operator >> is the stream extraction operator.• For example, if miles is a double variable, the following

statement causes computer to get a value of type double from the keyboard and place it in the variable miles:

cin >> miles;

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 53

Input (Read) Statement (cont’d.)

• A single input statement can assign values to more than one variable.

• Example: if feet and inches are variables of type int, the following statement reads two integers from the keyboard and places these integer values in feet and inches respectively. : cin >> feet >> inches;

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 54

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 55

Output Statement

• cout is used with << to display values on the screen:

• This is called an output statement.• The operator << is the stream insertion operator.• The expression is evaluated and its value is printed at

the current cursor position on the screen.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 56

Manipulators in Output Statements

• You can use manipulators to format the output.– Example: the manipulator endl causes the cursor to

move to beginning of the next line.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 57

Escape Sequences in Output Statements

• Escape sequences are another way to format output. Example: The new line character is '\n'

cout << "Hello there."; cout << "My name is James."; Output:Hello there.My name is James.

cout << "Hello there.\n"; cout << "My name is James."; Output :Hello there.My name is James.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 58

Escape Sequences in Output Statements (cont’d.)

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 59

The Standard Library

• The core C++ language has a relatively small number of built-in operations.

• Many other useful operations are provided as a collection of files called the C++ Standard Library.

• These library files make your job easier, because they save you from having to re-invent the wheel when you want to perform common tasks.

• A big part of becoming a C++ programmer is learning about the many library files in the Standard Library.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 60

The Standard Library (cont’d.)

• Each library file (or “header file”) has a name, which is typically written inside angle brackets.– Examples:

• <iostream>• <string>• <cmath>

• The next slides show how to tell the compiler that you want to use operations from one or more of these files.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 61

Preprocessor Directives

• Your programs will often contain preprocessor directives. These are commands that the preprocessor program executes before your program is compiled.

• All preprocessor directives begin with #.

• No semicolon at the end of these directives.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 62

The #include Directive

• The most common preprocessor directive is #include, which is how you tell the compiler that you want to use a Standard Library file.

• Syntax to include a header file:

• For example:#include <iostream>

– Causes the preprocessor to include the header file iostream in the program. Without this, you could not use cout or cin in your program.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 63

namespace and Using cin and cout in a Program

• cin and cout are declared in the header file iostream, but within the std namespace.

• To use cin or cout in a program, use the following two statements:#include <iostream>using namespace std;

• Without that using statement, you would need to type std::cin instead of cin throughout your program.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 64

Using the string Data Type in a Program

• Recall that the string data type is not built into the core C++ language. It’s a programmer-defined type defined in the C++ Standard Library.

• To use the string type, you need to access its definition from the header file string.

• Use the following preprocessor directive:#include <string>

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 65

The main Function

• A function is a named block of code that performs some well-defined set of operations.

• Every C++ program must contain a function named main. This is where execution begins when you run the program.

• Complex programs contain many functions, but for now most of your programs will only contain the main function.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 66

The main Function (cont’d.)

• The first line of a function is called the function’s heading: int main()

• The statements enclosed between the curly braces { and } form the function’s body.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 67

Named Constants

• Named constant: memory location whose content cannot change during execution.

• Syntax to declare a named constant:

• By convention, constant identifiers are all upper-case.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 68

Syntax Errors

• Syntax rules: indicate what is legal and what is not legal.– Example of a syntax rule: Every C++ statement

must end with a semicolon.• The compiler finds and reports syntax errors during

compilation. It won’t let you run the program until you fix these errors.int x; //Line 1int y //Line 2: Syntax error

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 69

Semantic Errors

• Semantic rules: set of rules that gives meaning to a language.

• A program with no syntax errors may still not produce correct results.

• Example: 2 + 3 * 5 and (2 + 3) * 5are both syntactically correct expressions, but have different meanings. So if you use one of these expressions where you should use the other one, your program will produce incorrect results.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 70

Prompt Lines

• Prompt lines are statements that tell the user what to do.

cout << "Please enter a number between 1 and 10 and " << "press the return key." << endl;cin >> num;

• Always include a prompt line when you want the user to enter some input.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 71

Documentation

• A well-documented program is easier to understand and modify.

• Two keys to good documentation:1. Use comments.2. Choose meaningful variable names.

• Comments should:– Explain the purpose of the program.– Identify who wrote it, and when.– Explain the purpose of particular statements whose

meaning is not obvious.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 72

Documentation (cont’d.)

• Variable names should be self-documenting:– Example: use CENTIMETERS_PER_INCH instead of X.

• Avoid run-together words, such as annualsale. This is hard to read.– Solution:

• Either capitalize the beginning of each new word: annualSale

• Or insert an underscore just before a new word: annual_sale

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 73

Compound Assignment Statements

• In addition to the simple assignment operator =, C++ provides several compound assignment operators, including: += -= *= /= %=

• Simple assignment statement:x = x * y;

• Equivalent compound assignment statement:x *= y;

• Their sole purpose is to provide more concise notation. But you don’t need to use them.

C++ Programming: From Problem Analysis to Program Design, Seventh Edition 74