1 Chapter 4 Program Input and the Software Design Process.

Slides:



Advertisements
Similar presentations
File streams Chapter , ,
Advertisements

1 Lecture-4 Chapter 2 C++ Syntax and Semantics, and the Program Development Process Dale/Weems/Headington.
1 Lecture 19 Chapter 4 Program Input and the Software Design Process Dale/Weems/Headington.
Input/Output Main Memory istream ostream Disk Drive Keyboard Scanner Disk Drive Monitor Printer stream = sequence of bytes.
Lecture 18:Topic: I/O Formatting and Files Dale/Weems/Headington
1 September 6, 2005CS150 Introduction to Computer Science I What Actions Do We Have Part 1 CS150 Introduction to Computer Science I.
C++ plus. 2 Goals Some general C++ tips 3 C++ Tips is header file for a library that defines three stream objects Keyboard an istream object named cin.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 3: Input/Output.
How to Program in C++ CHAPTER 3: INPUT & OUTPUT INSTRUCTOR: MOHAMMAD MOJADDAM.
C++ Programming: From Problem Analysis to Program Design, Fifth Edition Chapter 3: Input/Output.
1 Lecture 7 Chapter 3 Numeric Types, Expressions, and Output Dale/Weems/Headington.
Chapter 3: Input/Output
Program Input and the Software Design Process ROBERT REAVES.
C++ Vs. Java Who will win?. Look Ma, no classes! C++ was conceived as an object-oriented extension to C C was (is) purely procedural language –Functions.
Chapter 8 Streams and Files Lecture Notes Prepared By: Blaise W. Liffick, PhD Department of Computer Science Millersville University Millersville, PA
In Addition... To the string class from the standard library accessed by #include C++ also has another library of string functions for C strings that can.
1 Chapter 4 Program Input and the Software Design Process.
C++ Programming: Program Design Including Data Structures, Fifth Edition Chapter 3: Input/Output.
1 Chapter 4 Program Input and the Software Design Process.
1 Chapter 4 Program Input and the Software Design Process Dale/Weems/Headington.
1 Chapter 4 Program Input and the Software Design Process Dale/Weems/Headington.
1 Chapter 4 Program Input and the Software Design Process CS185/09 - Introduction to Programming Caldwell College.
Chapter 1 Software Engineering Principles. Lecture 2.
File Input and Output in C++. Keyboard and Screen I/O #include cin (of type istream) cout (of type ostream) Keyboard Screen executing program input data.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 3: Input/Output.
TEXT FILES. CIN / COUT REVIEW  We are able to read data from the same line or multiple lines during successive calls.  Remember that the extraction.
Input/Output Sujana Jyothi C++ Workshop Day 2. C++ I/O Basics 2 I/O - Input/Output is one of the first aspects of programming that needs to be mastered:
1 Chapter 4 Program Input and the Software Design Process Dale/Weems/Headington.
1 Chapter 3 Numeric Types, Expressions, and Output Dale/Weems/Headington.
Disk Files for I/O your variable (of type ifstream) your variable (of type ofstream) disk file “myInfile.dat” disk file “myOut.dat” executing program input.
1 Chapter 4 Program Input and the Software Design Process Dale/Weems.
No I/O is built into C++ l instead, a library provides input stream and output stream KeyboardScreen executing program istreamostream 1.
1 Chapter 4 Program Input and the Software Design Process Dale/Weems/Headington.
1 Chapter 4 Program Input and the Software Design Process Dale/Weems/Headington.
1 Program Input and the Software Design Process. 2 Chapter 4 Topics  Input Statements to Read Values for a Program using >>, and functions get, ignore,
Chapter 3: Input/Output
1 Character Strings (Cstrings) Reference: CS215 textbook pages
1 Chapter 3 Numeric Types, Expressions, and Output Dale/Weems/Headington.
Chapter 4 Program Input and the Software Design Process.
1 What is a Named Constant? A named constant is a location in memory that we can refer to by an identifier, and in which a data value that cannot be changed.
Chapter 3: Input/Output. Objectives In this chapter, you will: – Learn what a stream is and examine input and output streams – Explore how to read data.
More about strings in C++. String member functions The next three slides present information about functions that are members of the C++ string class.
Prof. amr Goneid, AUC1 CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++ Prof. Amr Goneid AUC Part 9. Streams & Files.
Program Input and the Software Design Process ROBERT REAVES.
Input/Output. Objectives In this chapter you will: Learn what a stream is and examine input and output streams Explore how to use the input stream functions.
A FIRST BOOK OF C++ CHAPTER 14 THE STRING CLASS AND EXCEPTION HANDLING.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 8: Streams and Files Problem Solving, Abstraction, and Design using.
File I/O in C++ I. Using Input/Output Files A computer file is stored on a secondary storage device (e.g., disk); is permanent; can be used to provide.
Chapter Expressions and Interactivity 3. The cin Object 3.1.
1 Stream Input and Output Read Text, page Keyboard and Screen I/O #include cin (of type istream) cout (of type ostream) KeyboardScreen executing.
CS221 C++ Basics. C++ Data Types structured array struct union class address pointer reference simple integral char short int long bool floating float.
C++ for Everyone by Cay Horstmann Copyright © 2012 by John Wiley & Sons. All rights reserved Chapter Eight: Streams Slides by Evan Gallagher.
Chapter 3: Input/Output. Objectives In this chapter, you will: – Learn what a stream is and examine input and output streams – Explore how to read data.
Chapter 4 Program Input and the Software Design Process
What Actions Do We Have Part 1
Chapter 1 Software Engineering Principles
Lecture 2B Expressions Richard Gesick
Input and Output Chapter 3.
Standard Input/Output Streams
Standard Input/Output Streams
Lecture 5A File processing Richard Gesick.
Chapter 3: Input/Output
No I/O is built into C++ instead, a library provides input stream and output stream Keyboard Screen executing program istream ostream 1.
Chapter 3 Input output.
Chapter 4 Program Input and the Software Design Process
Formatted Input, Output & File Input, Output
CHAPTER 4 File Processing.
What Actions Do We Have Part 1
Dale/Weems/Headington Program Input and the Software Design Process
File I/O in C++ I.
Presentation transcript:

1 Chapter 4 Program Input and the Software Design Process

No I/O is built into C++ l instead, a library provides input stream and output stream KeyboardScreen executing program istreamostream 2

is header file l for a library that defines 3 objects an istream object named cin (keyboard) an ostream object named cout (screen) an ostream object named cerr (screen) 3

4 Giving a Value to a Variable In your program you can assign (give) a value to the variable by using the assignment operator = ageOfDog = 12; or by another method, such as cout << “How old is your dog?”; cin >> ageOfDog;

>> is a binary operator >> is called the input or extraction operator >> is left associative EXPRESSIONHAS VALUE cin >> age cin STATEMENT cin >> age >> weight ; 5

Extraction Operator ( >> ) l variable cin is predefined to denote an input stream from the standard input device ( the keyboard ) l the extraction operator >> called “get from” takes 2 operands. The left operand is a stream expression, such as cin--the right operand is a variable of simple type. l operator >> attempts to extract the next item from the input stream and store its value in the right operand variable 6

SYNTAX These examples yield the same result. cin >> length ; cin >> width ; cin >> length >> width ; Input Statements cin >> Variable >> Variable... ; 7

Whitespace Characters Include... l blanks l tabs l end-of-line (newline) characters The newline character is created by hitting Enter or Return at the keyboard, or by using the manipulator endl or “\n” in a program. 8

Extraction Operator >> “skips over” (actually reads but does not store anywhere) leading white space characters as it reads your data from the input stream (either keyboard or disk file) 9

char first ; char middle ; char last ; cin >> first ; cin >> middle ; cin >> last ; NOTE: Or you could have typed: A[Enter]B[enter]C[enter] If you type: ABC DEF GHI only A,B,C are saved firstmiddlelast At keyboard you type: A [ space]B [ space ] C [ Enter] firstmiddlelast ‘A’‘B’‘C’ 10

At keyboard you type: [ space ] 25 [ space ] J [ space]2 [ Enter ] int age ; char initial ; float bill ; cin >> age ; cin >> initial ; cin >> bill ; NOTE: If illegal input (characters for int or float), the results are unpredictable ageinitialbill ageinitialbill 25‘J’2.0 11

Keyboard and Screen I/O #include cin (of type istream) cout (of type ostream) KeyboardScreen executing program input data output data 12

STATEMENTS CONTENTS MARKER POSITION int i ; 25 A\n char ch ; 16.9\n float x ; cin >> i ; 25 A\n 16.9\n cin >> ch ; 25 A\n 16.9\n cin >> x ; 25 A\n 16.9\n Another example using >> ichx 25 ‘A’ ichx i x i x ‘A’ NOTE: shows the location of the file reading marker 13

14 The get( ) function can be used to read a single character. It obtains the very next character from the input stream without skipping any leading whitespace characters. Another Way to Read char Data

char first ; char middle ; char last ; cin.get ( first ) ; cin.get ( middle ) ; cin.get ( last ) ; NOTE: The file reading marker is left pointing to the space after the ‘B’ in the input stream. firstmiddlelast At keyboard you type: A [ space]B [ space ] C [ Enter] firstmiddlelast ‘A’‘ ’‘B’ 15

16 Use function ignore( ) to skip characters The ignore( ) function is used to skip (read and discard) characters in the input stream. The call cin.ignore ( howMany, whatChar ) ; will skip over up to howMany characters or until whatChar has been read, whichever comes first.

An Example Using cin.ignore( ) abc abc abc abc NOTE: shows the location of the file reading marker STATEMENTS CONTENTS MARKER POSITION int a ; \n int b ; \n int c ; cin >> a >> b ; \n \n cin.ignore(100, ‘\n’) ; \n \n cin >> c ; \n \n 17

Another Example Using cin.ignore( ) ich ich i i 16‘A’ NOTE: shows the location of the file reading marker STATEMENTS CONTENTS MARKER POSITION int i ; A 22 B 16 C 19\n char ch ; cin >> ch ; A 22 B 16 C 19\n cin.ignore(100, ‘B’) ; A 22 B 16 C 19\n cin >> i ; A 22 B 16 C 19\n 18

19 EXAMPLE string message ; cin >> message ; cout << message ; HOWEVER... String Input in C++ Input of a string is possible using the extraction operator >>.

20 Extraction operator >> When using the extraction operator ( >> ) to read input characters into a string variable: l the >> operator skips any leading whitespace characters such as blanks and newlines l it then reads successive characters into the string, and stops at the first trailing whitespace character (which is not consumed, but remains waiting in the input stream)

21 String Input Using >> string firstName ; string lastName ; cin >> firstName >> lastName ; Suppose input stream looks like this: Joe Hernandez 23 WHAT ARE THE STRING VALUES?

22 Results Using >> string firstName ; string lastName ; cin >> firstName >> lastName ; RESULT “J o e” “Hernandez” firstName lastName

23 getline( ) Function l Because the extraction operator stops reading at the first trailing whitespace, >> cannot be used to input a string with blanks in it l use getline function with 2 arguments to overcome this obstacle l First argument is an input stream variable, and second argument is a string variable EXAMPLE string message ; getline (cin, message ) ;

24 getline(inFileStream, str) l getline does not skip leading whitespace characters such as blanks and newlines l getline reads successive characters (including blanks) into the string, and stops when it reaches the newline character ‘\n’ l the newline is consumed by get, but is not stored into the string variable

25 String Input Using getline string firstName ; string lastName ; getline (cin, firstName ); getline (cin, lastName ); Suppose input stream looks like this: Joe Hernandez 23 WHAT ARE THE STRING VALUES?

26 Results Using getline “ Joe Hernandez 23” ? firstName lastName string firstName ; string lastName ; getline (cin, firstName ); getline (cin, lastName );

Interactive I/O l in an interactive program the user enters information while the program is executing l before the user enters data, a prompt should be provided to explain what type of information should be entered l after the user enters data, the value of the data should be printed out for verification. This is called echo printing l that way, the user will have the opportunity to check for erroneous data 27

Prompting for Interactive I/O cout << “Enter part number : “ << endl ; // prompt cin >> partNumber ; cout << “Enter quantity ordered : “ << endl ; cin >> quantity ; cout << “Enter unit price : “ << endl ; cin >> unitPrice ; totalPrice = quantity * unitPrice ; // calculate cout << “Part # “ << partNumber << endl ; // echo cout << “Quantity: “ << quantity << endl ; cout << “Unit Cost: $ “ << setprecision(2) << unitPrice << endl ; cout << “Total Cost: $ “ << totalPrice << endl ; 28

Disk Files for I/O your variable (of type ifstream) your variable (of type ofstream) disk file “C:\myInfile.dat” disk file “C:\myOut.dat” executing program input dataoutput data #include 29

To Use Disk I/O, you must l use #include l choose valid identifiers (file handles) for your filestreams and declare them l open the files and associate them with disk names l use your filestream identifiers (file handles) in your I/O statements (using >> and <<, manipulators, get, ignore) l close the files 30

31 File Names l Complete file names are composed of: n A drive letter followed by a colon n A path specification of directories (also called folders by windows) separated by backslashes (\) n Then the file name

32 File Name Examples l File prog1.cpp in the prog1 directory in the CS115 directory on the C drive: C:\CS115\prog1\prog1.cpp

33 Files for your project l You do not have to use complete file names l To open a file on your project directory just use its name: myfile.txt l You only have to use complete file names for files not in your project directory (for example, a flashdrive)

34 Statements for File I/O l Include fstream library l Open the file for reading or writing: n Use file name n Associate with file handle l Read/write the file using file handle l Close the file

Statements for Using Disk I/O #include // For file I/O ifstream inFile; // File handle for reading ofstream outFile; // File handle for writing inFile.open(“walk.txt”); // open file (read) outFile.open(“results.txt”);//open file (write) inFile >> variables; // Read into variables outFile << variables; // Write from variables infile.close( ); // close files outfile.close( ); 35

36 Opening a File On your project directory: inFile.open(“walk.txt”); On the flash drive: inFile.open(“F:\\walk.txt”); (assuming that F is the drive letter) In the temp directory on the C drive: inFile.open(“C:\\temp\\walk.txt”);

37 Why \\ and not \ in File Names l In character strings the backslash has a special meaning and is called the escape character l Use of the escape character means “The next character has a special meaning”

38 Use of the Escape Character l To insert a tab character: cout <<“\tThis is indented text”<<endl; l To end a line (go to next line): cout<<“Start new line\n”; l Use of \n is the same as endl l To use a backslash as a character: cout <<“Backslash:\\”;

What does opening a file do? l associates the C++ identifier (file handle) for your file with the physical (disk) name for the file l if the input file does not exist on disk, open is not successful l if the output file does not exist on disk, a new file with that name is created l if the output file already exists, it is erased l places a file reading marker at the very beginning of the file, pointing to the first character in it 39

40 Map Measurement Case Study You want a program to determine walking distances between 4 sights in the city. Your city map legend says one inch on the map equals 1/4 mile in the city. Read from a file the 4 measured distances between sights on the map and the map scale. Output to a file the rounded (to the nearest tenth) walking distances between the 4 sights.

41 // *************************************************** // Walk program using file I/O // This program computes the mileage (rounded to nearest // tenth of mile) for each of 4 distances, using input // map measurements and map scale. // *************************************************** #include // for cout, endl #include // for setprecision #include // for file I/O using namespace std; float RoundToNearestTenth( float ); // declare function Using File I/O

42 int main( ) { float distance1; // First map distance float distance2; // Second map distance float distance3; // Third map distance float distance4; // Fourth map distance float scale; // Map scale (miles/inch) float totMiles; // Total of rounded miles float miles;// One rounded mileage ifstream inFile; // Input file identifier ofstream outFile; // Output file identifier inFile.open(“walk.txt”); // on project directory // inFile.open(“F:\\walk.txt”); // on flashdrive // inFile.open(“C:\\temp\\walk.txt”); // in temp dir. on C outFile.open(“results.txt”);

43 // Get data from file inFile >> distance1 >> distance2 >> distance3 >> distance4 >> scale; totMiles = 0.0;// Initialize total miles // Compute miles for each distance on map miles = RoundToNearestTenth( distance1 * scale ); outFile << distance1 << “ inches on map is “ << miles << “ miles in city.” << endl; totMiles = totMiles + miles;

44 miles = RoundToNearestTenth( distance2 * scale ); outFile << distance2 << “ inches on map is “ << miles << “ miles in city.” << endl; totMiles = totMiles + miles; miles = RoundToNearestTenth( distance3 * scale ); outFile << distance3 << “ inches on map is “ << miles << “ miles in city.” << endl; totMiles = totMiles + miles; miles = RoundToNearestTenth( distance4 * scale ); outFile << distance4 << “ inches on map is “ << miles << “ miles in city.” << endl; totMiles = totMiles + miles;

45 // Write total miles to output file outFile << endl << “Total walking mileage is “ << totMiles << “ miles.” << endl; return 0 ;// Successful completion } // *************************************************** float RoundToNearestTenth ( /* in */ float floatValue) // Function returns floatValue rounded to nearest tenth. { return float(int(floatValue * )) / 10.0; }

Stream Fail State l when a stream enters the fail state, further I/O operations using that stream have no effect at all. But the computer does not automatically halt the program or give any error message l possible reasons for entering fail state include: invalid input data (often the wrong type) opening an input file that doesn’t exist opening an output file on a flashdrive that is already full 46

Entering File Name at Run Time #include // contains conversion function c_str ifstream inFile; string fileName; cout << “Enter input file name : “ << endl ; // prompt cin >> fileName ; // convert string fileName to a C string type inFile.open( fileName.c_str( ) ); 47

48 C Strings l C strings are the original (harder to use) way of using character strings l They have been replaced by strings (much easier to use) l However there are built-in functions (such as open) that require C strings l Remember that the parameter types you pass to a function must match what it expects

49 C Strings l C strings are used in other CS l For now use strings l For the built-in functions that require C strings convert them by: stringVariableName.c_str() This returns the C string equivalent of the string variable

50 The String Class l Strings are really a class l You create objects of the class: string filename; l You perform operations (call functions) on the object: filename.c_str() l The format is: object_name.function l More in other CS courses