第1講 はじめてのC#体験
第4話 C#によるはじめてのプログラム体験
それでははじめてのC#プログラムを組んでみましょう。
まずvsc(Visual Studio Community 2017)を起動して、
001002
新しいプロジェクトの作成をクリックします。

新しいプロジェクトのWin32コンソールアプリケーション C#をクリックします。
011
新しいプロジェクトの
Visual C#のコンソールアプリ(.NET Framework)を選びます。
012
(初めての人はConsolApplocation1となっているはずです。)
名前のところをDeleteキーで消して、
aと入れます。
プロジェクトの名前は実際にはフォルダ(プログラムに必要な関連ファイルを収める箱)名にすぎませんので、
ファイルやフォルダを付けるときの禁則さえ犯さなければ何でも大丈夫ですが、
初心者の方は必ずaとして下さい。
でないとコピペの時に不便するからです。
(場所については、D:ドライブにvcs2017にようなフォルダを作っておいて、
D:\vcs2017とされても結構です。
フォルダを作るにはエクスプローラー起動して、
013タスクバーにある□で囲んであるアイコンをクリックすれば、
エクスプローラーは起動します。)
014ローカルディスク(D:)→新規作成→フォルダー
の順に選び015フォルダ名をvcs2017などとすれば良いのです。)
名前が入ったら006を押します。

しばらく待つと
016
017018

(皆さんの場合は左側の123〜16という番号は表示されていないと思います。
この番号を行番号といいます。
行番号はデバッグの際に必要不可欠ですので、
以下の手順で表示されるようにしてください。
行番号を表示させるためには、
021
ツール→オプションの順にクリックして、
022テキストエディターをダブルクリックします。
すると、下の方に023
すべての言語が出てきますので、
それを選んで、行番号のところにクリックによってレ点を入れます。
OKを押せば行番号が表示されます。)

となります。
016
の赤い部分すなわち
018
がエディタでプログラムコード(プログラムの文章)を書き込む場所です。
コピペによって、コードを次のように書き換えて下さい。
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
/*以上C#を始めるためのお呪い*/
namespace
a //初心者はお呪い=決まり事と思い一切気にしない
{
  class Program
//初心者はお呪い=決まり事と思い一切気にしない
  {
    static void Main(string[] args)
//私は社長だ。
    {
      
Console.WriteLine("初めてのC#プログラミング体験"); //コンソール画面に""内を表示させる命令文
    }
  }
}
と変更してから、CtrlとF5を同時に押して下さい。
aはプロジェクト名です。
プロジェクト名を変えた方は、
そのプロジェクト名に変更します。
プロジェクト名を変えるとコピペの時に不便になるというのは、
この点を指しています。
丸ごとコピペした場合には、
いちいちnamespaceの次の名前を変更しなければならないからです。
尚、namespaceとは名前空間です。
これについては第3部辺りで学びます。


以降、CtrlとF5を同時に押すなどの操作を
Ctrl+F5
と表記します。

すると、

となります。
これがあなたの初めてのC#プログラミング体験となります。

尚、Ctrl+F5は、
036
デバッグ→デバッグなしで開始
でもできますが、ショートカットキーを是非とも覚えて下さい。
『デバッグなしで開始』とは、
ビルドをしてプログラムを実行することです。
ビルドについては後ほど詳しく説明しますが、
構築という意味です。
Visual Studioシリーズがプロジェクトという名前を採用している理由は、
Visual Studioシリーズのプログラムは、会社や国のプロジェクトと同じで、
いろいろな部署や人が協力してプロジェクトを進めるように、
Visual Studioシリーズのプログラムも様々なフォルダやファイルの連携で、
実行されます。
様々なフォルダやファイルを関連づけて組織立ててつなげることを
ビルドと呼ぶのです。
ビルドの重要な仕事には、コンパイル(機械語への翻訳)も含まれています。
本講義では『デバッグなしで開始』のことをビルドと呼んだり、
プログラムの実行と呼んだりもします。

ところで実行方法には単にF5を押す方法もあります。
これは、025デバッグ→デバッグの開始と同じです。
『デバッグなしで開始』と『デバッグの開始』の違いを知るために、
F5を押して下さい。
一瞬だけコンソール画面(黒い画面)が立ち上がりますが、
すぐに消えてしまいます。
『デバッグなしで開始』=Ctrl+F5は、何かキーボードから入力されるまで、
待機してくれるのです。

第3話において魔方陣自動生成ソフトが実行できなかった方は、
コピペによってコードを

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace a
{
  class Program
  {
    static int[,] mah = new int[10, 10];
    static int n, cn;
    static void Main(string[] args)
    {
      Console.WriteLine("これはすべてのn次魔方陣を求めるソフトです。");
      Console.WriteLine("何次の魔方陣を発生させるのかをnに入力し、");
      Console.WriteLine("エンターするとn次魔方陣がすべて生成されます。");
      Console.Write("n=");
      n = int.Parse(Console.ReadLine());
      cn = 0;
      var sw = new System.Diagnostics.Stopwatch();
      sw.Start();
      f(0);
      sw.Stop();
      float t= float.Parse($"{sw.ElapsedMilliseconds}")/1000;
      Console.Write("魔方陣全生成にかかった時間は");
      Console.WriteLine("{0:f6}秒です。",t);
      Console.WriteLine("{0:d}次魔方陣が{1:d}個生成されました。", n, cn);
    }

    static void f(int g)
    {
      int i, j, k, h, x, y, w;
      x = g % n;
      y = g / n;
      for (i = 0; i < n * n; i++)
      {
        h = 1;
        if (g == 0)
        {
          mah[y, x] = i + 1;
        }
        else
        {
          for (j = 0; j < g; j++)
          {
            if (mah[j / n, j % n] == i + 1)
            {
              h = 0;
              break;
            }
          }
          if (h == 1) mah[y, x] = i + 1;
        }
        if (h == 1)
        {
          if (x == n - 1)
          {
            w = 0;
            for (j = 0; j < n; j++) w += mah[y, j];
            if (w != n * (n * n + 1) / 2) h = 0;
          }
        }
        if (h == 1)
        {
          if (y == n - 1)
          {
            w = 0;
            for (j = 0; j < n; j++) w += mah[j, x];
            if (w != n * (n * n + 1) / 2) h = 0;
          }
        }
        if (h == 1)
        {
          if (x == 0 && y == n - 1)
          {
            w = 0;
            for (j = 0; j < n; j++) w += mah[j, n - 1 - j];
            if (w != n * (n * n + 1) / 2) h = 0;
          }
        }
        if (h == 1)
        {
          if (y == n - 1 && x == n - 1)
          {
            w = 0;
            for (j = 0; j < n; j++) w += mah[j, j];
            if (w != n * (n * n + 1) / 2) h = 0;
          }
        }
        if (h == 1)
        {
          if (g + 1 < n * n)
          {
            f(g + 1);
          }
          else
          {
            cn++;
            for (j = 0; j < n; j++)
            {
              for (k = 0; k < n; k++)
              {
                if (mah[j, k] < 10) Console.Write(" {0:d} ", mah[j, k]);
                if (mah[j, k] >= 10) Console.Write("{0:d} ", mah[j, k]);
              }
              Console.WriteLine();
            }
            Console.WriteLine();
          }
        }
      }
    }
  }
}

に変更してから、Ctrl+F5をしてみて下さい。
ウィルスソフトにはねられて実行できなかった方も第1部の最終目標を見ることが出来ます。

第5話ではコードを解説していきますが、
解説に入る前に、重要な注意をしておきます。
プログラムの世界では、
      Console.WriteLine("初めてのC#プログラミング体験");
のような文を命令文と呼びます。
コンピュータに命令を与えているからです。
1つ1つの文を命令文と呼ぶ−−−このことを覚えて下さい。

第3話へ 第5話へ
 
002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ