{ }codelper

学ぶ › Craykon

言語ごとの特徴 · 43

Craykon ならではのきまり

母語で書けるキーワード、計算を止める「なし」、厳密な ==、下へ流れない選択。

この単元は Craykon 向けです。
この単元は Craykon そのものの話です。
ほかの7言語のキーワードは英語(if・for・return)だけです。

Craykon はキーワードを母語で書け、なし・==・選択 がほかの言語より厳密です。
下の例は欠席(-)を なし として入れた点数のリストから、なしは飛ばし、残りを 選択 で成績分けしてから平均を出します。

n = コンソール.行読み().数に();점수들 = [];繰り返す (i = 0; i < n; i++){    줄 = コンソール.行読み();    もし (줄 == "-")    {        점수들.追加(なし);    }    でなければ    {        점수들.追加(줄.数に());    }}합 = 0;낸사람 = 0;それぞれ (점수 の中 점수들){    もし (점수 == なし)    {        コンソール.書く("? " + 점수);        次へ;    }    합 += 점수;    낸사람 += 1;    選択 (数学.切り下げ(점수 / 10))    {        場合 10:        場合 9:            コンソール.書く(점수 + " A");            抜ける;        場合 8:            コンソール.書く(점수 + " B");            抜ける;        それ以外:            コンソール.書く(점수 + " C");            抜ける;    }}コンソール.書く(합 / 낸사람);コンソール.書く("85" == 85);
stdin
5
92
-
78
85
-
stdout
92 A
? 빈값
78 C
85 B
? 빈값
85
false

ポイント

  • キーワードは母語で書けます。
    1つのスクリプトの中で混ぜても同じプログラムなので、もし (n > 3) { Console.WriteLine(n); } も動きます。
  • 保存されて実行されるプログラムは1つなので、画面の言語を変えると同じコードがその言語で表示し直されます。
    エディタでは同じコードをタイルで組み立てることもでき、タイルと文字を行き来しながら直してかまいません。
  • なし は「値がない」ことです(ほかの言語の null・None)。
    なしで計算したり大小を比べたりすると、その場で止まります。
    文字列とつなぐと止まらず 빈값(なしの韓国語名)と表示されます(例の ? 빈값)。
  • == は厳密です。
    型が違えば必ず偽なので、0 == 偽 も 偽 です(画面には false)。
    JavaScript の === と同じだと考えてください。
  • 選択 は合った場合を1つだけ実行し、下へ流れ落ちないので 抜ける は書かなくてかまいません。
    複数の値は 場合 10, 9: のようにカンマでまとめます。
  • 数は1種類だけです(JavaScript と同じ64ビットの浮動小数点数)。
    7 / 2 は 3.5 なので、十の位は 数学.切り下げ(점수 / 10)、整数の割り算は 数学.商(7, 2)(→ 3)を使います。
    2^53 を超える整数は正確ではありません。

言語ごとの書き方

Craykon日本語のキーワード もし・でなければ・繰り返す・それぞれ・間・返す・選択 は、英語で if・else・for・foreach・while・return・switch、韓国語で 만약・반복…、中国語で 如果・循环… です。
名前も コンソール.書く・Console.WriteLine・콘솔.쓰기・控制台.输出 はどれも同じものです

よくある間違い

なしで計算した

点数 = なし;
コンソール.書く(点数 + 1);

→ なしでは計算できない(+)というエラーで止まります。JavaScript は null + 1 が 1、undefined + 1 が NaN になって黙って間違った数を出しますが、Craykon はそういう数を作りません

計算の前に もし (点数 == なし) で先に確かめます。

キーワードを変数名に使った

場合 = 3;

→ case・default は選択(switch)の中だけで使うというエラー。すべての言語のキーワードが予約語なので、自分・場合・の中・if・경우 も名前に使えません

キーワードではない別の名前を選びます。

読んだ文字列をそのまま数と比べた

コンソール.書く("85" == 85);

→ false — コンソール.行読み() で読んだ値はいつも文字列で、型が違えば == は偽です

数と比べるなら、先に .数に() で変えます。

言語ごとの違い
なしは計算に入った瞬間に止まります。
リストや入力になしが混ざる可能性があるなら、足したり比べたりする前に == なし で先に取り除いてください。

練習問題