HelloWorld ご挨拶

はじめましてこんにちは。熱血プログラミング塾の塾生一号カタリです。
このブログは基本的に(リンク@IT:連載 C#入門)さんの記事を塾生二号のぎんちゃん向けにリライトしたものになります。またtipsとしてC#のコードを(できる限り)Javaに書き換えたものを追記して、Javaの勉強にも活用しようかなあとか。ちなみに自分はトーシローです。もしなにかの縁でここに辿りついた方がいらっしゃったらアドバイス等どしどしじゃんじゃん受け付けてますのでどうぞよろしく。

では本題・・・。

まずは定番のhelloworldを書いていきます。

かけましたー!return 0;にブレークポイントを設定したらコンソールでHelloWorld!と表示されてるのが見えますねー!・・・感動したところで早速ソースコードの解説を。

と、その前に。どうやらC#というのは「ネームスペース{クラス{メソッド}}」という構造を持っているようです。ネームスペースという大きな箱の中に、クラスという仕切りがあり、その中にメソッドという部品が入っている。という感じでしょうか。またクラスとメソッドはそれぞれ変数を持つことができるというわけですね。なんじゃそりゃ、となるでしょうけどまずはそういうものだとして覚えておきましょう。

話を戻して。


1行目のnamespaceから。これは上で書いたネームスペースの名前を宣言しています。例ではMyWorldとしてますが、ここには任意の名前を入れることができます。名前をつける上での規則も実際はあるようですが、それはキニシナイ。ネームスペースの範囲は後ろに付いた2行目中カッコ{ から 11行目 }内になります。{}で囲まれた範囲をブロックといいます。

4行目ではclass名を宣言してます。頭についているpublicは修飾子です。プログラムのどこからでもこのクラスを利用できる、という意味の修飾子ですが、とりあえずはキニシナイ。これも4行目から10行目が範囲になってます。C#では{を改行した頭につけるようですね。}は他の言語とほぼ同じくそのブロックの始点の先頭と同じ列に置きます。

6行目ではメソッドを宣言してます。このメソッドメソッド名はMainです。C#のプログラムは(Javaも)まずこのMainメソッドからプログラムが実行されます。小文字でなく大文字から始まっているのはC#では大文字と小文字が区別され、最初に開始するのがMain(≠main)というメソッドであると決まっているからです。(String[] args)とありますがこのカッコ内はメソッドの引数を表してます。これも今はキニシナイ。Mainの手前にはpublic static intとあります。publicは3行目のそれと同じで、このメソッドを別のクラスから呼び出せることを意味する修飾子です。intはデータの型名で整数を扱うのに使います。なんのこっちゃいという感じでしょうがこれは”データ型”について押さえていなければならないので今はキニシナイ。staticはオブジェクトを生成せずにプログラムを実行できる、と考えていいと思います・・・。オブジェクトについては”オブジェクト指向”に直結するので次回に説明しますが、おおざっぱに言えば”モノ”です。unityでいうゲームオブジェクトもそのままオブジェクトです。モノはデータと意味で成立しています。例えばゲームで考えましょう。ここに四角い箱があったとします。その箱(オブジェクト)には材質や重量といったデータと、データがどう作用するのか、どう動くのか、壊せるのか、そもそも動かせるのか、といった意味が設定されてます。オブジェクト指向とは、データと意味をモノに与えることでプログラミングの効率を高めようという考え方です。ちなみにC#はこのオブジェクト指向を採用したプログラミング言語Javaもそのひとつです。

8行目のConsole.WriteLineはクラスとメソッドを呼び出すアドレスのようなものと考えられます。ちなみにHelloWorld!を""で囲ったのはHelloWorldという値のデータ型に関連しているのですが、やはりこれはキニシナイ。イメージとしては、ConsoleクラスにあるWriteLineというメソッドを呼び出して("HelloWorld!")を表示した。という感じです。しかしここにはConsoleクラスもWriteLineメソッドも記述されていません。いったいどこから呼び出したのでしょうか!?ここで先にさりげなーくスルーしていた3行目のusing System;という記述が出てきます。using System;とはSystemというネームスペースを利用するという意味です。つまり、ConsoleクラスのWriteLineメソッドはSystemというネームスペースですでに記述されていたので呼び出すことができたのです。このようにいくつかの部品がすでに用意されたものをクラスライブラリといいます。そのままの意味で、便利なクラス(設計図)が格納されたライブラリ(本棚)です。ちなみにSystemはC#の標準クラスライブラリとして最初から置いてあります。本来このように標準クラスライブラリを使う場合は、usingによる宣言は必要ありませんが、今後他のクラスライブラリを利用する上で必要な記述なので覚えておきましょう。

9行目のreturn 0;はプログラムが終了するとその値として0を返すという意味です。先に書いた6行目のメソッド宣言文でintとしたので、値として0を設定しました。6行目のintをvoidと書いた場合は、9行目を書く必要はありません。要するにとりあえずはキニシナイってことです。


【まとめ】
C#のプログラムはネームスペース、クラス、メソッドからなって、それぞれブロック{}で囲まれた範囲を持つ。またC#オブジェクト指向言語である。
C#にはクラスライブラリという便利なクラスを集めた書庫があり、usingでネームスペース名を指定することで利用できる。
C#ではMainメソッドからプログラムを実行する。




Tips - Javaではこう書くよ!

1行目はpackage文といいます。C#でいうネームスペース。小文字で書くのがルールです。
2行目はclass宣言。これはC#と同じですね。
3行目はmainメソッドでこれもC#とそのまま同じ。ここではvoidに書き換えてますが、javaのmainメソッドでは戻り値をvoid以外に指定できないからです。
4行目は命令文。Javaにはusingみたいな文はないです!(最新版のJavaにはあるっぽいです)Systemクラスのprintメソッドを呼び出してます。