52
CSE1222: Lecture 2 The Ohio State University 1

CSE1222: Lecture 2The Ohio State University1. mathExample2.cpp // math example #include using namespace std; int main() { cout

Embed Size (px)

Citation preview

CSE1222: Lecture 2 The Ohio State University 1

mathExample2.cpp// math example

#include <iostream>#include <cmath>

using namespace std;

int main(){ cout << "The reciprocal of 10 is " << 1.0/10.0 << endl; cout << "The square root of 10 is " << sqrt(10.0) << endl; cout << "e^(10.0) = " << exp(10.0) << endl; cout << "The reciprocal of 15 is " << 1.0/15.0 << endl; cout << "The square root of 15 is " << sqrt(15.0) << endl; cout << "e^(15.0) = " << exp(15.0) << endl;

return 0; // exit program}

CSE1222: Lecture 2 The Ohio State University 2

mathExample2.cpp

> g++ -o mathExample2.exe mathExample2.cpp

> mathExample2.exe

The reciprocal of 10 is 0.1

The square root of 10 is 3.16228

e^(10.0) = 22026.5

The reciprocal of 15 is 0.0666667

The square root of 15 is 3.87298

e^(15.0) = 3.26902e+06

>

CSE1222: Lecture 2 The Ohio State University 3

Variables (1) Programs like mathExample2.cpp have little

use in practice…

There is no room for changeThey simply print the same output with the same

values (using 10 and 15 only here) onto the screen every time they are executed

A more interesting program might have different behavior under different circumstances, i.e. with different values

CSE1222: Lecture 2 The Ohio State University 4

Variables (2)

For instance, a program that asks for any number and outputs its reciprocal and square root is much more useful than mathExample2.cpp

This program needs placeholders for the incoming values

These placeholders are called variables

CSE1222: Lecture 2 The Ohio State University 5

mathExample3.cpp// math example

#include <iostream>#include <cmath>

using namespace std;

int main(){ double x; // this is a variable declaration statement

x = 10.0; cout << "The reciprocal of 10 is " << 1.0/x << endl; cout << "The square root of 10 is " << sqrt(x) << endl; cout << "e^(" << x << ") = " << exp(x) << endl;

x = 15.0; cout << "The reciprocal of 15 is " << 1.0/x << endl; cout << "The square root of 15 is " << sqrt(x) << endl; cout << "e^(" << x << ") = " << exp(x) << endl;

return 0; // exit program}

CSE1222: Lecture 2 The Ohio State University 6

Declaration Statements C++ variable declarations are of the form:

dataType variableName;

dataType: int, float, char, double, unsigned int, ...variableName: composed of alphanumeric characters or underscore ‘_’

Rule: Before you can use a variable in your program, you must declare it This allows the computer to set aside the memory that will

be needed for that variable

CSE1222: Lecture 2 The Ohio State University 7

Declaration Example#include <iostream>using namespace std;

int main(){

int age;float wage;char initial;double height;

return 0; // exit program}

CSE1222: Lecture 2 The Ohio State University 8

Variable Names Memorize these rules!

Composed of the characters:a, b, c,…, z, A, B, C,…, Z, 0, 1, 2,…, 9 and _

Must begin with:a, b, c,…, z, A, B, C,…, Z or _

Capitalized and lower case letters are different I.e., case sensitive

Example variable declarations (where int is the data type):int age; int age1;int Age; int age2;int myAge; int age3B;int Jacks_age; int _age;

CSE1222: Lecture 2 The Ohio State University 9

Variable Names

Which of these are valid variable names?

me2 Me2 2L8 N-Shareef He_who_hesitates_is_lost HeWhoHesitatesIsLost Gordon.Gee

CSE1222: Lecture 2 The Ohio State University 10

Variable Assignments Variables can be assigned values during or after

declaration, but never before (why?)

Assignment is done with the equals sign

height = 67.34;initial = ‘E’;double totalPay = salary + overtime;

Why will the second line not work here as shown?

height = 67.34;initial = E; // will not work as expecteddouble totalPay = salary + overtime;

CSE1222: Lecture 2 The Ohio State University 11

Variable Assignments The equals sign is an operator like + or -

Variable assignment is NOT commutative!

Rule: The variable must always be on the left side of an equals sign

The following is NOT valid:

67 = x;

CSE1222: Lecture 2 The Ohio State University 12

mathExample4.cpp// math example

#include <iostream>#include <cmath>

using namespace std;

int main(){ double x;

cout << "Enter x: "; // Note: no new line cin >> x; // Note: operator ">>", not operator "<<"

cout << "The reciprocal of " << x << " is " << 1.0/x << endl; cout << "The square root of " << x << " is " << sqrt(x) << endl; cout << "e^(" << x << ") = " << exp(x) << endl;

return 0; // exit program}

CSE1222: Lecture 2 The Ohio State University 13

Input Using cin (1)

cin (Console INput) can be used to obtain user input

Rule: Unlike cout, use >> with cin, and not <<

When the program is run, cin will wait indefinitely for user input

cin will input a single value into a variable when it detects a new line from the input

Remember that before inputting values into variables, the variables MUST have already been declared!

CSE1222: Lecture 2 The Ohio State University 14

… double x;

cout << "Enter x: "; // Note: no new line cin >> x; // Note: operator ">>", not operator "<<"…

> mathExample4.exe

Enter x: 10.0

The reciprocal of 10 is 0.1

The square root of 10 is 3.16228

e^(10) = 22026.5

>

CSE1222: Lecture 2 The Ohio State University 15

int main()

{

double x;

cout << "Enter x: "; // Note: no new line

cin >> x; // Note: operator ">>", not operator "<<"

cout << "The reciprocal of " << x << " is " << 1.0/x << endl;

cout << "The square root of " << x << " is " << sqrt(x) << endl;

cout << "e^(" << x << ") = " << exp(x) << endl;

mathExample4.cpp// math example

#include <iostream>#include <cmath>

using namespace std;

int main(){ double x;

cout << "Enter x: "; // Note: no new line cin >> x; // Note: operator ">>", not operator "<<"

cout << "The reciprocal of " << x << " is " << 1.0/x << endl; cout << "The square root of " << x << " is " << sqrt(x) << endl; cout << "e^(" << x << ") = " << exp(x) << endl;

return 0; // exit program}

CSE1222: Lecture 2 The Ohio State University 16

Try inputs:

20

-20

1000

-1000

0

-0

xyz1.cpp// multiple declarations example

#include <iostream>using namespace std;

int main(){ double x; double y; double z;

cout << "Enter x, y and z: "; cin >> x; cin >> y; cin >> z;

cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "z = " << z << endl;

return 0; // exit program}

CSE1222: Lecture 2 The Ohio State University 17

> xyz1.exeEnter x, y and z: 1 2 3x = 1y = 2z = 3

>

CSE1222: Lecture 2 The Ohio State University 18

cout << "Enter x, y and z: ";

cin >> x;

cin >> y;

cin >> z;

cout << "x = " << x << endl;

cout << "y = " << y << endl;

cout << "z = " << z << endl;

> xyz1.exeEnter x, y and z: 1 2 3x = 1y = 2z = 3

>

CSE1222: Lecture 2 The Ohio State University 19

cout << "Enter x, y and z: ";

cin >> x;

cin >> y;

cin >> z;

cout << "x = " << x << endl;

cout << "y = " << y << endl;

cout << "z = " << z << endl;

Multiple Declarations In the previous example we had:

double x;double y;double z;

This can be done in one statement like this:

double x, y, z;

This is very useful when creating several variables of the same type

CSE1222: Lecture 2 The Ohio State University 20

xyz2.cpp// multiple declarations example

#include <iostream>using namespace std;

int main(){ double x, y, z; // multiple declarations

cout << "Enter x, y and z: "; cin >> x; cin >> y; cin >> z;

cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "z = " << z << endl;

return 0; // exit program}

CSE1222: Lecture 2 The Ohio State University 21

xyz3.cpp// multiple declarations example

#include <iostream>using namespace std;

int main(){ double x, y, z;

cout << "Enter x, y and z: "; cin >> x >> y >> z; // read x, then y, then z

cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "z = " << z << endl;

return 0; // exit program}

CSE1222: Lecture 2 The Ohio State University 22

Multiple Inputs Using cin cin can be used to obtain multiple

inputs

cin knows when to delimitI.e., start looking for the next input upon

reaching a “whitespace”

Whitespaces are: tabs, spaces, new lines

CSE1222: Lecture 2 The Ohio State University 23

> xyz1.exeEnter x, y and z: 1 2 3x = 1y = 2z = 3

>

CSE1222: Lecture 2 The Ohio State University 24

cout << "Enter x, y and z: ";

cin >> x >> y >> z;

cout << "x = " << x << endl;

cout << "y = " << y << endl;

cout << "z = " << z << endl;

> xyz1.exeEnter x, y and z: 1 2 3x = 1y = 2z = 3

>

CSE1222: Lecture 2 The Ohio State University 25

cout << "Enter x, y and z: ";

cin >> x >> y >> z;

cout << "x = " << x << endl;

cout << "y = " << y << endl;

cout << "z = " << z << endl;

Breaking up Multiple Inputs Sometimes it makes more sense to break up

multiple inputs into single inputs, even if they are correlated:

int x, y, z;

cout << “Enter x: “;cin >> x;

cout << “Enter y: “;cin >> y;

cout << “Enter z: “;cin >> z;

CSE1222: Lecture 2 The Ohio State University 26

cin and coutWhich of the following C++ statements have syntax errors and what

are the errors?

Assume that all variables have been declared and initialized

cout >> “Answer = ” >> x + y >> endl;

cin << x;

cout << “Yes, ” << “ or ” << “ no ” << “ or ” << “ maybe.” << endl;

cin >> yes >> no >> maybe;

cout << “x + y = ” (x + y) << endl;

CSE1222: Lecture 2 The Ohio State University 27

Variables (3) Variables are used to hold data

The data is held in your computer’s main memory A program can read-from and write-to variables

○ I.e., their values can vary

Every variable consists of two parts:

1. The name of a variable is tied to a location in memory

2. Its data type (discussed next...)

CSE1222: Lecture 2 The Ohio State University 28

Data Types

Integer Real numbers Characters Strings, i.e. text Boolean, i.e. true or false

CSE1222: Lecture 2 The Ohio State University 29

Data Type: Integers (1) An integer value is any number that has no

decimal point (whole number)

123 -45000 +1432431 0 are all valid integers

1,244 is not a valid integer in C++Commas are not allowed to express an integer

$12 is not valid either$ is not a valid part of an integer

CSE1222: Lecture 2 The Ohio State University 30

Data Type: Integers (2) What are the largest and smallest integers that a

computer can support? Depends on the computer on which the program is compiled Most of today’s computers use 32-bits to represent an

integer, so 232 values can be represented (how many is that??? … a lot)

Integers can be signed or unsigned

What is the max value of an unsigned 32 bit integer?

What is the max value of a signed 32 bit integer?

CSE1222: Lecture 2 The Ohio State University 31

intExample1.cpp// example using type int

#include <iostream>using namespace std;

int main(){ int x, y;

cout << "Enter x and y: "; cin >> x >> y; // Read in x and then y

cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "x+y = " << x + y << endl; cout << "x/y = " << x / y << endl; cout << "Done." << endl;

return 0; // exit program}

CSE1222: Lecture 2 The Ohio State University 32

Try inputs:

17 3

3 17

0 17

17 0

2000000000 2000000000

Integer Division C++ Definition:

A binary operator: a/b, where a and b are integers The integer division operator uses truncation The integer division operator always evaluates to an integer

What is (15 / 2)using the above definition? (15 / 2) is 7 Huh?? - Why???!

Remember that integers have no fractional parts!

What would the following output? cout << (15 / 16); There is no rounding in integer division The output would be 0

The fractional part of an integer division is truncated so the result can be an integer

CSE1222: Lecture 2 The Ohio State University 33

Division Modulus (Mod) operator (%)

A binary integer operatorComputes the remainder of dividing two

integers

Decimal divisionMake at least one operand a floating-

point number:

cout << (15.0 / 16.0);

CSE1222: Lecture 2 The Ohio State University 34

Data Types: Floating Point Numbers (1) Floating-point numbers

Have a decimal pointCan be signed or unsigned

There are three basic types: float doublelong double

The differences between these are their supported range and precision

CSE1222: Lecture 2 The Ohio State University 35

Data Types: Floating Point Numbers (2) To represent a floating point number:

float uses 32 bits (4 bytes)double uses 64 bits (8 bytes)long double uses 128 bits (16 bytes)

The tradeoff is storage vs. precision and range

What exactly is the precision and range, and how are floating point numbers represented in binary format? IEEE 754 Standard

CSE1222: Lecture 2 The Ohio State University 36

Data Types: Floating Point Numbers (3)

Let’s always use “double” to represent floating point numbers

CSE1222: Lecture 2 The Ohio State University 37

Data Types: Floating Point Numbers (4)

Floating-point numbers can be written in exponential notation:

134.56 or 1.3456e2

-0.00345 or -3.45e-3

Here, e is short for “times ten to the power of”, just like in scientific notation

CSE1222: Lecture 2 The Ohio State University 38

rationalExample1.cpp// example using type double

#include <iostream>using namespace std;

int main(){ double x, y; cout << "Enter x and y: "; cin >> x >> y;

cout << "x = " << x << endl; cout << "y = " << y << endl; cout << "x+y = " << x + y << endl; cout << “x*y = " << x * y << endl; cout << “x/y = " << x / y << endl; cout << "Done." << endl;

return 0; // exit program}

CSE1222: Lecture 2 The Ohio State University 39

Try inputs:

17 3

3 17

17 0

4000000000 4000000000

1e100 1e100

1e200 1e200

Data Type: Characters Characters:

All letters of the alphabet (upper and lower case, i.e. case sensitive)

The symbolic representation of digits 0 – 9All various symbols such as: + * & ^ % $ | , !

A character value or character literalWritten in single quotesConsists of exactly one characterE.g., 'A' or '8' or ':' or ' ' (blank space)

CSE1222: Lecture 2 The Ohio State University 40

Data Type: Characters NOTE: '8' and 8 are different

'8' is the symbolic representation of the character literal, ‘8’;

8 is the integer 8, which can be used for arithmetic

CSE1222: Lecture 2 The Ohio State University 41

Data Type: Characters Characters are usually stored with 8 bits,

i.e. 1 byte

So, there are 28 (or 256) different charactersEvery number within the range of [0, 255] is

mapped onto some character

A character is simply a numerical representation known as ASCII encoding

CSE1222: Lecture 2 The Ohio State University 42

ASCII Code

CSE1222: Lecture 2 The Ohio State University 43

Code Char

32 Space

33 !

34 "

35 #

36 $

37 %

38 &

39 '

40 (

41 )

… …

Code Char

48 0

49 1

50 2

51 3

52 4

53 5

54 6

55 7

56 8

57 9

… …

Code Char

65 A

66 B

67 C

68 D

69 E

70 F

71 G

72 H

73 I

74 J

… …

Code Char

97 a

98 b

99 c

100 d

101 e

102 f

103 g

104 h

105 i

106 j

… …

ASCII Table

CSE1222: Lecture 2 The Ohio State University 44

charExample1.cpp// example using type char

#include <iostream>using namespace std;

int main(){ char c1, c2, c3;

cout << "Enter first initial: "; cin >> c1; cout << "Enter second initial: "; cin >> c2;

c3 = 'X';

cout << "Created by: "; cout << c1 << c2 << c3 << endl;

return 0; // exit program}

CSE1222: Lecture 2 The Ohio State University 45

> charExample1.exeEnter first initial: REnter second initial: W{What is the output?}

CSE1222: Lecture 2 The Ohio State University 46

… char c1, c2, c3;

cout << "Enter first initial: "; cin >> c1; cout << "Enter second initial: "; cin >> c2;

c3 = 'X';

cout << "Created by: "; cout << c1 << c2 << c3 << endl;…

Characters Strings A character string is a sequence or array of zero or

more characters

Examples: "Hello“

"Hello World!" ○ Note: Blank space is part of the string

"He who hesitates is lost.\nHaste makes waste.\n“○ Note: \n is the new line character

"" ○ The empty string, i.e. zero characters in the double quotes

CSE1222: Lecture 2 The Ohio State University 47

Character Strings NOTE: 'A' and "A" are different

'A' is the symbolic representation of the character literal, ‘A’;

"A" is a string containing a single character

NOTE: '8' and "8" and 8 are different

'8' is the symbolic representation of the character literal, ‘8’;

"8" is a string containing a single character;8 is the integer 8, which can be used for arithmetic

CSE1222: Lecture 2 The Ohio State University 48

Data Type: Boolean

The Boolean data type is used for just two values: true and false

Like characters, they only consume 1 byte of storage

Interesting noteIn C++, any number other than 0 is always

interpreted as the Boolean value trueE.g., the number 16 is considered to be a true

value

CSE1222: Lecture 2 The Ohio State University 49

Arithmetic Operations (1) The basic operations of +, - , *, /, %

These are binary operators; Simple arithmetic expressions of the form:

operand operator operand 5 % 3

Defined separately for integers and real numbers

Remember % - An integer operator Modulus division only used for integers arguments Returns the remainder of dividing two integers This will come in handy in the future

CSE1222: Lecture 2 The Ohio State University 50

Arithmetic Operations (2)// Examples of arithmetic operations

#include <iostream>using namespace std;

int main(){ cout << "5 % 3 = " << (5 % 3) << endl; cout << "4 - 3 = " << (4 - 3) << endl; cout << "5.0 / 2.0 = " << (5.0 / 2.0) << endl; cout << "5 / 2 = " << (5 / 2) << endl;

// Is there any real difference in the last two statements?

return 0;}

CSE1222: Lecture 2 The Ohio State University 51

>arithmetic.exe5 % 3 = 24 - 3 = 15.0 / 2.0 = 2.55 / 2 = 2

>

CSE1222: Lecture 2 The Ohio State University 52

… cout << "5 % 3 = " << (5 % 3) << endl; cout << "4 - 3 = " << (4 - 3) << endl; cout << "5.0 / 2.0 = " << (5.0 / 2.0) << endl; cout << "5 / 2 = " << (5 / 2) << endl;