CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied...

33
Chapter 2 part #3 C++ Input / Output 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel

Transcript of CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied...

Page 1: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Chapter 2 part #3C++ Input / Output

1st Semester 1436

King Saud University College of Applied studies and Community ServiceCSC1101By: Fatimah Alakeel

Page 2: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Outline

Input / Output Operations Using iostream Output Stream Input Stream Common Programming Errors

2

2/17/2012Fatimah Alakeel

Page 3: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Input/Output Operations

Input operation an instruction that copies data from an input

device into memory. Input Stream: A stream ( numbers, characters,

strings..etc) that flows from an input device ( i.e.: keyboard, disk drive, network connection) to main memory.

Output operation an instruction that displays information stored in

memory to the output devices (such as the monitor)

Output Stream: A stream that flows from main memory to an output device ( i.e.: screen, printer, disk drive, network connection)

3

2/17/2012Fatimah Alakeel

Page 4: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Using iostream

The C++ iostream library provides hundreds of I/O capabilities.

Standard iostream objects:cout - object providing a connection to the

monitorcin - object providing a connection to the

keyboard To perform input and output we send

messages to one of these objects

2/17/2012

4

Fatimah Alakeel

Page 5: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Output Stream5

2/17/2012Fatimah Alakeel

Page 6: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

The Insertion Operator (<<)

To send output to the screen we use the insertion operator on the object cout

Format: cout << Expression; The compiler figures out the type of the

object and prints it out appropriatelycout << 5; // Outputs 5

cout << 4.1; // Outputs 4.1

cout << “String”; // Outputs String

cout << ‘\n’; // Outputs a newline

2/17/2012

6

Fatimah Alakeel

Page 7: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Stream-Insertion Operator

<< is overloaded to output built-in types ( ex. int, float,…etc) Can also be used to output user-defined types (i.e. user

defined classes). cout << ‘\n’;

Prints newline character cout << endl;

endl is a stream manipulator that issues a newline character and flushes the output buffer

cout << flush; flush flushes the output buffer

2/17/2012

7

Fatimah Alakeel

a buffer is just a pre-allocated area of memory where you store your data while you're processing it.

Page 8: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Cascading Stream-Insertion Operators

<< : Associates from left to right, and returns a reference to its left-operand object (i.e. cout). This enables cascading

cout << "How" << " are" << " you?";

Make sure to use parenthesis:

cout << "1 + 2 = " << (1 + 2);

NOT

cout << "1 + 2 = " << 1 + 2; 2/17/2012

8

Fatimah Alakeel

Page 9: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Printing Variables9

cout << someVariable; cout knows the type of data to output

Must not confuse printing text with printing variables: int x =12; cout << x; // prints 12 cout << “x”; // prints x

2/17/2012Fatimah Alakeel

Page 10: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Formatting Stream Output

Performs formatted and unformatted outputI. Output of numbers in decimal, octal and hexadecimal

using manipulators.

II. Display numbers on different width , filling spaces with characters

III. Varying precision for floating points

IV. Formatted text outputs

2/17/2012

10

Fatimah Alakeel

Page 11: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

I. Manipulators

C++ manipulators C++ provides various stream manipulators

that perform formatting tasks. Manipulators are functions specifically

designed to be used in conjunction with the insertion (<<) and extraction (>>) operators on stream objects.

must include iomanip to use several are provided to do useful things you can also create your own

2/17/2012

11

Fatimah Alakeel

Page 12: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Output Manipulators (no args)Manipulators included like arguments in

extractionendl - outputs a new line character, flushes outputdec - sets int output to decimalhex - sets int output to hexadecimaloct - sets int output to octal

Example:#include <iostream>#include <iomanip>using namespace std;int x = 20;cout << x<<“ in hexadecimal is: “<<hex << x << endl; cout << x<<“ in octal is: ”<< oct << x << endl; cout << x<<“ in decimal is: ”<<dec << x << endl;

2/17/2012

12

Fatimah Alakeel

Page 13: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

II. Setting the Width

You can use the width(int) function to set the width for printing a value, but it only works for the next insertion command (more on this later):int x = 42;

cout.width(5);

cout << x << ‘\n’; // Outputs 42

cout << x << ‘\n’; // Outputs 42

OR

cout << setw (10); cout << 77 << endl; // prints 77 on 10 places

2/17/2012

13

Fatimah Alakeel

Page 14: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

II. Setting the Fill Character

Use the fill(char) function to set the fill character. The character remains as the fill character until set again.int x = 42;

cout.width(5);

cout.fill(‘*’);

cout << x << ‘\n’; // Outputs ***42

OR

cout << setfill ('x') << setw (10); cout << 77 << endl; // prints xxxxxxxx77

2/17/2012

14

Fatimah Alakeel

Page 15: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

III. Significant Digits in Float

Use function precision(int) to set the number of significant digits (the number of digits to the right of the decimal point) printed (when the float number is in the fixed point format):

A call to this function sets the precision for all subsequent output operations until the next precision.float y = 12.32;cout<<fixed; //Specify that the value is in fixed-point notation

cout.precision(1);cout << y << '\n'; // Outputs 12.3cout.precision(2);cout << y << '\n'; // Outputs 12.32cout.precision(3);cout << y << '\n'; // Outputs 12.320

2/17/2012

15

Fatimah Alakeel

Page 16: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

III. Significant Digits in Float

If the fixed point format is not specified, the precision field specifies the maximum number of digits to be displayed in total counting both those before and those after the decimal point. (may convert from fixed to scientific to print):

float y = 23.1415;cout.precision(1);cout << y << '\n'; // Outputs 2e+01cout.precision(2);cout << y << '\n'; // Outputs 23cout.precision(3);cout << y << '\n'; // Outputs 23.1

2/17/2012

16

Fatimah Alakeel

Page 17: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Using showpoint/noshowpoint

2/17/2012Fatimah Alakeel

17

showpoint specify that floating-point numbers (even for whole numbers) should be output with a decimal point, even if they’re zeros. Following the decimal point, as many digits as necessary are written to match the precision.

This setting is reset with stream manipulator noshowpoint.

When the showpoint  manipulator is not set, the decimal point is only written for non-whole numbers.

Page 18: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Using showpoint/noshowpoint

#include <iostream>

using namespace std;

int main () {

double a, b, pi;

a=30.0;

b=10000.0;

pi=3.14165;

cout.precision (5);

cout << showpoint << a << '\t' << b << '\t' << pi << endl;

cout << noshowpoint << a << '\t' << b << '\t' << pi << endl;

return 0;

}

2/17/2012

18

Fatimah Alakeel

30.000 10000. 3.1416 30 10000 3.1416

30.000 10000. 3.1416 30 10000 3.1416

Page 19: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

IV. Formatting Text 19

To print text you need to include “” around the text Cout <<“This is a Beautiful Day” ; You can add escape sequence for further

options.

2/17/2012Fatimah Alakeel

Page 20: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Escape Sequence20

2/17/2012Fatimah Alakeel

Page 21: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Examples

cout<<"Please enter the student's grades:”;Please enter the student's grades:

cout<<"The class average is “<< average;The class average is 95.5

cout<<“The total area is “<< area<< “and the total cost is “<< cost << “ S.R.”;The total area is 60.2 and the total cost is 4530 S.R.

Cout<<"The student received an ”<< grade << “ grade in the course.";The student received an A grade in the course.

21

2/17/2012Fatimah Alakeel

Average = 95.5

area = 60.2cost = 4530

grade = ‘A’

Page 22: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Examples (Con.)

Cout<<”The grade is << grade << gradesymb;The grade is A+

Cout<<"I am the first line\n”;Cout<<“\n I am the second line\n";I am the first line

I am the second line

22

2/17/2012Fatimah Alakeel

grade = ‘A’gradesymb = ‘+’

Page 23: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Input Stream23

2/17/2012Fatimah Alakeel

Page 24: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

The Extraction Operator (>>) To get input from the keyboard we use

the extraction operator and the object cin Format: cin >> Variable; The compiler figures out the type of the

variable and reads in the appropriate typeint X;float Y;cin >> X; // Reads in an integercin >> Y; // Reads in a float

2/17/2012

24

Fatimah Alakeel

Page 25: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Syntax25

cin >> someVariable; cin knows what type of data is to be assigned to someVariable (based on the type of someVariable).

2/17/2012Fatimah Alakeel

Page 26: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Stream Input

>> (stream-extraction) Used to perform stream input Normally ignores whitespaces (spaces, tabs,

newlines) in the input stream. Returns zero (false) when EOF is encountered,

otherwise returns reference to the object from which it was invoked (i.e. cin) This enables cascaded inputcin >> x >> y;

2/17/2012

26

Fatimah Alakeel

Page 27: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Stream Input

cin inputs ints, chars, null-terminated strings, string objects but terminates when encounters space

(ASCII character 32) workaround? use the “get” method [ will

see that later]

2/17/2012

27

Fatimah Alakeel

Page 28: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Chaining Calls

Multiple uses of the insertion and extraction operator can be chained together:cout << E1 << E2 << E3 << … ;

cin >> V1 >> V2 >> V3 >> …; Equivalent to performing the set of insertion

or extraction operators one at a time Example

cout << “Total sales are $” << sales << ‘\n’;cin >> Sales1 >> Sales2 >> Sales3;

2/17/2012

28

Fatimah Alakeel

Page 29: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Extraction/Insertion Examplecout << “Hello world! ”;int i=5;cout << “The value of i is “ << i << endl;

OUTPUT:OUTPUT:Hello World! The value of i is 5 //endl puts a new line

Char letter;cout << “Please enter the first letter of your name: “;cin >> letter;cout<< “Your name starts with “ << letter;

OUTPUT:OUTPUT:Please enter the first letter of your name: FYour name starts with F

2/17/2012

29

Fatimah Alakeel

Page 30: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Common Programming Errors

30

2/17/2012Fatimah Alakeel

Page 31: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Common Programming Errors Debugging Process removing errors

from a program

Three (3) kinds of errors :

Syntax Error a violation of the C++ grammar rules,

detected during program translation (compilation).

statement cannot be translated and program cannot be executed

31

2/17/2012Fatimah Alakeel

Page 32: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Common Programming Errors cont…

Run-time errorsAn attempt to perform an invalid

operation, detected during program execution.

Occurs when the program directs the computer to perform an illegal operation, such as dividing a number by zero.

The computer will stop executing the program, and displays a diagnostic message indicates the line where the error was detected

32

2/17/2012Fatimah Alakeel

Page 33: CHAPTER 2 PART #3 C++ INPUT / OUTPUT 1 st Semester 1436 King Saud University College of Applied studies and Community Service CSC1101 By: Fatimah Alakeel.

Common Programming Errors cont…

Logic Error/Design ErrorAn error caused by following an incorrect

algorithmVery difficult to detect - it does not cause

run-time error and does not display message errors.

The only sign of logic error – incorrect program output

Can be detected by testing the program thoroughly, comparing its output to calculated results

To prevent – carefully desk checking the algorithm and written program before you actually type it

33

2/17/2012Fatimah Alakeel