Sponsored Link
 
>>  Main > Programing > Primary > 0001

D言語入門 第01章 - 出力

#01 - hello, world

今回は…

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

とりあえず、これから先に行くに当たって、真っ先に覚えてもらいたいことがあるのですよ。
それは、「コメント」です。
// ←この、「//」の後から、次の行までは、すべてコメントとして扱われます。
んでもって、そのコメントで、
// おまじない とかかれてあったら、順当に読み進めたとして、今の知識ではわかるはずもないであろうことと思って、「これは、そう書くものなのか…」と、気にせず読み進めてください。
というわけで、「コメント」と「おまじない」は念頭において次へ押すすみください。

今回のミソ

  • writef("出力したい文字") で、文字を出力

サンプルコード

// おまじない std.stdio のモジュールを読み込む
import std.stdio;

// おまじない エントリーポイント
int main(char[][] arg)
{
    // ここで文字列 Hello, world! が出力されます。
    writefln("Hello, world!");
    // おまじない プログラムの戻り値。 0 で正常終了します。
    return 0;
}

実行結果

hello, world

まとめ

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

#02 - 改行

今回は…

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

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

今回のミソ

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

サンプルコード

// おまじない std.stdio のモジュールを読み込む
import std.stdio;

// おまじない エントリーポイント
int main(char[][] args)
{
    // ここで出力される。
    writef("Hello, world!\nD言語の世界にようこそ!\n");
    
    // この部分は
    // writefln("hello, world");
    // writefln("D言語の世界にようこそ!");
    // というように書いてもOKでした。
    // \n というのは、改行文字と呼ばれていて、\nを書いたところで改行するよう
    // になっています。
    // writefln というのは、最後に改行文字を入れるというだけで、ほかは writef
    // と同じものです。
    // なお、日本語の部分は文字化けする可能性があります。
    
    // おまじない プログラムの戻り値。 0 で正常終了します。
    return 0;
}

実行結果

hello, world
D言語の世界にようこそ!

まとめ

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

#03 - コメント付け

今回は…

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

今回のミソ

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

サンプルコード

// おまじない std.stdio のモジュールを読み込む
import std.stdio;

// おまじない エントリーポイント
int main(char[][] args)
{
    // ここで出力される。
    writef("Hello, world!\nD言語の世界にようこそ!\n");
    
    /+
        このようにしてまとまったコメントを書くのに
        /+ と +/ は有効です。
    +/

    // おまじない プログラムの戻り値。 0 で正常終了します。
    return 0;
}

実行結果

hello, world
D言語の世界にようこそ!

まとめ

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

両者の違いを見るには、以下のコメントを見ると良くわかると思います。
/+
    aaa
    /+
        bbb
    +/
    ccc
+/
と、これらはすべてコメントとして扱われますが、 /*
    aaa
    /*
        bbb
    */

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

#04 - 数値の出力

今回は…

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

今回のミソ

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

サンプルコード

// おまじない std.stdio のモジュールを読み込む
import std.stdio;

// おまじない エントリーポイント
int main(char[][] args)
{
    writef("整数 : ");
    // これが整数の出力。
    writefln(10);
    
    writef("実数 : ");
    // これが実数の出力。
    writefln(2.5);
    
    // おまじない プログラムの戻り値。 0 で正常終了します。
    return 0;
}

実行結果

整数 : 10
実数 : 2.5

まとめ

このように、 writef( ... ) という命令は、文字列以外にも数値などさまざまなものを出力できる関数なのです。
とりあえず今回は以上でーす。
お次へどうぞー

#05 - 書式を使った出力

今回は…

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

今回のミソ

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

サンプルコード

// おまじない 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;
}

実行結果

整数 : 10
実数 : 2.5

まとめ

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

#summary - まとめ

第01章のミソ

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

宿題

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

コメント

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

ページトップ / 目次 / 次へ
Copyright©SHOO All rights reserved. / LastModified : 2007/12/16(日)[13:54:19]