1 / 35

Simple File I/O Chapter 11 Switch Statement Chapter 12

Simple File I/O Chapter 11 Switch Statement Chapter 12. Agenda . File names and file streams  Intro to Classes and Objects End-of-file Loops Formatting Output Switch statement. The need for files in programming.

ahmadn
Download Presentation

Simple File I/O Chapter 11 Switch Statement Chapter 12

An Image/Link below is provided (as is) to download presentation 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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Simple File I/O Chapter 11 Switch Statement Chapter 12

  2. Agenda • File names and file streams • Intro to Classes and Objects • End-of-file Loops • Formatting Output • Switch statement

  3. The need for files in programming • Oracle Testing—allows rapid data entry for thorough testing of all branches of code (every if, else, case, etc) • Recording Output—maintaining records of program executions • Word processing—storing documents that can be edited and revised when a word processor runs

  4. File Names and Types • A file name should reflect its contents • Payroll.dat • Students.txt • Grades.txt • A file’s extension indicates the kind of data the file holds • .dat, .txt general program input or output • .cpp C++ source file • .doc Microsoft word document

  5. I/O Streams • A stream in C++ is a conduit (pipe) through which data passes • Input passes through the istream object and output passes through the ostream object. Input and output are managed by the istream object cin and the ostream object cout • The istream class defines the use of the extraction operator ‘ >> ’ (used with cin)

  6. Stream Extraction and Insertion • #include <iostream> • Input (stream extraction): • cin • >> // takes data from stream and sticks in variable • Output (stream insertion): • cout • << // takes data from variable and puts into stream • Input (Extraction) skips whitespace! • ‘\n’, ‘\t’, ‘ ‘, ‘\r’, ‘\v’

  7. Input and Output File Streams • Input from a file is managed by an ifstreamobject in the same way that the input from the keyboard is managed by theistream object cin • Similarly, output to a file is managed by an ofstreamobject in the same way that the output to the monitor is managed by theostream object cout • The difference is that ifstream and ofstreamobjects have to be declared explicitly and initialized with the external name of the file which they manage • #include the <fstream.h> header file

  8. Files: Let’s Use Them • #include <fstream> • Declare a file stream variable • ifstream inFile; //input file stream • ofstream outFile; //output file stream • Open the files • inFile.open(“MyInput.dat”); • outFile.open(“MyOutput.dat”);

  9. Output File Stream Example #include<fstream> #include<iostream> void main() Create a new file stream newfile { ofstream newfile; Connect newfile to the file on disk newfile.open("students.txt"); newfile<<“this is written to the file”; cout<<“this is written to the monitor”; }

  10. Write a database file, Lab 9 prob 1) char done = 'y'; int acntnum; //an account number float balance; // an account balance ofstream outfile; // a file variable. outfile.open ("accnts.dat"); // prepare database file for writing a) Setting up Output File

  11. Lab 9 prob 1) continued // Now input values from keyboard and write to the disk. while (done != 'n') { cout << "enter an accnt number and balance: "; cin >> acntnum >> balance; outfile << acntnum << " " << balance << endl; cout << "another account? enter `y' or `n':"; cin >> done; } } b) Using output file Download Lab9 & Try 1) Now!

  12. Lab 9 Prob 2) Now Read database file Same file we wrote to float sum = 0.0; ifstream infile; // a file var. for the input infile.open ("accnts.dat"); //prepare file for reading for (n=0; n<3; n++) // sum 3 accounts... { infile >> acntnum >> balance; sum += balance; } cout << "The total of all accounts is: " << sum ;

  13. Always Close your Files • Don’t forget to close the files when you are done with them • infile.close( ); • outfile.close( ); • Handles any final writing and lets file be re-opened later in program. • Put this after all reads/writes are finished (usually right before program or function terminates)

  14. Alternative Opening Syntax • Instead of Declaring then opening: • ifstream infile; • infile.open(“accts.dat”); • You can Declare and Open in one statement • ifstream infile(“accts.dat”); • ofstream outFile(“accts.dat”);

  15. Agenda • File names and file streams • Intro to Classes and Objects • End-of-file Loops • Formatting Output

  16. Intro to Objects and Classes • An object is a variable that has functions and data associated with it • infile and outfile each have a function named open( ) associated with them • infile and outfile use differentversions of a function named open • One version of open is for input files • A different version of open is for output files

  17. Calling a Member Function • Calling a member function requires first specifying the object containing the function • The calling object is separated from the member function by the dot operator • Example: inFile.open(“accts.dat"); Member function Calling object Dot operator

  18. Classes • A type whose variables are objects, is a class • ifstream is the type of the infile variable (object) • ifstream is a class • The class of an object determines its member functions • Example:ifstreaminputFile, inputData; • inputFile.open and inputData.open are the same function but might be given different filenames to open

  19. Class Member Functions • The member functions an object can use are defined in its class definition • The class determines the member functions of the object • The class ifstream has an open function • Every variable (object) declared of type ifstream has that open function available

  20. Agenda • File names and file streams • Intro to Classes and Objects • End-of-file Loops  • Formatting Output

  21. Other Capabilities of File Streams • A File stream object maintains a true/false value that can be tested to check an operation ifstream infile; infile.open(“accts.dat”); if (!infile) { cout<<“file not found”; exit(1); } If open was unsuccessful… This message is displayed And program quits

  22. Loop until end-of-file • Process indefinite list in a file: infile>>acntnum>>balance; while(infile) { // process last data // get next data infile>>acntnum>>balance; } Check stream status after each read

  23. A more compact version • Process indefinite list in a file: while(infile>>acntnum>>balance) { // process data } Read data and Check status after each read

  24. Agenda • File names and file streams • Intro to Classes and Objects • End-of-file Loops • Formatting Output

  25. Tools for Stream Formatting • Running Lab 9 Prob 1, if we enter 111 123.45 222 444.777777777 33 12000000.22 • We get an accnts.dat file that looks like this: 111 123.45 222 444.778 33 1.2e+07

  26. Formatting Output to Files • Remember to #include <iomanip> • Use setprecision(2) -- • to force 2 digits of precision for all float data • Use fixed – • to force fixed point formatting (no e-notation allowed) for all following data • Use left (-- or right) • to justify (line up) on left or right side of column • strings look better with left, numbers with right • Use setw(10) • to output data right justified in a field of 10 spaces • Only applies to next data

  27. #include <iomanip> Lab 9 Prob1) With Formatting while (done != 'n') { cout << "enter an account number and balance: "; cin >> acntnum >> balance; outfile<<setprecision(2)<<fixed<< setw(10) << acntnum <<setw(15) << balance << endl; cout << "another account? enter `y' or `n':"; cin >> done; }

  28. The Result! • NOW running Listing 8.1 MODIFIED, if we enter 111 123.45 222 444.777777777 33 12000000.22 • We get an accnts.dat file that looks like this: 111 123.45 222 444.78 33 12000000.00

  29. 7 Creating Space in Output • The setw function specifies the number of spaces for the next item • Applies only to the next item of output • Example: To print the digit 7 in four spaces useoutfile<<setw(4)<< 7 << endl; • Three of the spaces will be blank (ios::left)

  30. switch Statement • Can be used instead of if-else-if switch(expression) { case constant1: statementList1; case constant2: statementList2; … case constantN: statementListN; default: statementList0; }

  31. switch in Practice…a menu char choice; cout<<enter P for payroll, E for employee info, Q to quit”<<endl; cin>>choice; switch (choice) { case ‘P’: cout<<“processing payroll”; break; case ‘E’: case ‘e’: cout<<“processing employee”; break; default: cout << “Quitting program”; break; }

  32. switch in Practice…ATM menu loop do { menu(); // display menu cin>>choice; switch(choice) { case 'B': balance(userID); break; case 'T‘: totalBalance(); break; default:cout<<"Command notvailable”; } } while(choice !='Q'); Use break to avoid “falling through”

  33. Sample Final Exam Problem… 12. what is the exact output of the following program segment? for (int k=0; k<8; k++) switch(k) { case 0: case 7: cout<<"R"; break; case 2: cout<<"I"; break; case 3: cout<<"N"; break; case 4: cout<<"D"; break; default: cout<<"E"; break; }

  34. Sample Final Exam Problem…with twist 12. what is the exact output of the following program segment? for (int k=0; k<8; k++) switch(k) { case 0: case 7: cout<<"R";  forgot break case 2: cout<<"I"; break; case 3: cout<<"N";  forgot break case 4: cout<<"D"; break; default: cout<<"E"; break; }

  35. Finally !!! … THE END 

More Related