Home English

Kuina-chan

くいなちゃんNov 18, 2017


プログラミング言語Kuin」の数値計算と文字列のチュートリアルです。

Kuinドキュメント」の内容を組み合わせた、実践的な使い方を示します。
目次

四則演算を行う

整数および小数の、四則演算や基本的な計算を行うには基本的な計算のように書きます。
func main()
  ; 整数の計算
  var a: int :: 5
  var b: int :: 3
  do cui@print("a + b = \{a + b}\n")
  do cui@print("a - b = \{a - b}\n")
  do cui@print("a * b = \{a * b}\n")
  do cui@print("a / b = \{a / b}\n")
  do cui@print("a % b = \{a % b}\n")
  do cui@print("a ^ b = \{a ^ b}\n")
  
  ; 小数の計算
  var x: float :: 2.4
  var y: float :: 1.3
  do cui@print("x + y = \{x + y}\n")
  do cui@print("x - y = \{x - y}\n")
  do cui@print("x * y = \{x * y}\n")
  do cui@print("x / y = \{x / y}\n")
  do cui@print("x % y = \{x % y}\n")
  do cui@print("x ^ y = \{x ^ y}\n")
end func
基本的な計算
実行すると、基本的な計算の実行結果のようになります。
a + b = 8
a - b = 2
a * b = 15
a / b = 1
a % b = 2
a ^ b = 125
x + y = 3.7
x - y = 1.1
x * y = 3.12
x / y = 1.84615
x % y = 1.1
x ^ y = 3.12086
基本的な計算の実行結果
a,add,bは「a+b」、a,sub,bは「a-b」、a,mul,bは「a*b」、a,div,bは「a/b」、a,div,bの余りは「a%b」、a,sup_bは「a^b」、と書きます。 それぞれint型とfloat型の両方に定義されています。
「2+3*4」は「14」になるなど、計算順序は数学の式と同様に行われます。

初等関数を使う

平方根、三角関数、対数関数、指数関数などの初等関数を使うには「lib」ライブラリを使います。
例えば、平方根と三角関数を使った例は初等関数の通りです。
func main()
  do cui@print("sqrt(2) = \{lib@sqrt(2.0)}\n")
  do cui@print("sin(pi / 3) = \{lib@sin(lib@pi / 3.0)}\n")
  do cui@print("cos(pi / 3) = \{lib@cos(lib@pi / 3.0)}\n")
  do cui@print("tan(pi / 3) = \{lib@tan(lib@pi / 3.0)}\n")
end func
初等関数
実行すると、「sqrt(2) = 1.41421」「sin(pi / 3) = 0.866025」「cos(pi / 3) = 0.5」「tan(pi / 3) = 1.73205」が出力されます。

素因数分解を行う

素因数分解など、専門的な数学計算を行うには「math」ライブラリを使います。
例えば、1015661489という数を素因数分解するには、素因数分解のように書きます。
func main()
  var primes: []int :: math@primeFactors(1015661489)
  for i(0, ^primes - 1)
    do cui@print("\{primes[i]}\n")
  end for
end func
素因数分解
実行すると、「97」「2957」「3541」が出力されます。

指定範囲の乱数を取得する

指定した範囲の乱数を取得するには、指定範囲の乱数のように書きます。
func main()
  for(1, 10)
    do cui@print("\{lib@rnd(1, 6)}\n")
  end for
  for(1, 10)
    do cui@print("\{lib@rndFloat(1.0, 6.0)}\n")
  end for
end func
指定範囲の乱数
実行すると、1以上6以下の整数の乱数と、1.0以上6.0未満の小数の乱数が、それぞれ10個ずつ出力されます。

文字列の長さを取得する

文字列の長さを取得するには、配列の要素数を取得する演算子「^」を使って文字列の長さの取得のように書きます。
func main()
  var x: []char :: "abc"
  var y: []char :: "de"
  var z: []char :: x ~ y
  do cui@print("\{z}\n")
  do cui@print("\{^z}\n")
end func
文字列の長さの取得
実行すると、「abcde」「5」が出力されます。

文字列の一部を抜き出す

文字列の一部を抜き出すには、配列のsubメソッドを使ってsubメソッドのように書きます
func main()
  var x: []char :: "abcde"
  var y: []char :: x.sub(1, 3)
  var z: []char :: x.sub(1, -1)
  do cui@print("\{y}\n")
  do cui@print("\{z}\n")
end func
subメソッド
実行すると、「bcd」「bcde」が出力されます。
subメソッドの引数は順に、「何番の要素から抜き出すか」「何文字抜き出すか(終端まで抜き出す場合は-1)」です。

文字列を区切り文字列で分割する

文字列を区切り文字列で分割したり結合するには、「split」メソッドや「join」メソッドを使ってsplitメソッドとjoinメソッドのように書きます
func main()
  var x: []char :: "ab<br>cd<br><br>e"
  
  ; 文字列の分割
  var y: [][]char :: x.split("<br>")
  for i(0, ^y - 1)
    do cui@print("\{y[i]}\n")
  end for
  
  ; 文字列の結合
  var z: []char :: y.join("<br>")
  do cui@print("\{z}\n")
end func
splitメソッドとjoinメソッド
実行すると、「ab」「cd」「」「e」「ab<br>cd<br><br>e」が出力されます。

文字列の左右の空白文字を削除する

文字列の左右の空白文字を削除するには、「trim」メソッドなどを使ってtrimメソッドのように書きます。
func main()
  var x: []char :: "  b  "
    do cui@print("a\{x}c\n")
    do cui@print("a\{x.trimLeft()}c\n")
    do cui@print("a\{x.trimRight()}c\n")
    do cui@print("a\{x.trim()}c\n")
end func
trimメソッド
実行すると、「a  b  c」「ab  c」「a  bc」「abc」が出力されます。
trimメソッドではスペースの他にも、改行やタブ文字なども削除されます。
1511006928ja