趣味の楽園
From Cassy
■C#プログラム
学生の時にFortran言語を学んだ記憶はありますが、まとまったプログラムを作ったことはありませんでした。1981年頃に初期のパソコンでBasic言語と出会いました。 Basic言語は意外と簡単で、しかも実用的なアプリを作ることがでました。事務処理のコンピュータ化の始まりです。1995年Windows95の出現でMS-DOSからwindowsへ移行し、Basic言語が不向きとなりました。プログラム言語もVisual Basic、C言語、C#言語へと移行していきました。ここでは、数年前からはじめたC#言語で自作したアプリをご紹介します。それぞれのタイトルをクリックするとC#コードが見られます。
![ドリル足し算](https://static.wixstatic.com/media/853c17_788b88b137164deaab814af56a572b53~mv2.png/v1/fill/w_351,h_196,al_c,q_85,enc_avif,quality_auto/853c17_788b88b137164deaab814af56a572b53~mv2.png)
![ストップウォッチ](https://static.wixstatic.com/media/853c17_979773f3a3eb4769a9250c757fe70160~mv2.png/v1/fill/w_297,h_196,al_c,q_85,enc_avif,quality_auto/853c17_979773f3a3eb4769a9250c757fe70160~mv2.png)
はじめに足し算のドリルを作ってみました。次に、デジタル表示なら作りやすいと思いストップウォッチを作ってみましたが、タイムカウンターに戸惑いました。また、ボタンのオンオフと他のボタンとの関連性に時間を費やしました。アナログ時計では表示とクリアのタイミング、そして秒針のスムースな動きを表現するのがポイントでした。
![アナログ時計](https://static.wixstatic.com/media/853c17_3720d8f2d18c4a80a63211bb34626a9e~mv2.png/v1/fill/w_288,h_299,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/853c17_3720d8f2d18c4a80a63211bb34626a9e~mv2.png)
![フラクタルC曲線](https://static.wixstatic.com/media/853c17_21b98644d1084494a08f4f5c16744fe3~mv2.png/v1/fill/w_486,h_374,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/853c17_21b98644d1084494a08f4f5c16744fe3~mv2.png)
![フラクタルツリー曲線](https://static.wixstatic.com/media/853c17_6b8e524f02a14afab9228834376bcf4d~mv2.png/v1/fill/w_436,h_374,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/853c17_6b8e524f02a14afab9228834376bcf4d~mv2.png)
![シェルピンスキーのギャスケット](https://static.wixstatic.com/media/853c17_cfc024f5bd224792b7c7c90e852de06b~mv2.png/v1/fill/w_600,h_484,al_c,lg_1,q_85,enc_avif,quality_auto/853c17_cfc024f5bd224792b7c7c90e852de06b~mv2.png)
コンピュータは規則正しく正確にしかも素早く再現してくれることが特徴です。その意味で再帰プログラムはプログラミングの練習にはもってこいの事例です。これらのプログラムでは回帰回数などが自由に設定できるので、図形がどのように変化するか実験できます。
![](https://static.wixstatic.com/media/853c17_37f2594ecd3449e78ee189f16c7608c2~mv2.png/v1/fill/w_600,h_476,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/853c17_37f2594ecd3449e78ee189f16c7608c2~mv2.png)
フォトなどのアプリで知られる画像表示です。自作できないものかと奮闘しました。ファイラー機能もあり単に1枚の写真を表示したり、同一フォルダ内にある画像をスライド方式で連続表示する機能も付けました。
![円周率の計算](https://static.wixstatic.com/media/853c17_ac4e16eb04f54263907da72cc50eecfc~mv2.png/v1/fill/w_599,h_303,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/853c17_ac4e16eb04f54263907da72cc50eecfc~mv2.png)
お馴染みの円周率を計算させるプログラムです。計算式は精度がよいとされるMachinの公式
π/4=4arctan(1/5)-arctan(1/239) を使っています。また、約21億桁もの巨大な数値が扱える多倍長整数型BigIntegerを用いています。 初期のパソコンでBasic言語を用いて計算させた時とは比べものにならない計算スピードです。パソコンやプログラム言語の進化に驚きです。
![ボールの反発](https://static.wixstatic.com/media/853c17_1bd03512a7df4ffd8f033389ad110ba2~mv2.png/v1/fill/w_600,h_399,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/853c17_1bd03512a7df4ffd8f033389ad110ba2~mv2.png)
ポールがあらゆる方向へ自由に移動し、壁や他のボールと衝突すると反発し動き続けます。ボールのスピードと反発係数係数を自由に設定できるようになっていて、変更することにより予想外の動きをしてくれます。
![関数表示](https://static.wixstatic.com/media/853c17_aed4633d71414251b408fbd50e54c447~mv2.png/v1/fill/w_593,h_531,al_c,lg_1,q_85,enc_avif,quality_auto/853c17_aed4633d71414251b408fbd50e54c447~mv2.png)
整関数をはじめ、三角関数、指数関数、対数関数、双曲線関数、逆三角関数などの大学の教養課程までなら十分に対応できます。
入力された文字列を解析し論理式(関数)に変換してくれるxFunc.Mathsライブラリを活用させていただいています。
C#プログラム一覧
・時計関係………デジタル時計、タイマー、
ストップウォッチ、
アナログ時計、
・数値計算関係…進法表、平方根表、
表集計計算、三角関数表、
円周率の計算、素数発見
・回帰・模様…… フラクタルドラゴン曲線、
フラクタルコッチ曲線、
フラクタルC曲線、
フラクタルツリー曲線、
シェルビンスキーガスケット
・CG関係…………お絵かきソフト、
ホールゲーム、
ホール遊泳、落下運動、
関数表示、図形の干渉、
レインボーカラー