progs/lecture1.scala
author Christian Urban <urbanc@in.tum.de>
Mon, 07 Nov 2016 12:58:00 +0000
changeset 14 2d9defa8ad7f
parent 13 0ce25f816414
child 15 52713e632ac0
permissions -rw-r--r--
updated

// toList, toSet, toDouble
// function definition
// smart strings
// maps
// recursion
// webpages


//**Assignment (values)**
//=======================
val x = 42
val y = 3 + 4


//**Collections**
//===============
List(1,2,3,1)
Set(1,2,3,1)

1 to 10
(1 to 10).toList

(1 until 10).toList


//**Printing/Strings**
//====================

println("test")
val tst = "This is a " + "test" 
println(tst)

val lst = List(1,2,3,1)

println(lst.toString)
println(lst.mkString("\n"))

// some methods take more than one argument
println(lst.mkString("[",",","]"))

//**Conversion methods**
//======================

List(1,2,3,1).toString
List(1,2,3,1).toSet
"hello".toList
1.toDouble

//**Types**
//=========

// Int, Long, BigInt
// String, Char
// List[Int], Set[Double]
// Pairs: (Int, String)        
// List[(BigInt, String)]


//**Smart Strings**
//=================
""" """

//**Pairs/Tuples**
//================

val p = (1, "one")
p._1
p._2

val t = (4,1,2,3)
t._4

//**Function Definitions**
//========================

def square(x: Int): Int = x * x

//**Ifs control structures**
//==========================

def fact(n: Int): Int = 
  if (n == 0) 1 else n * fact(n - 1)


def fact2(n: BigInt): BigInt = 
  if (n == 0) 1 else n * fact2(n - 1)

def fib(n: Int): Int =
  if (n == 0) 1 else
    if (n == 1) 1 else fib(n - 1) + f(n - 2)


//a recursive function
def gcd(x: Int, y: Int): Int = 2 //??? 



//**Assert/Testing**
====================

//**For-Maps (not For-Loops)**
//============================

for (n <- (1 to 10).toList) yield square(n)

for (n <- (1 to 10).toList; m <- (1 to 10).toList) yield m * n

val mtable = for (n <- (1 to 10).toList; m <- (1 to 10).toList) yield m * n

mtable.sliding(10,10).toList.mkString(