ここまでたどり着いた方は、C#の書き方を学ぶのは、比較的簡単だと思います。
たいていのプログラミング言語の教科書通り、ここではHello Worldを出力するプログを作ります。
Windows Formを使うので、ボタンをクリックしたら、テキストボックスにHello World!と表示するプログラムが良く紹介されています。
Googleで「C# Hello World」と検索すれば、たくさんサイトが出てきますので、そちらに任せようかと思いましたが、一応、ここでも紹介することにしました。
基本的に同じようなプログラムを作ります。
先に行く前に、C#では他の言語と同じ様に、変数と言う情報を格納する箱(の様なもの)を使って、情報を加工していきます。
変数には名前を付ける必要があります。ここでいう名前を識別子と呼びます。C#では変数だけでなく座間座茉奈ものを区別するために識別子という概念を使います。識別子は文字または_で開始する必要があります。また識別子にはUnicode 文字、10 進数文字、Unicode 接続文字、Unicode 結合文字、Unicode 書式設定文字を含めることができます。
(詳細はhttps://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/inside-a-program/identifier-names を参照ください。)
たいていのプログラミング言語の教科書通り、ここではHello Worldを出力するプログを作ります。
Windows Formを使うので、ボタンをクリックしたら、テキストボックスにHello World!と表示するプログラムが良く紹介されています。
Googleで「C# Hello World」と検索すれば、たくさんサイトが出てきますので、そちらに任せようかと思いましたが、一応、ここでも紹介することにしました。
基本的に同じようなプログラムを作ります。
先に行く前に、C#では他の言語と同じ様に、変数と言う情報を格納する箱(の様なもの)を使って、情報を加工していきます。
変数には名前を付ける必要があります。ここでいう名前を識別子と呼びます。C#では変数だけでなく座間座茉奈ものを区別するために識別子という概念を使います。識別子は文字または_で開始する必要があります。また識別子にはUnicode 文字、10 進数文字、Unicode 接続文字、Unicode 結合文字、Unicode 書式設定文字を含めることができます。
(詳細はhttps://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/inside-a-program/identifier-names を参照ください。)
Visual Studio 2019の起動と作成するプロジェクトの指定
Visual Studio 2019を起動します。
すると、下記の様な画面が表示されます。
そこで、赤枠で囲まれた「新しいプロジェクトの作成」をマウスでクリックすると、下記の様な画面が表示されます。
ここでは、.Net Frameworkを使ってWindows Formのプログラムを作るので、「Windows Formアプリケーション(.Net Framework)」を選んでクリックします。
プロジェクト名はこれから作るシステムを他のシステムと区別するために、分かりやすい名前を設定します。ここでは、"HelloWorld"としました。
この様にVisual Studoiでは、一つのシステムを作るために必要な情報をプロジェクトという単位で管理します。
場所は、これから作成するプログラムのソースファイルや設定ファイルなどが格納されるフォルダが入るフォルダを指定します。下のチェックボックスにチェックをしているので、ここで指定したフォルダ\HelloWorldという名前のフォルダにソースプログラムやVisual Studio 2019が作成した様々な情報が格納されます。
今回は、特に変更しません。
フレームワークは使用する.Net Frameworkのバージョンを指定します。 今回は、このまま行きます。
そして、赤く囲った「作成」をクリックします。
すると、下記の様な画面が表示されます。
そこで、赤枠で囲まれた「新しいプロジェクトの作成」をマウスでクリックすると、下記の様な画面が表示されます。
ここでは、.Net Frameworkを使ってWindows Formのプログラムを作るので、「Windows Formアプリケーション(.Net Framework)」を選んでクリックします。
プロジェクト名はこれから作るシステムを他のシステムと区別するために、分かりやすい名前を設定します。ここでは、"HelloWorld"としました。
この様にVisual Studoiでは、一つのシステムを作るために必要な情報をプロジェクトという単位で管理します。
場所は、これから作成するプログラムのソースファイルや設定ファイルなどが格納されるフォルダが入るフォルダを指定します。下のチェックボックスにチェックをしているので、ここで指定したフォルダ\HelloWorldという名前のフォルダにソースプログラムやVisual Studio 2019が作成した様々な情報が格納されます。
今回は、特に変更しません。
フレームワークは使用する.Net Frameworkのバージョンを指定します。 今回は、このまま行きます。
そして、赤く囲った「作成」をクリックします。
最初のプログラム
Visual Studio 2019が起動すると少しいj感が掛かったあと、下記の様な画面が表示されます。
これが、Visualu Studioによって用意された、Windows Formのアプリケーションの作成画面です。
ここで、上の方にある、「開始」と書かれた緑色のボタンを押してみてください。
すると、次の様に新しいWindowが開いてプログラムが動き始めます。
全く何もないWindowだけのアプリですが、しっかり右上には最小化・最大化・終了の3つのボタンがあることが分かります。
ここでは、右上の「×」をクリックして、終了しましょう。
左側に、ツールボックスが表示されています。
もし、表示されていない様でしたら、メニューの「表示」を押してみてください。そうすると、表示メニューの一覧が表示されます。その中を良く探してもらうと、「ツールボックス」があると思いますので、それをクリックすると表示されるはずです。
そもそも「ツールボックス」が表示されない場合は、Visual Studio 2019のインストールが上手くいっていない可能性があります。WindowsのメニューからVisual Studio Installerを起動して「.Netデスクトップ開発」がインストールされているか確認して、インストールされていなかった場合は、再度インストールを行ってください。
ツールボックスから、まずはButtonをクリックします。
その状態で、マウスをFormの上に持ってきて、適当な場所でクリックすると、button1と表示されたボタンが、フォーム上に設置されます。
この時、ボタンの周りに8個の白い点が現れていることが分かります。この白い点が現れている状態はkのボタンが選択されていることを示しています。この8個の点のうち一つを選んで、マウスでクリックした後ドラッグすることで、ボタンの大きさを変更することが出来ます。
またこの白い点が現れている状態の内部をマウスでクリックした後、そのままマウスをドラッグすると、ボタンの位置が変更できます。
この様に、画面の左からWindowsのコンポーネントを選択しフォームの上に置くことで、好きなコンポーネントをフォームに設置できます。
一つのフォームに複数のボタンを置くことが出来ます。そこで、フォーム上のコンポーネントにはそれぞれIDが自動で付与されます。
今回は、ボタンが一つ置かれたので、このボタンには、button1という名前が設定されました。それは、画面の右下を見ることで確認できます。このbutton1がフォーム上に設置したボタンを示す変数の名前です。
ただ、変数と言っても、プログラミングとアルゴリズムの基本的な考え方の変数で記載したような、単純に文字や数値を格納するものではありません。様々な情報やプロセス(処理)を行うプログラムが格納されています。
この様な変数をオブジェクトと言います。Visual Studio 2019では、あらかじめ用意されたオブジェクトが大量に提供されます。ただ、ここでは、まだ余り気にせず、先に進んでください。
同様にして、フォーム上にTextBox(テキストボックス)を設置します。すると下記の様な画面になります。ここで設置した、TextBoxに白い点が8つ表示され選択状態になっていることを確認してください。
ここで、右下のプロパティをみます。textBox1が選択されていることが分かります。そこで、Textを探してください。
そして、Textの右側をマウスでクリックして、
下のボタンをクリックしてください
と入力します。
すると下記の様にフォーム上のテキストボックスに”下のボタンをクリックしてください”と表示されることが分かります。
こうして、プログラムが起動したらボタンやテキストボックスに最初に表示する文字列をプログラムを書くことなく、画面のデザイン時に設定しておくことが可能になります。
これが、Visualu Studioによって用意された、Windows Formのアプリケーションの作成画面です。
ここで、上の方にある、「開始」と書かれた緑色のボタンを押してみてください。
すると、次の様に新しいWindowが開いてプログラムが動き始めます。
全く何もないWindowだけのアプリですが、しっかり右上には最小化・最大化・終了の3つのボタンがあることが分かります。
ここでは、右上の「×」をクリックして、終了しましょう。
左側に、ツールボックスが表示されています。
もし、表示されていない様でしたら、メニューの「表示」を押してみてください。そうすると、表示メニューの一覧が表示されます。その中を良く探してもらうと、「ツールボックス」があると思いますので、それをクリックすると表示されるはずです。
そもそも「ツールボックス」が表示されない場合は、Visual Studio 2019のインストールが上手くいっていない可能性があります。WindowsのメニューからVisual Studio Installerを起動して「.Netデスクトップ開発」がインストールされているか確認して、インストールされていなかった場合は、再度インストールを行ってください。
ツールボックスから、まずはButtonをクリックします。
その状態で、マウスをFormの上に持ってきて、適当な場所でクリックすると、button1と表示されたボタンが、フォーム上に設置されます。
この時、ボタンの周りに8個の白い点が現れていることが分かります。この白い点が現れている状態はkのボタンが選択されていることを示しています。この8個の点のうち一つを選んで、マウスでクリックした後ドラッグすることで、ボタンの大きさを変更することが出来ます。
またこの白い点が現れている状態の内部をマウスでクリックした後、そのままマウスをドラッグすると、ボタンの位置が変更できます。
この様に、画面の左からWindowsのコンポーネントを選択しフォームの上に置くことで、好きなコンポーネントをフォームに設置できます。
一つのフォームに複数のボタンを置くことが出来ます。そこで、フォーム上のコンポーネントにはそれぞれIDが自動で付与されます。
今回は、ボタンが一つ置かれたので、このボタンには、button1という名前が設定されました。それは、画面の右下を見ることで確認できます。このbutton1がフォーム上に設置したボタンを示す変数の名前です。
ただ、変数と言っても、プログラミングとアルゴリズムの基本的な考え方の変数で記載したような、単純に文字や数値を格納するものではありません。様々な情報やプロセス(処理)を行うプログラムが格納されています。
この様な変数をオブジェクトと言います。Visual Studio 2019では、あらかじめ用意されたオブジェクトが大量に提供されます。ただ、ここでは、まだ余り気にせず、先に進んでください。
同様にして、フォーム上にTextBox(テキストボックス)を設置します。すると下記の様な画面になります。ここで設置した、TextBoxに白い点が8つ表示され選択状態になっていることを確認してください。
ここで、右下のプロパティをみます。textBox1が選択されていることが分かります。そこで、Textを探してください。
そして、Textの右側をマウスでクリックして、
下のボタンをクリックしてください
と入力します。
すると下記の様にフォーム上のテキストボックスに”下のボタンをクリックしてください”と表示されることが分かります。
こうして、プログラムが起動したらボタンやテキストボックスに最初に表示する文字列をプログラムを書くことなく、画面のデザイン時に設定しておくことが可能になります。
プログラムを書いてみる
それでは、ボタンを押した時に行う動作についてプログラムを書いてみましょう。
ボタンが押されたら、textBox1に"Hello World"と表示するのが、最初のプログラムです。
どうすれば良いでしょうか。
ここで、ボタンを押すので、ボタンをマウスで1回クリックします。でも、ボタンが選択されて8つの白い点が現れるだけです。
1回ボタンを押された時のプログラムを作るには、ボタンをマウスでダブルクリックします。
すると、下の様な画面に変わって、カーソルが、{と}の間の行でちかちかしています。
さっき、textBox1のTextに”下のボタンをクリックしてください”と入力したら、フォームのtextBox1に表示されました。
と言うことは、プログラムで、textBox1のTextというものに”Hello World”と入力知れば良さそうじゃないですか?
textBox1はテキストボックスを表す変数で、すでにVisual Stdio 2019によってWindowsのテキストボックスが持つ機能が組み込まれています。その機能を利用すれば良いのです。
そこで、カーソルのところで、textと入力してみてください。
ここでtextから始まる入力可能なものの候補が表示されます。
そこで、textBox1を選びます。さらにmここで、.(ピリオド)を入力してください。すると、TextBoxとして格納されているプロパティ(情報)やプロセス(処理)が表示されます。そこで、Textを選びます。↑や↓の矢印のキーを動かしてカーソルを移動してText青にします。
この状態でEnterキーを押すとプログラムtextBox1.Textと挿入されます。
そして、1文字空白を入力した後,
= "Hello World";
と入力します。すると下の様になります。
textBox1.Text = "Hello World";
という1行が追加されました。
【C#の文法の話 - 初心者には難解ですが重要です】
ここで、この行の左の部分は、変数もしくはプロパティを表します。 そして右側は、Hello Worldという文字の列です。文字の列であることを示すために、""(クオーテーション)で囲みます。
変数(またはプロパティ)と文字列を = で結んでいます。
このイコールは右側にある値を左の変数(またはプロパティ)にコピーする操作(代入すると呼びます)を行うことを示します。
数学と違って、=は値をコピーすることを示します。左辺と右辺が等しいという訳ではありません。「等しい状態」を表すのではなく、コピーする操作を表すものです。
良くここで分からないという方が現れることがありますが、これは分かるとか分からないとか、どうしてと疑問を持つところではなく、そういう約束事として決められているものと覚えてください。悩んでも解決しません。
少し理屈の様なものを書いておくと、本来なら、
textBox1.Text ← "Hello World";
と書ければ良いのですが、←という文字は、タイプライターでは入力できないので、例えば、
textBox1.Text <- "Hello World";
と書けば良かったのです。ただ、<-だと2文字必要なので一文字で済む=を使ったのだと位に覚えてください。
なので、COBOLという旧世代のコンピュータ言語ではオブジェクトは使えませんし、文字列の扱いもこういう形では行わないのですが、
MOVE "Hwllo World" TO textBox1.Text.
の様に記載します。
今後、A=Bという表現があった場合には、Bが示す変数(またはプロパティ)の内容をAという変数(またはプロパティ)にコピーするのだと覚えておいてください。
そして、この1行で代入と言う一つの操作の表現が完了しています。そこで、操作の終了を示す";"を記載します。
C#では一つの処理の塊をステートメントと呼び、ステートメントの終了を;で示します。
また、これも分かりにくいのですが、ステートメントには複数のステートメントからなるステートメントを記載できます。具体的な例は今後お伝えします。
ボタンが押されたら、textBox1に"Hello World"と表示するのが、最初のプログラムです。
どうすれば良いでしょうか。
ここで、ボタンを押すので、ボタンをマウスで1回クリックします。でも、ボタンが選択されて8つの白い点が現れるだけです。
1回ボタンを押された時のプログラムを作るには、ボタンをマウスでダブルクリックします。
すると、下の様な画面に変わって、カーソルが、{と}の間の行でちかちかしています。
さっき、textBox1のTextに”下のボタンをクリックしてください”と入力したら、フォームのtextBox1に表示されました。
と言うことは、プログラムで、textBox1のTextというものに”Hello World”と入力知れば良さそうじゃないですか?
textBox1はテキストボックスを表す変数で、すでにVisual Stdio 2019によってWindowsのテキストボックスが持つ機能が組み込まれています。その機能を利用すれば良いのです。
そこで、カーソルのところで、textと入力してみてください。
ここでtextから始まる入力可能なものの候補が表示されます。
そこで、textBox1を選びます。さらにmここで、.(ピリオド)を入力してください。すると、TextBoxとして格納されているプロパティ(情報)やプロセス(処理)が表示されます。そこで、Textを選びます。↑や↓の矢印のキーを動かしてカーソルを移動してText青にします。
この状態でEnterキーを押すとプログラムtextBox1.Textと挿入されます。
そして、1文字空白を入力した後,
= "Hello World";
と入力します。すると下の様になります。
textBox1.Text = "Hello World";
という1行が追加されました。
【C#の文法の話 - 初心者には難解ですが重要です】
ここで、この行の左の部分は、変数もしくはプロパティを表します。 そして右側は、Hello Worldという文字の列です。文字の列であることを示すために、""(クオーテーション)で囲みます。
変数(またはプロパティ)と文字列を = で結んでいます。
このイコールは右側にある値を左の変数(またはプロパティ)にコピーする操作(代入すると呼びます)を行うことを示します。
数学と違って、=は値をコピーすることを示します。左辺と右辺が等しいという訳ではありません。「等しい状態」を表すのではなく、コピーする操作を表すものです。
良くここで分からないという方が現れることがありますが、これは分かるとか分からないとか、どうしてと疑問を持つところではなく、そういう約束事として決められているものと覚えてください。悩んでも解決しません。
少し理屈の様なものを書いておくと、本来なら、
textBox1.Text ← "Hello World";
と書ければ良いのですが、←という文字は、タイプライターでは入力できないので、例えば、
textBox1.Text <- "Hello World";
と書けば良かったのです。ただ、<-だと2文字必要なので一文字で済む=を使ったのだと位に覚えてください。
なので、COBOLという旧世代のコンピュータ言語ではオブジェクトは使えませんし、文字列の扱いもこういう形では行わないのですが、
MOVE "Hwllo World" TO textBox1.Text.
の様に記載します。
今後、A=Bという表現があった場合には、Bが示す変数(またはプロパティ)の内容をAという変数(またはプロパティ)にコピーするのだと覚えておいてください。
そして、この1行で代入と言う一つの操作の表現が完了しています。そこで、操作の終了を示す";"を記載します。
C#では一つの処理の塊をステートメントと呼び、ステートメントの終了を;で示します。
また、これも分かりにくいのですが、ステートメントには複数のステートメントからなるステートメントを記載できます。具体的な例は今後お伝えします。
実行してみる
では、ここまで作った、プログラムを実行してみます。
その前に、一旦ここまで修正した内容を保存しておきます。
画面の左上に、下の様な画像が表示されたボタンがあります。
これをクリックすると、すべての修正内容が保存されます。
準備が出来たら、上の緑の開始ボタンを探してクリックします。すると新しいWindowが開いて下の様な画面が表示されます。
ここで、button1と書かれたボタンをマウスでクリックします。
すると、下記の様に、テキストボックスの中にHello Worldと表示されます。
これで、無事、Hello Worldを表示するプログラムが完成です。
プログラムの部分を載せておきます。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HelloWorld
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "Hello World";
}
}
}
その前に、一旦ここまで修正した内容を保存しておきます。
画面の左上に、下の様な画像が表示されたボタンがあります。
これをクリックすると、すべての修正内容が保存されます。
準備が出来たら、上の緑の開始ボタンを探してクリックします。すると新しいWindowが開いて下の様な画面が表示されます。
ここで、button1と書かれたボタンをマウスでクリックします。
すると、下記の様に、テキストボックスの中にHello Worldと表示されます。
これで、無事、Hello Worldを表示するプログラムが完成です。
プログラムの部分を載せておきます。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace HelloWorld
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "Hello World";
}
}
}