⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 course-2002-01.scala

📁 JAVA 语言的函数式编程扩展
💻 SCALA
字号:
//############################################################################// Programmation IV - 2002 - Week 01//############################################################################// $Id: Course-2002-01.scala 5359 2005-12-16 15:33:49Z dubochet $object M0 {  //##########################################################################  Console.println(87 + 145);  Console.println(1000 - 333);  Console.println(5 + 2 * 3);  //##########################################################################  def size = 2;  def pi = 3.14159;  def radius = 10;  def circumference = 2 * pi * radius;  Console.println(5 * size);  Console.println(2 * pi * radius);  Console.println(circumference);  Console.println((2 * pi) * radius);  //##########################################################################  def square(x: Double) = x * x;  Console.println(square(2));  Console.println(square(5 + 4));  Console.println(square(square(4)));  //##########################################################################  def sumOfSquares(x: Double, y: Double) = square(x) + square(y);  Console.println(sumOfSquares(3, 2+2));  //##########################################################################  def loop: Int = loop;  def first(x: Int, y: Int) = x;  def constOne(x: Int, y: => Int) = 1;  Console.println(constOne(1, loop));  //##########################################################################  def abs(x: Double) = if (x >= 0) x else -x;  Console.println(abs(737));  Console.println(abs(1));  Console.println(abs(0));  Console.println(abs(-1));  Console.println(abs(-76));  //##########################################################################  def sqrtIter0(guess: Double, x: Double): Double =    if (isGoodEnough0(guess, x)) guess    else sqrtIter0(improve0(guess, x), x);  def improve0(guess: Double, x: Double) =    (guess + x / guess) / 2;  def isGoodEnough0(guess: Double, x: Double) =    abs(square(guess) - x) < 0.001;  def sqrt0(x: Double) = sqrtIter0(1.0, x);  Console.println(sqrt0(2));  Console.println(sqrt0(3));  Console.println(sqrt0(4));  //##########################################################################  def sqrt1(x: Double) = {    def sqrtIter1(guess: Double, x: Double): Double =      if (isGoodEnough1(guess, x)) guess      else sqrtIter1(improve1(guess, x), x);    def improve1(guess: Double, x: Double) =      (guess + x / guess) / 2;    def isGoodEnough1(guess: Double, x: Double) =      abs(square(guess) - x) < 0.001;    sqrtIter1(1.0, x)  }  Console.println(sqrt1(2));  Console.println(sqrt1(3));  Console.println(sqrt1(4));  //##########################################################################  def sqrt2(x: Double) = {    def sqrtIter2(guess: Double): Double =      if (isGoodEnough2(guess)) guess      else sqrtIter2(improve2(guess));    def improve2(guess: Double) =      (guess + x / guess) / 2;    def isGoodEnough2(guess: Double) =      abs(square(guess) - x) < 0.001;    sqrtIter2(1.0)  }  Console.println(sqrt2(2));  Console.println(sqrt2(3));  Console.println(sqrt2(4));  //##########################################################################}//############################################################################object M1 {  def abs(x: Double) = if (x >= 0) x else -x;  def sqrt(x: Double): Double = {    def sqrtIter(prev: Double, guess: Double): Double =      if (isGoodEnough(prev, guess)) guess      else sqrtIter(guess, improve(guess));    def improve(guess: Double) = (guess + x / guess) / 2;    def isGoodEnough(prev: Double, guess: Double) =      abs(prev - guess) / guess < 0.001;    sqrtIter(1.0, improve(1.0))  }  Console.println("sqrt(2) = " + sqrt(2));}//############################################################################object M2 {  def abs(x: Double) = if (x >= 0) x else -x;  def sqrt(x:Double):Double = {    def sqrtIter(guess:Double):Double = {      val next = improve(guess);      if (isGoodEnough(guess,next)) next      else sqrtIter(next)    }    def improve(guess:Double) = (guess+x/guess)/2;    def isGoodEnough(prev:Double,guess:Double) = abs(prev-guess)/guess<0.001;    sqrtIter(1.0)  }  Console.println("sqrt(2) = " + sqrt(2));}//############################################################################object M3 {  def abs(x: Double) = if (x >= 0) x else -x;  def cbrt(x:Double):Double = {    def cbrtIter(guess:Double):Double = {      val next = improve(guess);      if (isGoodEnough(guess,next)) next      else cbrtIter(next)    }    def improve(y:Double) = (x/(y*y)+2*y)/3;    def isGoodEnough(prev:Double,guess:Double) = abs(prev-guess)/guess<0.001;    cbrtIter(1.0)  }  Console.println("cbrt(2) = " + cbrt(2));}//############################################################################object M4 {  def pascal(c: Int, l: Int): Int =    if (c <= 0 || c >= l) 1    else pascal(c - 1, l - 1) + pascal(c, l - 1);  Console.print(pascal(0,0));  Console.println;  Console.print(pascal(0,1));  Console.print(' ');  Console.print(pascal(1,1));  Console.println;  Console.print(pascal(0,2));  Console.print(' ');  Console.print(pascal(1,2));  Console.print(' ');  Console.print(pascal(2,2));  Console.println;  Console.print(pascal(0,3));  Console.print(' ');  Console.print(pascal(1,3));  Console.print(' ');  Console.print(pascal(2,3));  Console.print(' ');  Console.print(pascal(3,3));  Console.println;  Console.print(pascal(0,4));  Console.print(' ');  Console.print(pascal(1,4));  Console.print(' ');  Console.print(pascal(2,4));  Console.print(' ');  Console.print(pascal(3,4));  Console.print(' ');  Console.print(pascal(4,4));  Console.println;}//############################################################################object Test {  def main(args: Array[String]): Unit = {    M0;    M1;    M2;    M3;    M4;    ()  }}//############################################################################

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -