2010年01月20日

D言語を使ってみました(4)


while、do-while、for、break、continueについてまとめました。

1. while文
[文法]
while (条件式)
{
処理;
}
[文法の説明]
ある条件が真である間、ループを繰り返します。
[例]
int main(char[][] args)
{
int i = 1;
int j = 1;
while (i <= 10)
{
j = 1;
while (j <= i)
{
printf("x");
j += 1;
}
printf("\n");
i += 1;
}
return 0;
}

2. do-while文
[文法]
do
{
処理;
}
while (条件式);
[文法の説明]
条件式の評価がループの最後に行われる為、
最初の1回が必ず実行されます。
[例]
int main(char[][] args)
{
int i = 1;
int j = 1;
do
{
j = 1;
do {
printf("x");
j++;
} while (j <= i);
printf("\n");
i++;
} while (i <= 10);
return 0;
}
3. for文
[文法]
for (初期状態; 終了条件; 継続処理)
{
処理;
}
[文法の説明]
指定した回数だけ処理を繰り返す場合に用います。
[例]
int main(char[][] args)
{
for (int i = 1; i <= 10; i++)
{
for (int j = 1; j <= i; j++)
{
printf("x");
}
printf("\n");
}
return 0;
}
4. ループを制御する(break, continue)
[文法]
for (初期状態; 終了条件; 継続処理)
{
処理;
if (条件式)
{
break;
}
}
[文法の説明]
breakが実行されると、ループが終了
していなくてもループから抜けます。
[例]
int main(char[][] args)
{
int i = 0;
int j = 0;
for (j = 1; j <= 10; j++)
{
for (i = 1; i <= 10; i++)
{
printf("%d ",i);
if (i == j)
{
printf("\n");
break;
}
}
}
return 0;
}
[文法]
for (初期状態; 終了条件; 継続処理)
{
処理;
if (条件式)
{
continue;
}
}
[文法の説明]
continueが実行されると、いったん
ループの先頭に戻ります。
[例]
int main(char[][] args)
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue;
}
else
{
printf("%d ",i);
}
}
return 0;
}
posted by rururu at 00:26| Comment(0) | TrackBack(0) | D言語

D言語を使ってみました(3)


if文、switch文についてまとめました。

・if文
if文は、条件に応じて処理を分岐させ、プログラムの流れを
コントロールすることができます。

[文法]
if (a == 1) {
処理1;
} else if (a == 2) {
処理2;
} else {
処理3;
}
[文法の説明]
変数aの値が「1」の場合は、処理1を実行し、変数aの値が
「2」の場合には、処理2を実行します。
変数aの値が「1」、「2」のどちらでもない場合は、処理3を
実行します。

・switch文
式の値に応じて多数の分岐を実現できます。

[文法]
switch(式) {
case ラベル1:
処理1;
case ラベル2:
処理2;
break;
case ラベル3, ラベル4:
処理3;
break;
default:
処理n;
break;
}
[文法の説明]
D言語のswitch文はCやJavaの場合とほぼ同じです。ただし、
整数型以外にchar[]とwchar[]を使用することができます。
posted by rururu at 00:24| Comment(0) | TrackBack(0) | D言語

D言語を使ってみました(2)


変数、定数、コメント、予約語、演算子についてまとめました。
■変数
型 変数名; // で変数の定義
変数 = 値; // で変数に値を代入
型 変数名 = 初期値; // で変数の定義+変数の初期化
(例)
// int型(整数型)の変数 a の定義
int a;
// a に 10を代入。
a = 10;
// real型(実数型)の変数 b の定義+初期化
real b = 3.5;
// 変数 b に別の数値を割り当てることもできる。
b = 1.8;
// 1.8と表示される。
// 変数 b に b を使って新しい数値を代入する
// この例では 1.8 + 2.5 なので b の値は 4.3
b = b + 2.5;
// 文字列の変数は、次のように定義。
char[] c;
// 文字列を代入
c = "文字列の代入".dup;
// 文字列を、ほかの文字列とつなげる。
// c は「文字列の代入+文字列の連結」になる。
c = c ~ "+文字列の連結";
// 整数の初期値は 0
int d;
■定数
const 型 変数名 = 値;
(例)
const int X = 1;
■コメント
(1) 1行のコメント
(「//」より後の文字がコメントとなります。)
// コメント
(2) 複数行のコメント
(「/*」と「*/」で囲んだブロックがコメントとなります。)
/*
コメント
*/
■予約語 (他にもあるかもしれません。)
abstract alias align asm assert
auto body break case cast
catch class const continue debug
default delegate delete deprecated do
else enum export extern false
final f inally for foreach foreach_reverse
function goto if import in
inout instance interface invariant is
lazy mixin module new null
out override package pragma private
protected public return scope static
struct super switch synchronized template
this throw true try typedef
typeid typeof union unittest version
volatile while with bit bool
byte cent char cfloat cdouble
creal dchar double float idouble
ifloat int ireal long real
short ubyte ucent uint ulong
ushort void wchar
■主な演算子の種類
・算術演算子
----------------------------------------
演算子 | 演算 | 用例
----------------------------------------
+ | 加算 | a + b
- | 減算 | a - b
* | 乗算 | a * b
/ | 除算 | a / b
% | 剰余算 | a % b
~ | 配列の連結 | a ~ b (a, bは配列)

・関係演算子
-------------------------------------------------------------------------------------
演算子 | 関係 | 用例
-------------------------------------------------------------------------------------
== | 等しい | a == b
! | 等しくない | a != b
is | 同一性チェック | a is b
< | より小さい | a < b
<= | 以下 | a <= b
> | より大きい | a > b
>= | 以上 | a >= b
!<>= | 順序付け不可能 | a !<>= b
!<> | 順序付け不可能か,等しい | a !<> b
<> | より小さいか,より大きい | a <> b
<>= | よりちいさいか,より大きいか,等しい | a <>= b
!> | 順序付け不可能か,以下 | a !> b
!>= | 順序付け不可能か,より小さい | a !>= b
!< | 順序付け不可能か,以上 | a !< b
!<= | 順序付け不可能か,より大きい | a !<= b
in | 値が配列の要素かどうか | "foo" in a (aは連想配列)

・論理演算子
----------------------------------------
演算子 | 演算 | 用例
----------------------------------------
|| | 論理和 | a==0 || b==0
&& | 論理積 | a==0 && b==0
! | 否定 | !(a==0)

・インクリメント演算子、デクリメント演算子
-------------------------------------------------------------------
演算子 | 演算 | 用例
-------------------------------------------------------------------
++ | インクリメント(a=a+1) | ++a(前置演算),a++(後置演算)
-- | デクリメント | --a(前置演算),a--(後置演算)

・ビット演算子、シフト演算子
----------------------------------------
演算子 | 演算 | 用例
----------------------------------------
& | 論理積 | a & b
| | 論理和 | a | b
^ | 排他的論理和 | a ^ b
~ | 1の補数 | ~a

・代入演算子
-------------------------------------------------------------------------------------------------
演算子 | 演算 | 一般記法 | 用例
-------------------------------------------------------------------------------------------------
= | 代入 | a = b | a = b
+= | 加算代入 | a = a + b | a += b
-= | 減算代入 | a = a - b | a -= b
*= | 乗算代入 | a = a * b | a *= b
/= | 除算代入 | a = a / b | a /= b
%= | 剰余算代入 | a = a % b | a %= b
&= | 論理積演算代入 | a = a & b | a &= b
|= | 論理和演算代入 | a = a |= b | a |= b
^= | 排他的論理和演算代入 | a = a ^= b | a ^= b
<<= | 左シフト代入 | a = a << b | a <<= b
>>= | 右シフト代入 | a = a >> b | a >>= b
>>>= | 符号なし右シフト代入 | a = a >>> b | a >>>= b
~= | 配列の連結代入 | a = a ~ b (a,bは配列) | a ~= b

・その他の演算子
-------------------------------------------------------------------
演算子 | 意味 | 用例
-------------------------------------------------------------------
+ | プラス | +a
- | マイナス | -a
* | ポインタ | *p
& | メモリアドレス | &p
new | インスタンス生成,配列の確保 | new Foo();new int[10];
delete | オブジェクトのデアロケート | delete foo;
cast | キャスト | cast(int)a;
. | ドット演算子 | foo.a
-> | アロー演算子 | foo->a
() | 関数呼び出し演算子 | func(a)
[] | 配列演算子 | a[10]
.. | 配列のスライス演算子 | a[1..5]
posted by rururu at 00:23| Comment(0) | TrackBack(0) | D言語

D言語を使ってみました (1)


日本語の本はまだ1冊しか出ていませんが、
C/C++の習慣を大きく受け継いでいるD言語を
使ってみました。

1、以下のサイトから
「dmd D 1.0 compiler 1-click install for Windows」
をダウンロード
http://www.digitalmars.com/d/download.html
2、ダウンロードしたファイルを実行。
インストーラの指示に従って任意の場所にインストール。
環境変数は自動で登録されます。
(半角スペースのあるフォルダにインストールされていると、
色々とうまく動かないそうです。Program Files や Document
and Settings の下に入れるのは避けた方が良いでしょう。)
3、コマンドプロンプトを立ち上げ、『dmd』と打って
バージョンが表示されたらOK!
4、Hello Worldの作成
(1) テキストエディタを開き、以下のコードを入力
import std.stdio;

int main(char[][] args)
{
writefln("Hello,World!");

return 0;
}
≪参考情報≫
以下のようにC言語と同じように書いても同じ動作をします。
int main(char[][] args)
{
printf("Hello,World!\n");

return 0;
}
(2) ファイル名は「HelloWorld.d」で保存
(3) コンパイル
コマンドプロンプトを起動して以下のコマンドを実行
ファイルの場所> dmd HelloWorld.d
(4) エラーがでなければ以下のコマンドを実行
「Hello, World!」と表示されるはずです。
ファイルの場所> HelloWorld.exe
5、D言語の主な機能
・ガーベッジコレクション
・Lightweightな配列
・配列のスライシング
・可変長配列
・連想配列
・関数デリゲート
・関数のネスト
・オブジェクト指向
・インターフェイス
・演算子オーバーロード
・自動デストラクタ
・プロパティ
・Lightweightなオブジェクト
・列挙型
・Generics
・foreach
・例外処理(try-catch-finally)
・スレッド同期プリミティブ
・複素数/虚数
・契約プログラミング
・単体テスト
・条件コンパイル
・インラインアセンブラ
・明示的なメモリ割り当て
・ネイティブコード生成
posted by rururu at 00:11| Comment(0) | TrackBack(0) | D言語