1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Dartの基礎を勉強しました(2)

Last updated at Posted at 2021-10-24

前置き

前回の続き

前回は、[Hello World!]の出力と変数について学んだことを記載しましたね。 なので、今回は条件分岐の方を勉強したので、まとめていきたいと思います。

自分的には、早くDartの基礎を押さえて、Android、iOSに人工知能を搭載したものを作成したいですね。
意思や感情といった、人間が持つものをAndroid、iOS端末のアプリに組み込んだ時何が起こるか…
さて、自分の目標はここまでにして、条件分岐について記載していきましょう。

条件分岐

if文

では、まずは「if文」ですね。 どの言語にでもあるif文ですが、まぁ、基本的なものを勉強しているので記載しておきましょう。
void main() {
  
  var a = 0;
  
  if(a < 1){
    print("犬");
  }else if (a < 2){
    print("猫");
  }else{
    print("鳥");
  }
}

こんな感じですね。
演算子の補足も後でしましょうか。
先にプログラムの内容からいきましょう。

このif文は、
varを使用していることから、型推論型で数値を入れてif文を回しています。
条件式ですが、
上から順々にやっていきましょう。

//a が 1より小さい場合は 犬 を出力する
if(a < 1){print("犬");} 
//a が 1より小さい場合は 犬 を出力する
//そうでない場合、もし a が 2より小さい場合は 猫 を出力する
if(a < 1){print("犬");}
else if (a < 2){print("猫");}
//a が 1より小さい場合は 犬 を出力する
//そうでない場合、もし a が 2より小さい場合は 猫 を出力する
//全ての条件に当てはまらな場合は、 鳥 を出力する
if(a < 1){print("犬");}
else if (a < 2){print("猫");}
else{print("鳥");}

今回は簡単にこんな感じの構造をしています。
ifは もし 条件式1 が成立する場合は 〜 を
elseは ifは 条件式1が成立しない場合、もし 条件式2が成立する場合は 〜 を
else 全てが成り立たない場合は 〜 を
という風に表すと簡単に理解できるかもしれませんね。

では、演算子の補足をしましょうか。

補足:演算子

プログラム言語ごとに、演算子は異なる部分があるかもしれません [&&]で[〜かつ〜]と表現する場合や[||]で[〜または〜]と表現する場合もありますね。 まぁ、そんなに違いはないと思いますが… それぞれの言語で一応、使用する演算子はチェックしておくといいでしょう。 とりあえず、まとめておきましょうか
演算子 意味 備考
a < 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 a が bと等しくない場合 -
a <> b a が bと等しくない場合 -

上記のようのものがありますね。何度も書きますが、
言語ごとに多少の違いがありますので注意してください。

さてさて、最後に[swtich-case文]について解説して今回は終わりましょう。

switch-case文

switch-case文についてもif文同様に、まずは、プログラムを載せていきましょう。
void main() {
  
  var a = 0;
  
  switch(a){
    case 0:
      print("犬");
      break;
    case 1:
      print("猫");
      break;
    default:
      print("鳥");
      break;
  }
}

こんな感じになりますね。
さて、ここから細かくしていきましょう。

//switch(式)
switch(a){}

この部分で重要になるのは
何の式を条件分岐に当てはめたいのか
ですね。(表現は人それぞれなので納得できる人、できない人がいますが、自分はこの表現で納得できるためこの表現を使います。解釈違いでしたら、自分の解釈を見つけてください。)
なので、このswitchの()の部分には条件分岐させたい「式」を当てはめていきましょう。
このswitch以降は条件分岐の式を書いていきましょう。

case 0:
  print("犬");
  break; //breakでループ終了
case 1:
  print("猫");
  break; //breakでループ終了

され、条件分岐の中で中間部分のこちらですね。
これを文字で表してみましょう。

ケース(式が) 0の場合:
  "犬"を出力する;
  ループ終了;
ケース(式が) 1の場合:
  "猫"を出力する;
  ループ終了;

別の表し方をすると

ケース()に入れられる値が一致する場合:
  "犬"を出力する;
  ループ終了;
ケース()に入れられる値が一致する場合:
  "猫"を出力する;
  ループ終了;

結構見辛い…ですが!!まぁ、よしとしましょう。
ここでポイントなのは条件式の最後には、[break]をつける
breakをつけることで、ループを終了させます。
switch-case文を使用する時は、[break]を忘れずつけましょう。

さて、ここで疑問に思うのは[default]の存在ですね。
defalutは簡単に表すのであれば、どの条件にも当てはまらない場合はという感じですね。またはどの条件とも一致しない場合はという感じです。if文のelseのような役割をしています。

なので、defaultはエラー文なんかにも使えるかもしれません。

再度、コメントを記載して全体をプログラム全体を見てみましょう。

void main() {
  //型推論で値を定義
  var a = 0;
  
  //条件式(a)を格納
  switch(a){
    //条件式が0の場合
    case 0:
      //"犬"を出力
      print("犬");
      //ループ終了
      break;
    //条件式が2の場合
    case 1:
      //"猫"を出力
      print("猫");
      //ループ終了
      break;
    //条件式がどれにも当てはまらない場合
    default:
      //"鳥"を出力
      print("鳥");
      //ループ終了
      break;

または

void main() {
  //型推論で値を定義
  var a = 0;
  
  //条件式(a)を格納
  switch(a){
    //条件式がcaseの値と一致する場合
    case 0:
      //"犬"を出力
      print("犬");
      //ループ終了
      break;
    //条件式がcaseの値と一致する場合
    case 1:
      //"猫"を出力
      print("猫");
      //ループ終了
      break;
    //条件式がどのcaseの値とも当てはまらない場合
    default:
      //"鳥"を出力
      print("鳥");
      //ループ終了
      break;

こんな感じですね。

では、今回if文とswitch-case文について勉強しましたが、これはどの言語にもあるようなものなので、見なくてもわかるという方が多いかもしれません。まだ理解できていないなぁ。という方は実際に手を動かしたり、自分でコードを組み直してトライするのをお勧めします。

いつもの挨拶文を下に書いて終わりにします。
ここまで読んでいただき、ありがとうございました。
では、また次回。

挨拶

どうも、組込みエンジニアとして、とある企業におります粉です。

・組込みエンジニアですがAIエンジニア、機械学習エンジニアとして転職したいので、自身でいろいろと勉強を行っております。

・なんでAIエンジニアや機械学習エンジニアになりたいの?と疑問をもたれる方も多いと思いますので、簡単に説明させていただきます。
1、元はAIを作ってみたい、社会問題、労働に関してもっと働きやすい環境が必要なのではないか?と考えたため様々な課題をAIなどの先端技術でアプローチをかけてみたいと思い、AIエンジニアを目指しました。
2、ですが、今やっているのは組込みエンジニアのため、使用する技術、言語が違うといったことから、独学でやってみようと思いまして、最近勉強をはじめました。
3、転職を目指す、自身の夢を叶えたいという願いもありますので、こうやって学んだことを記事しています。

・いろいろとお話ししましたが、まずは、私よりも知識、技術が豊富な先輩方から多くのことを意見、修正点、アドバイスをいただけることを楽しみにしています。

・まだまだ新参者、理解が足りていない部分もあるので記事を書きながら、修正を繰り返して理解を深めれればと思っております。(AIを研究している企業や研究機関に転職したいです。

・こんな手法もあるぞ、やり方はこうだ!!などの意見も募集しております。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?