SystemaのパズルとプログラミングC#

様々な立体パズル(ルービックキューブ系)の解法を紹介したり何か記事を書いたりします。あと最近プログラミングの勉強も始めました。

プログラミング全然わからん

こんにちは,Systemaです。

プログラミングの勉強を始めました。Unityで2次元,3次元でのシュミレーションを作ることが目標です。UnityではC#を使うようなので,まずはC#の基本を勉強するところから始めます。ちなみにプログラミングは未経験です。今後このブログにプログラミングの疑問等を書いていくかもしれません。

フィボナッチ数列できた

これまでサンプルコードを写すだけでしたが,自分で何か書いてみようとフィボナッチ数列を出力するプログラムが書けました!私のアルゴリズム力が低すぎて少しズルをしていますが見逃してください。今後改善出来たらもっと美しくします。

using System;
class Class1
{
    static void Main()
    {
        Console.Write("フィボナッチ数列を出力します\n何項目まで?:");
        int x = int.Parse(Console.ReadLine());

        long a = 0;
        long b = 1;
        long c = 0;
        int i = 0;

        Console.Write("1\t");

        while (i <= x - 2)
        {
            c = a + b;
            a = b;
            b = c;

            i++;
            Console.Write("{0}\t", c);
        }
    }
}

↓実行結果
f:id:CubeSystema:20210201201923p:plain
やったー。
ちなみにこのCUIにデスクトップからアクセス出来るようにアプリ化するにはどうすればいいんだろうか。今はいちいちVisual Studio開いて「デバックなしで開始」してるのでめんどくさい。

メソッドってなんやねん

何やら,メソッドというものがあるようです。何度も行う計算を定義しておくことで,何度も同じコードを書かなくて良いそうです。いまいち使い方が分からなかったのですが,多分それっぽいことが出来たので忘れないように残しておきます。

using System;
class Class1
{
    private static int Sum(int x,int y)
    {
        return x + y;
    }

    static void Main()
    {
        Console.Write("1つ目の整数:");
        int a = int.Parse(Console.ReadLine());
        Console.Write("2つ目の整数:");
        int b = int.Parse(Console.ReadLine());

        int c = Sum(a, b);
        Console.WriteLine("{0}+{1}={2}",a,b,c);
    }
}

実行結果
f:id:CubeSystema:20210201131303p:plain

これはSumメソッドの定義と呼び出しがうまくいった証拠でしょうか。
ただし,private とか static とか前の単語の意味はよく分かっていません。とりあえず出来た!privateは無くても実行できました。意味分からん。
あとこれはどうでもいいんですが,「using System;」を何度も「using Systema;」とするミスを減らしていきます。

using System;
class Class1
{
    static void Main()
    {
        Console.Write("1つ目の整数:");
        int a = int.Parse(Console.ReadLine());
        Console.Write("2つ目の整数:");
        int b = int.Parse(Console.ReadLine());

        int c = Sum(a, b);
        Console.WriteLine("{0}+{1}={2}", a, b, c);
    }

    private static int Sum(int x,int y)
    {
        return x + y;
    }
}

↑試しに,先にMainメソッドを書いてからSumメソッドを書いてみましたが,これでも問題なく実行できました。
なるほど,順番は関係ないのか。

順番はどうでもいいのか!と試しに新しいクラス2を作ってSumメソッドを別のクラスに書いてみたのが下。

using System;
class Class1
{
    static void Main()
    {
        Console.Write("1つ目の整数:");
        int a = int.Parse(Console.ReadLine());
        Console.Write("2つ目の整数:");
        int b = int.Parse(Console.ReadLine());

        int c = Sum(a, b);
        Console.WriteLine("{0}+{1}={2}", a, b, c);
    }
}
class Class2
{
    static int Sum(int x, int y)
    {
        return x + y;
    }
}

これは実行できませんでした。別のクラスからメソッドは呼び出せないのか。それとも呼び出す方法があるのか。そもそもクラスとは何か。
メソッドがちょっと分かった瞬間にクラスという分からないものが増えました。あと名前空間とか。
調べてみても意味不明な単語ばかりです。
Unityに触れるのは半年後か一年後かそれとももっとかかるのか。先は長い。