updated
authorChristian Urban <urbanc@in.tum.de>
Wed, 06 Nov 2019 00:36:45 +0000
changeset 314 21b52310bd8b
parent 313 dea46bdfd648
child 315 7ea440e1ffbb
updated
cws/cw01.pdf
cws/cw01.tex
pics/blow.png
progs/lecture1.scala
slides/slides01.pdf
slides/slides01.tex
testing1/collatz.scala
testing1/drumb_test.sh
testing1/drumb_test3.scala
Binary file cws/cw01.pdf has changed
--- a/cws/cw01.tex	Tue Nov 05 00:41:02 2019 +0000
+++ b/cws/cw01.tex	Wed Nov 06 00:36:45 2019 +0000
@@ -245,9 +245,9 @@
   (first line), 2011 (second line) and 2012 (third line) you obtain:
 
 \begin{verbatim}
-  List(List(Some(311.349976), Some(20.544939)), 
-       List(Some(300.222351), Some(31.638695)), 
-       List(Some(330.555054), Some(39.478039))))
+  List(List(Some(312.204773), Some(26.782711)), 
+       List(Some(301.0466), Some(41.244694)), 
+       List(Some(331.462585), Some(51.464207))))
 \end{verbatim}\hfill[1 Mark]
 
 
Binary file pics/blow.png has changed
--- a/progs/lecture1.scala	Tue Nov 05 00:41:02 2019 +0000
+++ b/progs/lecture1.scala	Wed Nov 06 00:36:45 2019 +0000
@@ -5,10 +5,13 @@
 // (their names should be lower case)
 //====================================
 
+//var z = 9
+//z = 10
 
 val x = 42
 val y = 3 + 4
 val z = x / y
+val x = 70
 
 // (you cannot reassign values: z = 9 will give an error)
 
@@ -41,6 +44,7 @@
 // ranges
 1 to 10
 (1 to 10).toList
+(1 to 10).toList.toString
 
 (1 until 10).toList
 
@@ -69,9 +73,9 @@
 List(1,2,3) == List(3,1,2)
 
 
-// this applies to "concrete" values...pretty much everything;
-// but for example you cannot compare functions (later),
-// and also not Arrays
+// this applies to "concrete" values...pretty much 
+// everything; but for example you cannot compare 
+// functions (later), and also not arrays
 
 Array(1) == Array(1)
 
@@ -97,6 +101,7 @@
 println(lst.mkString(", "))
 
 // some methods take more than one argument
+
 println(lst.mkString("{", ",", "}"))
 
 // (in this case .mkString can take no, one, 
@@ -166,7 +171,7 @@
 
 
 // type errors
-math.sqrt("64")
+math.sqrt("64".toDouble)
 
 // produces
 //
@@ -193,6 +198,15 @@
 // Function Definitions
 //======================
 
+def foo(s: String) : String = {
+  val tmp = s ++ s ++ s
+  val res = s ++ s
+  res
+}
+
+
+foo("test")
+
 def incr(x: Int) : Int = x + 1
 def double(x: Int) : Int = x + x
 def square(x: Int) : Int = x * x
@@ -205,15 +219,14 @@
 str(3)
 
 
-// The general scheme for a function: you have to give a type 
-// to each argument and a return type of the function
+// The general scheme for a function: you have to give a 
+// type to each argument and a return type of the function
 //
 //  def fname(arg1: ty1, arg2: ty2,..., argn: tyn): rty = {
-//    body 
+//    
 //  }
 
 
-//
 // BTW: no returns!!
 // "last" line (expression) in a function determines the 
 // result
@@ -250,7 +263,6 @@
 
 fact2(150)
 
-
 def fib(n: Int) : Int =
   if (n == 0) 1 else
     if (n == 1) 1 else fib(n - 1) + fib(n - 2)
@@ -276,13 +288,13 @@
 // For-Comprehensions (not For-Loops)
 //====================================
 
-
+(1 to 10).toList
 for (n <- (1 to 10).toList) yield { 
   square(n) + 1
 }
 
 for (n <- (1 to 10).toList; 
-     m <- (1 to 10).toList) yield m * n
+     m <- (1 to 10).toList) yield (m, n)
 
 
 // you can assign the result of a for-comprehension
@@ -296,15 +308,20 @@
 
 // the list/set/... can also be constructed in any 
 // other way
+
 for (n <- Set(10,12,4,5,7,8,10)) yield n * n
 
+for (n <- (1 to 10)) yield {
+  n * n  
+}
+
+if (1 == 2) "a" else "b"
 
 // with if-predicates / filters
 
 for (n <- (1 to 3).toList; 
      m <- (1 to 3).toList;
-     if (n + m) % 2 == 0;
-     if (n * m) < 2) yield (n, m)
+     if (n + m) % 2 == 0) yield (n, m)
 
 for (n <- (1 to 3).toList; 
      m <- (1 to 3).toList;
@@ -330,13 +347,15 @@
 // Functions producing multiple outputs
 //======================================
 
-def get_ascii(c: Char) : (Char, Int) = (c, c.toInt)
+def get_ascii(c: Char) : (Char, Int) = 
+  (c, c.toInt)
 
 get_ascii('a')
 
 
 // .maxBy, sortBy with pairs
-def get_length(s: String) : (String, Int) = (s, s.length) 
+def get_length(s: String) : (String, Int) = 
+  (s, s.length) 
 
 val lst = List("zero", "one", "two", "three", "four", "ten")
 val strs = for (s <- lst) yield get_length(s)
@@ -356,7 +375,8 @@
 
 for (n <- (1 to 10)) println(n)
 
-
+(1 to 10).toList
+(1 until 10).toList
 // BTW: a roundabout way of printing out a list, say
 val lst = ('a' to 'm').toList
 
Binary file slides/slides01.pdf has changed
--- a/slides/slides01.tex	Tue Nov 05 00:41:02 2019 +0000
+++ b/slides/slides01.tex	Wed Nov 06 00:36:45 2019 +0000
@@ -197,8 +197,8 @@
 \multicolumn{2}{r@{}}{\footnotesize$^*$ source: Stackoverflow Developer Survey, 2019}
 \end{tabular}  
 \end{center}
-\RIGHTarrow{2}{2.3}{5.45}
-\DOWNarrow{2}{10.1}{3.6}
+\RIGHTarrow{2}{2.4}{6.4}
+\DOWNarrow{2}{10.1}{4.4}
 }
 
 
@@ -518,8 +518,7 @@
       \item Preliminary Part 8: 4\% (27 November)
       \item Preliminary Part 9: 4\% (5 December) 
     \end{itemize}\medskip    
-  \item Core Part: 35\% (15 January 2020) 
-  
+  \item Core Part: 35\% (15 January 2020)\bigskip 
 \end{itemize}
 \end{frame}
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -766,7 +765,21 @@
 \end{center}
 \end{frame}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
-\end{document}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{frame}[t]
+
+\begin{center}  
+\includegraphics[scale=0.4]{../pics/blow.png}
+\end{center}
+
+\begin{textblock}{14}(2,12.4)
+\Large\bf{}Mind-Blowing\\ Programming Languages: C/C++
+\end{textblock}
+\end{frame}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  
+
 
 
 \end{document}
--- a/testing1/collatz.scala	Tue Nov 05 00:41:02 2019 +0000
+++ b/testing1/collatz.scala	Wed Nov 06 00:36:45 2019 +0000
@@ -7,11 +7,12 @@
 object CW6a { 
 
 
-def collatz(n: Long): Long =
+/*
+ * def collatz(n: Long): Long =
   if (n == 1) 0 else
     if (n % 2 == 0) 1 + collatz(n / 2) else 
       1 + collatz(3 * n + 1)
-
+*/
 
 def collatz_max(bnd: Long): (Long, Long) = {
   val all = for (i <- (1L to bnd)) yield (collatz(i), i)
@@ -30,6 +31,20 @@
 */
 
 
+
+
+def collatz(n: Long) : Long = {
+    if (n == 1) {
+        1L
+    } else {
+        if (n % 2 == 0) {
+            collatz(n/2) + 1
+        } else {
+            collatz((n*3)+1) + 1
+        }
+    }
+}
+
 }
 
 
--- a/testing1/drumb_test.sh	Tue Nov 05 00:41:02 2019 +0000
+++ b/testing1/drumb_test.sh	Wed Nov 06 00:36:45 2019 +0000
@@ -92,10 +92,10 @@
 
 if [ $tsts -eq 0 ]
 then
-  echo -e "  get_prices(List(\"GOOG\", \"AAPL\"), 2010 to 2012) ==" >> $out
-  echo -e "       List(List(Some(311.349976), Some(20.544939))," >> $out 
-  echo -e "            List(Some(300.222351), Some(31.638695))," >> $out 
-  echo -e "            List(Some(330.555054), Some(39.478039)))" >> $out
+  echo "  get_prices(List(\"GOOG\", \"AAPL\"), 2010 to 2012) ==" >> $out
+  echo "       List(List(Some(312.204773), Some(26.782711))," >> $out
+  echo "            List(Some(301.0466),   Some(41.244694))," >> $out
+  echo "            List(Some(331.462585), Some(51.464207)))" >> $out
 
   if (scala_assert "drumb.scala" "drumb_test3.scala")
   then
--- a/testing1/drumb_test3.scala	Tue Nov 05 00:41:02 2019 +0000
+++ b/testing1/drumb_test3.scala	Wed Nov 06 00:36:45 2019 +0000
@@ -1,9 +1,10 @@
 import CW6b._
 
-assert(get_prices(List("GOOG", "AAPL"), 2010 to 2012) ==
-    List(List(Some(311.349976), Some(20.544939)), 
-         List(Some(300.222351), Some(31.638695)), 
-         List(Some(330.555054), Some(39.478039))))
-
 
 
+assert(get_prices(List("GOOG", "AAPL"), 2010 to 2012) ==
+   List(List(Some(312.204773), Some(26.782711)), 
+        List(Some(301.0466), Some(41.244694)), 
+        List(Some(331.462585), Some(51.464207))))
+
+