Chapter 9 Files I/O: Files, Records and Fields Part 3 Last Materials on Files for Now • There are many important topics on Files we will not cover • Reports • • • • Detail data Summary data / reports Exception reports Voluminous outputs • Control breaks – know the theory behind this. (discuss) • Files • • • • Master files Transaction files Batch updates / interactive updates Temporary files • Error lists • Change lists • Finish up with a bit more on dialog boxes and move to databases. Save File Dialog Box • SaveFileDialog Box is similar to the OpenFile Dialog Box. • Allows user to Save a file without specifying a path at compile time. • Initially from scratch • Modified the contents of a file. • Rename as well. • We often want to write data to an output • Remember: Data must be written to files before it can be opened and processed, regardless of the format of the data. • Washington • Oregon • North_Carolina Olympia Salem Raleigh • Or Washington, Olympia, WA,5689263,West,6 Oregon,Salem,OR,3281974,West,6 North_Carolina,Raleigh,NC,7546493,South,3 or other formats WA 5689263West OR 3281974West NC 7546493South 6 6 3 Save File Dialog Box • Remember: All is ‘stream I/O’ and we create objects to help us use the streams, as in Dim swrFile As System.IO.Streamwriter Recall also, we can (Know what this does!) 1. Create a file from scratch (create) or 2. Add to an existing sequential file (create and append) Via: swrFile = System.IO.File.CreateText (‘filename.dat’) Or swrFile = System.IO.File.AppendText(‘filename.dat’) And then we can write individual lines or individual items (tokens, attributes, fields, …) via swrFile.WriteLine(strDetail) swrFile.Write(strDetail) Know the difference. Lastly, we close, as expected: swrFile.Close() What is Close()? AppendText? Where did they come from? Save File Dialog Box • But we want to use the Save File Dialog Box…. • Used for saving files produced under program control. 1 Double click on the SaveFileDialog control in your toolbox, and a SaveFileDialog box will appear in your component tray. 2. Go to the properties box and change the name to SaveAs (or something like that) 3. Go to your menu: File, SaveAs… and click it. This will bring you to your code window. (You can save a file anywhere, and you can set an initial directory and a filter if you wish as in OpenFileDialog.) You will get your event handler: Private Sub SaveAsToolStripMenuItem_Click (ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles SaveAsToolStripMenuItem.Click (This is the code I used; You may modify as you wish, but this worked.) Private Sub SaveAsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveAsToolStripMenuItem.Click Dim str As String Dim str1 As String str = "That is All Folks!" str1 = "War Eagle!“ ‘ National Champions 2010 ' Housekeeping Declarations Dim swrFile As System.IO.StreamWriter ‘ declares swrFile as variable SaveAs.InitialDirectory = "C:\Users\Bob\My Documents\Visual Studio 2010\Projects\ParallelArrays\ParallelArrays\bin\Debug“ SaveAs.Title = "Save As ... " SaveAs.ShowDialog() ' Insert desired file name to Save As... ' Inputted name is assigned to FileName parameter ' Creates an object swrFile that points to the file in FileName swrFile = System.IO.File.AppendText(SaveAs.FileName) ‘ declares swrFile object ' Prepares File for outline data swrFile.WriteLine(str) ‘ Puts data into output stream ‘ who writes this to output stream swrFile.WriteLine(str1) swrFile.Close() ‘ Always Close() End Sub Insert filename or ne Note the SaveAs Dialog Box title. Note the directory – default Can see my input file from previous slides Can see the file output file I previously produced (if used again, it will ask if you want to replace Input / Output • In all languages, I/O is a set of activities that likely cause more problems than any other set of instructions. • Very error prone. • In files, all records must have the same structure • Order of fields not important, but the order must be same • Be careful about the delimiter or field size • File cannot have a blank line in it or miss data. • File paths must be accurate. • If you open a file, close it. • Cannot backup in a sequential file; cannot skip around. • Understand Create a file and Append to a file. • Use Try…Catch blocks especially for I/O. Name Spaces • Similar to the Java API • Contains all the classes and methods and descriptions available to you in VB. • Depress F2 to bring up the NameSpace. • Everything is hierarchical. • E.g. System.IO namespace controls the IO functions. • Press F2 • See Microsoft VisualBaseic.FileIO • See TextFieldParser • Loop up SystemIO You get objects and method descriptions! Study Sheet for Exam 3 COP 2010 – Intro to Visual and Procedural Programming Friday, 8 April 2010 Closed book, closed notes, open minds, 50 minutes, in-class exam Essentially Chapter 10 – Arrays, Structures, Sorting, and Searching Arrays How do declare 1d and 2d arrays Use of .length property Array indices – proper bounds Proper array references Loading (populating) an array Via loops from input Via hard coding Parallel arrays Creating one array of different size from another e.g. array (m,n) to vector (m) (done in class) Passing arrays to functions (always by address, even if specify ByVal) Structure What is a structure? How does it differ from an array? Example? Sorting Bubble Selection Insertion Characteristics and differences Pseudo-code algorithms for each of these three types of sorts Big O as it pertains to data structures / algorithms What does O(n 2) mean? O(n)? O(log 2 n)? Order of data after each pass for each type of sort Searching Sequential search Binary search Iterative Recursive Best, average, and worst cases; Scenarios and number of operations Searching through, say, only a column or only a specific row of a 2d array. Searching through a populated 2d array counting the occurrences of, say, grades over 70 and less than 80; 80 and less than 90….. Display counts at end. Why / when would you use a binary search vice sequential search and why? Restrictions? Be certain to study the chapter terms, concepts, and questions at the end of chapter for some ‘free’ objective questions. They add up! Will give three or four performance questions and allow you to select, perhaps, two of these, likely from the suggestions above. manipulating array elements, such as summing items in a column summing elements in a diagonal Take A(m,n) and make it A(n,m) (Transpose of an array) Create a column vector from each row of a 2d array (done in class) Exam 4 will be on 22 April • Coverage: • Files • Databases • There will not be a comprehensive final exam. • Justin’s grading system will be used as much as possible. I do not anticipate any variation from her grading scheme at this point in time. • Project 4 – TBD. Will be on Databases. • Will want you to create, update, and query your database. • Small program, in the interest of time, but you need this for Web Access course!