Page Top

今回は… anchor.png

やはりプログラミング入門といったらこれでしょう!
"Hello, world"プログラム!
いやもう、この記事が書きたいがためにこのコラム?とかやりはじめt(以下省略

とりあえず、これから先に行くに当たって、真っ先に覚えてもらいたいことがあるのですよ。
それは、「コメント」です。
んでもって、そのコメントで、

// おまじない

とかかれてあったら、順当に読み進めたとして、今の知識ではわかるはずもないであろうことと思って、「これは、そう書くものなのか…」と、気にせず読み進めてください。

というわけで、「コメント」と「おまじない」は念頭において次へお進みください。

Page Top

今回のミソ anchor.png

  • 文字列を出力するには
    write("出力したい文字");
Page Top

サンプルコード anchor.png

filesample0101p.d
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 
 
 
-
!
-
-
!
-
!
!
// おまじない std.stdio のモジュールを読み込む
import std.stdio;
 
// おまじない エントリーポイント
int main(char[][] arg)
{
    // ここで文字列 Hello, world! が出力されます。
    write("Hello, world!");
    // おまじない プログラムの戻り値。 0 で正常終了します。
    return 0;
}
+  Tango用はこちら
filesample0101t.d
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 
 
 
-
!
-
-
!
-
!
!
// おまじない tango.io.Stdout のモジュールを読み込む
import tango.io.Stdout;
 
// おまじない エントリーポイント
int main(char[][] arg)
{
    // ここで文字列 Hello, world! が出力されます。
    Stdout("Hello, world!").newline;
    // おまじない プログラムの戻り値。 0 で正常終了します。
    return 0;
}
Page Top

実行結果 anchor.png

1
2
$ dmd -run sample0101p.d
Hello, world!
Page Top

まとめ anchor.png

というわけで、今回は "Hello, world" を出力してみました。
これであなたも立派なD言語プログラマー(笑) :-)
(ぁ、いや、いまの(笑)は決して馬鹿にしてやってるわけではないのだよ?
今回は、writefで出力するんだってことあたりをわかってもらえたらなと思います。

というわけで今回は以上でーす。
お次へどうぞー

Page Top

#02 - 改行 anchor.png

Page Top

今回は… anchor.png

前ページのプログラムをさらに掘り下げて見ましょう。
今回のプログラムでは、改行をします。
これで2行以上の出力をすることができます。

二行以上に分けて書きたい場合は先ほどのプログラムちょっとだけ改造します。

Page Top

今回のミソ anchor.png

  • \nというものを文字列に含めると、そこで改行される。
  • writeln("文字列") は、write("文字列") と違って最後に改行をする。
Page Top

サンプルコード anchor.png

filesample0102p.d
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
 
 
-
!
-
-
!
|
-
|
|
|
|
|
|
|
|
!
-
!
!
// おまじない std.stdio のモジュールを読み込む
import std.stdio;
 
// おまじない エントリーポイント
int main(char[][] args)
{
    // ここで出力される。
    write("Hello, world!\nD言語の世界にようこそ!\n");
    
    // この部分は
    // writeln("hello, world");
    // writeln("D言語の世界にようこそ!");
    // というように書いてもOKでした。
    // \n というのは、改行文字と呼ばれていて、\nを書いたところで改行するよう
    // になっています。
    // writeln というのは、最後に改行文字を入れるというだけで、ほかは write
    // と同じものです。
    // なお、日本語の部分は文字化けする可能性があります。
    
    // おまじない プログラムの戻り値。 0 で正常終了します。
    return 0;
}
+  Tango用はこちら
filesample0102t.d
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
 
 
 
-
!
-
-
!
|
-
|
|
|
|
|
|
!
-
!
!
// おまじない tango.io.Stdout のモジュールを読み込む
import tango.io.Stdout;
 
// おまじない エントリーポイント
int main(char[][] args)
{
    // ここで出力される。
    Stdout("Hello, world!\nD言語の世界にようこそ!\n");
    
    // この部分は
    // Stdout("hello, world").newline;
    // Stdout("D言語の世界にようこそ!").newline;
    // というように書いてもOKでした。
    // \n というのは、改行文字と呼ばれていて、\nを書いたところで改行するよう
    // になっています。
    // .newline というのは、改行文字を入れるという命令です。
    
    // おまじない プログラムの戻り値。 0 で正常終了します。
    return 0;
}
Page Top

実行結果 anchor.png

1
2
3
$ dmd -run sample0102p.d
Hello, world!
D言語の世界にようこそ!
Page Top

まとめ anchor.png

というわけで、改行文字は、(パソコン関係だとわりと一般的だけど、)「\n」となっています。
なお、Windowsでは、再起文字というものもあり、\nの前に\rと書き、「\r\n」となる場合もあります。
Macなんかでは、「\n」ではなく、「\r」と書くなど、いろいろとややこしいですが、とりあえず「\n」と書いておけば問題ないと思います。
また、日本語が出力の際に文字化けする問題は昔から確認されている問題です。
対処法としては、わかったつもりになるD言語を見るといいと思います。

まぁ、というわけで、とりあえず今回は以上でーす。
お次へどうぞー

Page Top

#03 - コメント付け anchor.png

Page Top

今回は… anchor.png

コメントを記述する方法をもうちょっとだけ深く説明します。
コメント付けは保守の面からもとても重要です。
↑つまり、後で読み直したり、ほかの人が見たりしたときにわかりやすいプログラムって言うことね。
そんなコメント付けについて、説明していきますよ。

Page Top

今回のミソ anchor.png

  • /++/ で囲まれているところは、改行を挟んでもコメントとして扱われます。
  • /**/ で囲んでもいいのですが、お勧めは /++/ です。
  • // とうまい具合に使い分けましょう。
Page Top

サンプルコード anchor.png

filesample0103p.d
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
 
 
 
-
!
-
-
!
|
-
|
|
!
-
!
!
// おまじない std.stdio のモジュールを読み込む
import std.stdio;
 
// おまじない エントリーポイント
int main(char[][] args)
{
    // ここで出力される。
    write("Hello, world!\nD言語の世界にようこそ!\n");
    
    /+
		このようにしてまとまったコメントを書くのに
		/+ と +/ は有効です。
	+/
    // おまじない プログラムの戻り値。 0 で正常終了します。
    return 0;
}
+  Tango用はこちら
filesample0103t.d
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
 
 
 
-
!
-
-
!
|
-
|
|
!
-
!
!
// おまじない tango.io.Stdout のモジュールを読み込む
import tango.io.Stdout;
 
// おまじない エントリーポイント
int main(char[][] args)
{
    // ここで出力される。
    Stdout("Hello, world!\nD言語の世界にようこそ!\n");
    
    /+
		このようにしてまとまったコメントを書くのに
		/+ と +/ は有効です。
	+/
    // おまじない プログラムの戻り値。 0 で正常終了します。
    return 0;
}
Page Top

実行結果 anchor.png

1
2
3
$ dmd -run sample0103p.d
Hello, world!
D言語の世界にようこそ!
Page Top

まとめ anchor.png

/++/ で囲まれたところは、コメントとして扱われます。
/**/ でもコメントとして扱われますが、こちらは次のようなことができません。

両者の違いを見るには、以下のコメントを見ると良くわかると思います。

/+
    aaa
    /+
        bbb
    +/
    ccc
+/

と、これらはすべてコメントとして扱われますが、

/*
	aaa
	/*
		bbb
	*/
    ccc
*/

これは、最後の

    ccc
*/

の部分がコメントとして扱われないため、エラーの原因になってしまいます。
これは、 /* と */ によるコメントが「ネスト」できないため、 /* が出たら、次に */ が出てくるまでがコメントである、という、単純なコメントであるために起こります。
D言語の /+ と +/ で囲まれたコメントは、「ネスト」できるため、このようなことができるのです。
D言語でこのようなコメントを使う場合は、 /+ と +/ で囲まれたコメントの表現をするといいと思います。
まぁ、SHOO的には、すべて // でやってしまうことが多いです。デバッグ目的なんかに一時的にコードから消したいときなんかには /+ と +/ で囲まれたコメントアウトを使うことがあるくらいですね。
まぁ、ここら辺は個人の趣味によるところが大きいと思いますが…

とりあえず今回は以上でーす。
お次へどうぞー

Page Top

#04 - 数値の出力 anchor.png

Page Top

今回は… anchor.png

今回は、文字列だけではなく、数値なども出力してみたいと思います。
また、今まで何気なく使ってた、 writef("文字列") や writefln("文字列") という命令は、実は標準出力と言うところに出力していたのです。
まぁ、だからと言って今はどうと言うことはありませんが、ファイルやソケットと言われるネットワークなどの出力と区別する場合があるので、知っておくといいでしょう。
さてさて、今までは writef("文字列") と言うように、出力するものは"文字列"と言った感じで " (ダブルクォーテーションマーク)で囲っていましたが、数値と言うのはこれで囲う必要はありません。ここが文字列の出力と大きく異なるところだと思います。
後のところはあんまり変わらないんですけどね。
あと、数値といっても、数値にもいろいろとあって、とりあえず実数と整数というものがあります。
小数があるものは、「実数」で、小数がないのが、「整数」です。
いや、厳密には、整数も実数の一部なんですけどね。

まぁ、詳しい話は数学名話になるので、 Wikipedia なんかで調べてください。

Page Top

今回のミソ anchor.png

  • 数値は " (ダブルクォーテーションマーク) で囲わない
  • 数値を出力するときも writef(数値)
  • 数値には「整数」や「実数」などの種類がある。
Page Top

サンプルコード anchor.png

filesample0104p.d
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
 
 
 
-
!
-
|
-
!
|
|
-
!
|
-
!
!
// おまじない std.stdio のモジュールを読み込む
import std.stdio;
 
// おまじない エントリーポイント
int main(char[][] args)
{
    write("整数 : ");
    // これが整数の出力。
    writeln(10);
    
    write("実数 : ");
    // これが実数の出力。
    writeln(2.5);
    
    // おまじない プログラムの戻り値。 0 で正常終了します。
    return 0;
}
+  Tango用はこちら
filesample0104t.d
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
 
 
 
-
!
-
|
-
!
|
|
-
!
|
-
!
!
// おまじない tango.io.Stdout のモジュールを読み込む
import tango.io.Stdout;
 
// おまじない エントリーポイント
int main(char[][] args)
{
    Stdout("整数 : ");
    // これが整数の出力。
    Stdout(10).newline;
    
    Stdout("実数 : ");
    // これが実数の出力。
    Stdout(2.5).newline;
    
    // おまじない プログラムの戻り値。 0 で正常終了します。
    return 0;
}
Page Top

実行結果 anchor.png

1
2
3
$ dmd -run sample0104p.d
整数 : 10
実数 : 2.5
Page Top

まとめ anchor.png

このように、 write( ... ) という命令は、文字列以外にも数値などさまざまなものを出力できる関数なのです。

とりあえず今回は以上でーす。
お次へどうぞー

Page Top

#05 - 書式を使った出力 anchor.png

Page Top

今回は… anchor.png

書式を使った出力、です。
なんかちょっと難しいかもしれませんが、なれるとかなり便利です。
できるだけ早いうちに使えるようになったほうがいいよということで、ここに持ってきました。
書式というものを使うと、文字列や実数や整数を、いっぺんに文字列として書き込むことができるのです。
詳しくはミソに書いておきます。

Page Top

今回のミソ anchor.png

  • writef("書式", 値, 値, ... ) で、書式にしたがって出力することができる
  • 最後に改行する場合は writefln("書式", 値, 値, ... )
  • 書式は、%sで文字列、%dで整数、%fで実数をそれぞれ挿入する。
  • ( ) (括弧)の中身は、 , (カンマ)で区切りましょう。
  • 書式に挿入される順は、 , (カンマ)で区切られた値順。
Page Top

サンプルコード anchor.png

filesample0105p.d
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
 
 
 
-
!
-
-
|
!
-
|
!
|
-
!
!
// おまじない std.stdio のモジュールを読み込む
import std.stdio;
 
// おまじない エントリーポイント
int main(char[][] args)
{
    // %sには「整数」と言う文字列、%dには10という整数が
    // それぞれ挿入されます。
    writefln("%s : %d", "整数", 10);
    // %sには「実数」と言う文字列、%dには2.5という実数が
    // それぞれ挿入されます。
    writefln("%s : %f", "実数", 2.5);
    
    // おまじない プログラムの戻り値。 0 で正常終了します。
    return 0;
}
+  Tango用はこちら
filesample0105t.d
Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
 
 
 
-
!
-
-
|
!
-
|
!
|
-
!
!
// おまじない tango.io.Stdout のモジュールを読み込む
import tango.io.Stdout;
 
// おまじない エントリーポイント
int main(char[][] args)
{
    // {}には「整数」と言う文字列、2個目の{}には10という整数が
    // それぞれ挿入されます。
    Stdout.formatln("{} : {}", "整数", 10);
    // {}には「実数」と言う文字列、2個目の{}には2.5という実数が
    // それぞれ挿入されます。
    Stdout.formatln("{} : {}", "実数", 2.5);
    
    // おまじない プログラムの戻り値。 0 で正常終了します。
    return 0;
}
Page Top

実行結果 anchor.png

1
2
3
$ dmd -run sample0105p.d
整数 : 10
実数 : 2.5
Page Top

まとめ anchor.png

書式に挿入される順は、 , (カンマ)で区切られた値順なので、

writef("%s : %d", 10, "実数");

ではアウトです。この場合は、%s%dより先に出てきているので、最初の , (カンマ)の後には必ず文字列が来ていないといけません。
この書式の使い方は、まだまだたくさんあります。たとえば、%eという書式では、実数を指数表示できるもので、たとえば 0.0001 を 1.0e-4 などと言うように出力できるようにするものです。ほかにも、実数を小数点以下5桁を表示させたいと思ったら、 %.5f と書きます。さまざまな書式がありますが、とりあえず、基本は %s %d %f だと思います。
書式について詳しいことは、 Wikipedia なんかに載ってます。参考にするといいでしょう。

とりあえず今回は以上でーす。
お次へどうぞー

Page Top

#summary - まとめ anchor.png

Page Top

第01章のミソ anchor.png

  • 文字を出力するには
    write("出力したい文字")
  • \nというものを文字列に含めると、そこで改行される。
  • writeln("文字列") は、write("文字列") と違って最後に改行をする。
  • /++/ で囲まれているところは、改行を挟んでもコメントとして扱われます。
  • /**/ で囲んでもいいのですが、お勧めは /++/ です。
  • // とうまい具合に使い分けましょう。
  • 数値は " (ダブルクォーテーションマーク) で囲わない
  • 数値を出力するときも writef(数値)
  • 数値には「整数」や「実数」などの種類がある。
  • writef("書式", 値, 値, ... ) で、書式にしたがって出力することができる
  • 書式は、%sで文字列、%dで整数、%fで実数をそれぞれ挿入する。
  • ( ) (括弧)の中身は、 , (カンマ)で区切りましょう。
  • 書式に挿入される順は、 , (カンマ)で区切られた値順。
Page Top

宿題 anchor.png

つぎの出力結果をいい具合に得てください 1行目は文字列の出力
2行目は文字列の出力の後に整数を出力
3行目は文字列の出力の後に実数を出力
4行目は文字列の出力と整数の出力を一度のwriteflnで行ってください
5行目はwritefln("もじ%s文字 : %d.", ...)の、...に入るものを考えてください。

1
2
3
4
5
文字列の出力マスター : hello, world
整数の出力マスター : 123
実数の出力マスター : 3.21
混じっても平気 : 654
もじもじ文字 : 4.56
Page Top

コメント anchor.png

さてさて、できましたかな~?
まだプログラミングしてる感じはしないと思いますが、表示するあたりはデバッグとかでとても役に立つのでぜひ覚えましょう!

そんなわけで、宿題できたら、あるいは予想ついたら次にいきましょう~


Page Top

投票とコメント anchor.png

Choices Vote
大変参考になった14  
参考になった2  
あまり参考にならなかった0  
まったく参考にならなかった0  

Show recent 10 comments. Go to the comment page.

  • 簡単な間違いを修正しようと思ったけど修正できない。まえがきにコメント欄が無い。前書きのURLリンクで変なところがあるので治せる人が治しましょう。 -- ゲストEdit 2009-04-16 (木) 14:29:37
  • ご報告ありがとうございます。とりあえずまえがきにコメントフォームを追加いたしました。あとリンクも修正しました。 -- SHOOEdit 2009-04-16 (木) 19:17:12
  • ちなみに、D言語入門講座のページの編集に関しては、権限を設定することで、荒らしなどによるむやみな編集を防いでいます。コメントでご報告いただいた場合には可能な限り対応させていただきます。 -- SHOOEdit 2009-04-16 (木) 19:23:13
  • 対応ありがとう -- ゲストEdit 2009-04-17 (金) 10:55:34
  • write()はDMD1.0のphobosライブラリでは動かない。printf()を使う。同様にwriteln()もライブラリに無いので動かない。DMD1.0ではwritefln()を使おう。DMD2.0なら問題なsi。 -- ゲストEdit 2010-06-18 (金) 05:47:12
  • さらに追加で、writef()ならばDMD1.0でも動く。 -- ゲストEdit 2010-06-18 (金) 05:51:32
  • 改行が開業になってるのがちょっと気になります>< -- ゲストEdit 2011-11-27 (Sun) 13:59:05
  • 修正しました。ご報告ありがとうございます -- SHOOEdit 2011-11-29 (火) 00:02:44
Name:

Front page   Freeze Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 3723, today: 1, yesterday: 0
Princeps date: 2012-01-16 (Mon) 00:33:10
Last-modified: 2012-01-16 (Mon) 00:33:10 (JST) (3247d) by ゲスト
メインメニュー

ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録

Menu