Dart Hello World サンプル .

前回の講義では、Dart初めてのプロジェクト作成方法を解説しました。今回は自身でHello Worldサンプルを作成する手順を説明します。

1 Hello World

  1. Dartプログラムには必ずトップレベルの main() 関数が必要で、ここからプログラムが実行されます
  2. 戻り値のない関数には void を記述します
  3. print() はコンソールに文字を出力する関数です
// プログラムエントリーポイント
void main() {
  print('Hello, World!');
}
Code language: Dart (dart)

前回作成したプロジェクトを例に説明します。C:\dartdemo\firstdart\bin配下のfirstdart.dartファイルを開きます

ファイル内のコードを上記のコードに書き換えます

その後、cmdでC:\dartdemo\firstdartディレクトリに移動し、dart runコマンドを実行します

C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Hello, World!Code language: CSS (css)

2 変数(varによる型自動推論)

  1. var で変数を定義すると、Dartが代入値から自動的に型を判別するため、手動で型名を記述する必要がありません
  2. 文字列、数値、小数、配列、辞書(オブジェクト)に対応しています

サンプル

// プログラムエントリーポイント
void main() {
        var name = 'ボイジャー1号';    // 文字列String
	var year = 1977;           // 整数int
	var width = 3.7;           // 小数double
	var planets = ['木星','土星']; // 配列List
	var info = {
	  'tag': ['土星'],
	  'url': '画像URL'
	}; // 辞書Map
}
Code language: Dart (dart)

上記で複数の変数を定義しています。変数はデータを保存するための小さなメモリ領域で、この領域に名前を付けたものです。名前があることで該当メモリ領域の操作が簡単になります。

このメモリ領域には理論上0と1のデータを何でも保存可能で、コンピュータの全データは0と1で構成されています。文字列や整数といった型が存在するのはデータの解析を容易にするためで、例えばコンパイラはint型と認識すると整数としてデータを読み取ります。

上記の変数を操作する場合は以下のように記述します

// プログラムエントリーポイント
void main() {
  var name = 'ボイジャー1号';    // 文字列 String
  var year = 1977;           // 整数 int
  var width = 3.7;           // 小数 double
  var planets = ['木星', '土星']; // 配列 List
  var info = {
    'tag': ['土星'],
    'url': '画像URL'
  }; // 辞書 Map

  // 文字列使用例
  print('探査機名:$name');
  print('名前の文字数:${name.length}');
  print('「号」を含むか:${name.contains('')}');

  // 整数使用例
  print('打ち上げ年:$year');
  print('経過年数:${DateTime.now().year - year} 年');

  // 小数使用例
  print('探査機幅:$width メートル');
  print('幅の二乗:${width * width}');

  // 配列使用例
  print('目標惑星一覧:$planets');
  planets.add('天王星'); // 要素追加
  print('更新後の惑星一覧:$planets');
  print('最初の目標惑星:${planets[0]}');

  // 辞書使用例
  print('情報タグ:${info['tag']}');
  print('画像URL:${info['url']}');
  info['status'] = '稼働中'; // 新しいキーと値を追加
  print('完全な情報:$info');
}
Code language: PHP (php)

上記ではフォーマット出力を使用しています。まだ学習していない内容のため、まず概要を理解してください。後ほど詳しく解説します。

3 フロー制御文(条件分岐 / ループ)

if else 条件分岐

if後の括弧内の条件に応じて実行する文を切り替えます。条件がtrue(真)の場合はif直後の{}内コードを実行し、false(偽)の場合はelse後のコードを実行します

if (条件) {
  // 条件が true の時実行
} else {
  // 条件が false の時実行
}Code language: JavaScript (javascript)

例として速度超過判定を記述します。

var speed = 25;

if (speed > 60) {
  print('速度超過です!');
} else {
  print('速度は正常です。');
}Code language: PHP (php)

複数段階の判定を記述することも可能です

if (speed > 100) {
  print('危険な速度!');
} else if (speed > 60) {
  print('少し速いです。');
} else {
  print('安全な走行です。');
}Code language: PHP (php)
void main() {
	var year = 1977;
	if (year >= 2001) {
	  print('21世紀');
	} else if (year >= 1901) {
	  print('20世紀');
	}
}
Code language: Dart (dart)
C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
20世紀Code language: CSS (css)
for 配列走査(for-in)

Dartにおいてfor‑inループはListSetその他反復可能オブジェクトを簡潔に走査する構文です。

配列またはリストに次の要素が存在する限り{}内の処理を実行し、要素がなくなったらループを終了し後続の処理へ移ります。

構文は以下の通りです:

for (var item in collection) {
  // itemを使用した処理
}Code language: JavaScript (javascript)

サンプルを確認します

void main() {
	var planets = ['木星','土星'];
	for (final item in planets) {
	  print(item);
	}
}
Code language: Dart (dart)

実行結果

C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
木星
土星Code language: CSS (css)
数値指定通常forループ

i=1から12まで(<=を使用するため12を含む)ループし、print実行後はi++の処理へ移ります

void main() {
	for (int i = 1; i <= 12; i++) {
	  print(i);
	}
}Code language: JavaScript (javascript)

実行結果

C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
1
2
3
4
5
6
7
8
9
10
11
12Code language: CSS (css)
  1. まずint i = 1 を1回実行
  2. 次に条件 i <=12 が成立するか判定
  3. 成立する場合はprint (i)を実行し1を出力
  4. その後i++を実行しiの値が2に変更
  5. 再度i<=12を判定、2<=12がtrueのためprint(i)で2を出力
  6. 再びi++を実行し条件判定を繰り返す
  7. …..
  8. iが13になった時点でi<=12が不成立となり、forループを抜け後続処理へ移行

int i=1; はループ開始時に1度だけ実行され、それ以降は実行されません。この記述はiに初期値を代入するためのもので、以下のように記述することも可能です

void main() {
    int i = 1;
	for (; i <= 12; i++) {
	  print(i);
	}
}
Code language: Dart (dart)

4. while ループ

whileループはforループと類似し、Dartにおいてwhileループは条件が真の間コードを繰り返し実行する構文です。構文は非常にシンプルです:

while (条件) {
  // ループ本体
}Code language: JavaScript (javascript)

実行フロー:

  1. まず条件が true か判定する。
  2. 真の場合、ループ本体を実行。
  3. 実行完了後再度条件を判定。
  4. 条件が false になった時点でループ終了。

条件をfalseにするにはループ本体内で変数の値を変更する必要があります。変更しない場合、無限ループが発生し処理が停止しなくなります。

var year = 2010;
while(year < 2016){
  year += 1;
}
Code language: JavaScript (javascript)

実行手順を分解すると以下の通りです 👇

初期化フェーズ
  • 変数 year を定義し、初期値を 2010 に設定。
条件判定フェーズ
  • year < 2016 が真か判定。
  • 真の場合はループ本体へ、偽の場合はループを抜ける。
ループ本体実行フェーズ
  • year += 1 を実行、すなわち year = year + 1
  • 毎回ループごとに year の値が1増加。
再判定フェーズ
  • 再度 year < 2016 の条件を確認。
  • year が2010から2015までの間は条件が真。
  • year が2016に達すると条件が偽となりループ終了。

終了フェーズ

  • ループ終了時、year の最終値は 2016 となる。

このループは計6回実行されます(2010~2015)。毎回yearの値を1増加させ、条件が不成立になるまで繰り返します。ループ本体内でyearの値を変更しないと無限ループになるため注意してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です