goo blog サービス終了のお知らせ 

新しいアカウントで始めました。

身の回りの出来事や写真が中心です。

孫用の計算スクリプト、少し直してみました。

2023-04-08 12:05:04 | Scala

 

 前は、env.read.eval.printで一連の処理でしたが、入力でエラーが有ったとき、終了したいときの処理がうまく出来ませんでした。27行目に終了したいときの処理を入れました。

cLass Jyoukenは変更なし。

env.readも同じ。

 ローカルな関数def str2Intを見つけたので、"e"が入力されたときの判断にInt.MaxValueを使います。エラーの時はInt.MinValueになるので、エラーの時はループします。

env.printも変わりない。下は実行した画面。

答えのとこで、"e"と入力で終了します。に変更。


ScalaでSwapの例題があったので、やってみましたが、不可解です。

2023-03-28 23:13:54 | Scala

val aryとval cngary違う変数みたいに見えますが、同じ場所を指している、と思えますが何故?

関数の呼び方を変えても、結果は同じです。cngaryはaryの別名(アリアス)みたい。自分的にはval cngary = aryだったら分かるんですがね。

 


cametan_42さんの問題をVBをからScalaへ、変えてみてます。breakを取ってみました。

2023-03-26 11:07:38 | Scala

 

 breakを取ってみました。終了判定用の変数、カウンタ用の変数の追加とwhile文を追加で、不可能では無いようです。Scalaのforは基本、途中で止めるものでは無いとかです。

アノテーションは省略でしたが、ほぼ自動で追加できました。関数では省略できないようです。


Scalaで文字列から文字列を削除してみます。トランプの例題を使います。

2023-03-23 21:52:12 | Scala

ワーニングはmaxが5以外の値を取らない、で出てます。

関数の引数であるallcardsは変更できないようです。var allcardを変更して、返してます。whileが少し面倒。

allcardsは、変わらないので、val ansに答えを入れてます。

答えをプリントが残ってます。VBでやった通りで出来ると思います。


Scala、二重ループはどう書く?

2023-03-23 13:07:47 | Scala

 5行目と14行目に注目です。配列の添字が1から始まるとか、0から始まるとか、最後の添字は配列の大きさ-1とか関係なくなってますね。13行目から18行目は、Scala独特ですかね?

前の課題のトランプの作成と同じ機能です。


Scala、traitでも、悩んでました!

2023-03-14 20:29:45 | Scala

 trait、abstractは似てます。それだけでインスタンスを作れません。extendsを使って、例えばKotobaクラスのスーパークラスになれるとこも似てます。traitはextendsを使ってサブクラスを作ったものに付け加える、事ができる。それはこの次にします。

 この例ではスーパークラスとサブクラスのメソッドが違うので、良かったのですが、同じだった場合overrideかsuperを使えばどっちのメソッドも使えるように思うですが。

 どうもmainでは、super.TellMessageと類似したsuper.am.TellMessageのようには書けないようです。またはsuper am.TellMessageとも書けないようです。


Scala、extends、abstractで暫く悩んでました。

2023-03-13 15:08:02 | Scala

 下は「Rubyプログラミング入門」の例をScalaで置き換えて見ました。Foo、Barともインスタンスを作れますが、FooはBarのスーパークラスにもなれます。

 下の図では、def contentが実装されてません。Stringを返す宣言だけしてます。C言語などのプロトタイプみたいに見えます。def greetingは実装できます。abstractが付いているClassはインスタンスを作れないので、継承されないと使えません。9行目と10行目は、コップ本では臭いと表現してますが、普通の感じです。12行目から14行目はそれを簡略化してます。

greetingはスーパークラスにしか無いので、それが使われるようです。

 ここ四日ばかりWBCをずーと見ていました。岩手が生んだ、大谷翔平選手、佐々木朗希投手素晴らしい。山本由伸も素晴らしい。


Scala、Pointクラス、Sankakuクラス見直しました。

2023-03-01 14:28:02 | Scala

 下は今までのもの。上は今回直したもの。Pointクラスの最後にあるthis。大して必要がない感じでしたが、これは大事でした。下のPointクラスにあるdef get_xとdef get_yは、必要ありませんでした。混乱防止のためには、あっても良いかも。

今日で、三角形の面積計算を終わりにします。


前回に視点を変えて、四分の一の円の面積を求めて、近似値のπを出してみました。

2023-02-28 21:49:05 | Scala

23行目から追加しました。19個のPointで隣り合う二個と原点との3個で、三角を作って、面積を出して、πr*rなのでπがどの程度でるか?

座標の点をDoubleに変更。後はDoubleにしないと思います。

整数以外の点だと、誤差が出てくるのかもしれません。3.1までしかあってません。


Scala、Sankakuクラスを継承してShikakuクラスを作ってみました。

2023-02-28 09:05:33 | Scala

前回、クラスで無駄がありました。それを削除しいました。

 

 

 

 

 上の図の、Shikakuにタイポが付いてますが、何故か消えません。Mensekikeisanはoverride指定して、w1(Sankakuのインスタンス)では、SankakuクラスのMensekikeisanが呼ばれるようです。

 

 Shikakuクラスを作ったんですが、Sankakuクラスだけあれば、後はPointクラスのインスタンス、3個を配列にして、在るだけ計算すれば、どんな図形でも計算できそうです。只今はIntですが、Doubleでないとダメかもしれません。


Scalaの基本を試してました。for、foreach、Array、List、for{…}yield、map、無名関数など。

2023-02-26 15:48:08 | Scala

 

 Scalaは関数型でも書けるとありますが、其のためには、言語をよく知ってないとダメのようです。前に書きましたが、配列の合計を出す場合、要素を一個一個調べて足してゆく、となるとvar sumとかが必要になりますが、配列の名前をaryとしてary.sumで合計が出るので、代入の変数はval kekkaですみます。できるだけループしない。varは使わない。それが関数型プログラミングへの道らしい。cametan_42さんの受け売りです。(笑)("さん"抜けてました。失礼しました。)

 もう一個気づいたのが、サンプルにあったのですが、一見必要のないようなブロックがあります。{}で囲まれてます。どうやらそれをすることによって、独立した一文と扱われるようです。なので同じ変数名があっても、宣言の二重にならない。もう一つありました。タイポです。これはタイプミスの可能性を指摘しているもので。Alt+Rtnで登録を選べば、消えます。前は変数名に出るなあ?と思ってました。


小学生、低学年用の簡単な計算問題作ってみました!

2023-02-24 21:58:25 | Scala

Class Jyoukenを入れてみました。今のままだと、3回間違えるまで続きます。

 Scalaには、VBなどで言うCall By Refが無いらしい。只出来ないということでなくて、kekkaは2個の要素を持つArrayですが、ちゃんと出来ているようです。

割り算は、0で割らないようにしてます。引き算は、マイナスにならないようにしてます。

レベルアップと言っても、一廻りすると、元のレベルに戻ります。割り算は、小数点以下なしです。整数部分だけの割り算です。

追記)WPにコード貼り付けてみました。