Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Loops and Reading from Files3-5-2012Opening DiscussionMidterm answers.Minute essay commentsArrays if matrices.Using a HUD while driving.Advice on low cost gaming machine.How fast can I skate 20 laps and do I play roller hockey?Consider watching instead of following.while LoopRecursion is sufficient for making repetition, but in imperative languages it isn't the normal approach. Instead, people use loops.The simplest loop is the while loop.while(condition) st at ementThe condition is evaluated first. If it is true the statement (possibly a block) executes.This repeats until the condition is false.do-while LoopThe partner to the while loop is the do-while loop.do {statement} while(condi t ion)This loop is post-check instead of the pre-check of the normal while loop.Always happens once.The while loop might never happen.The for LoopThe most commonly used loop in most languages is the for loop. The Scala version is a bit different from most.Often used for counting:for(i <- 1 to 10) { ... }In general it is a “for each” loop that goes through a collection.for(e <- coll) { ... }Variable takes on value of each element in the collection.Range TypeRange types provide an easy way to make collections for counting.“to” and “until” operate on numeric types to produce ranges.1 to 100 until 10Use “by” to change the stepping in a range.1 to 100 by 210 to 1 by -1'a' to 'z' by 3yieldThe for loop can be used as an expression if you put yield between the end of the for and the expression after it.for(e <- coll) yield ex prWhat you get back will be a collection that is generally of the same type as what you iterated over.if GuardsYou can put conditions in the for that will cause some values to be skipped.for(n <- nums; if n%2==0) ...Multiple GeneratorsYou can also put multiple generators in a for loop.for(i <- 1 to 10; j <- i to 10) ...You can combine as many generators and guards as you want. You can also declare variables in the middle of the for.The thing you assign into is like a val so it can be a “pattern”. We have only seen this with tuples so far.Multidimensional ArraysYou can have collections of collections. A common example would be something like Array[Array[Double]] to represent a matrix.Both fill and tabulate can be used to make these.val ident=Array.tabulate(3,3)((i,j) => if(i==j) 1.0 else 0.0)MotivationPrograms are more useful when they can interact with files.Everything that isn't in a file is lost when the program stops running.I/O RedirectionUsing I/O redirection gives you some very basic ability to read from and write to files.It has big limitations though because there is only one file each way.More over, that one file blocks the ability to use either standard input or output.Packages and ImportsTo read from a file we will be using the scala.io.Source type. To understand what that means, we need to talk about packages.Packages provide a way to organize code and group things of like functionality.Import statements let you use things without typing in their fully specified names.The APITo get a sense of the different package in Scala, it is helpful to look at the API.There are still lots of things in the API you won't fully understand. That isn't a problem as you aren't expected to get too much from it right now.scala.io.SourceCall Source.fromFile(fileName:String) to get a Source object that reads from a file.There are other methods in the main Source object that we will learn about later.The fromFile method technically gives you BufferedSource. This is for efficiency.IteratorsBoth Source and BufferedSource are of the type Iterator[Char].An Iterator has most of the methods you are used to from List and Array. However, you can only go through it once.Fundamentally uses hasNext and next methods.getLinesThis will give you an Iterator[String] that will go through the file one line at a time instead of a character at a time.You will often find this more useful.Minute EssayWhat questions do you have?IcP #5 on Friday (note this is moving back a
View Full Document