動かして学ぶC言語「if文(条件分岐)」の使い方を基本から詳しく紹介

C言語:if文条件分岐

「C言語」の「if文」について紹介します。
「if文」は条件によって実行するプログラムを分岐させたい時に使用します。

スポンサーリンク

1.基本的な書き方「 if ~ else ~」(条件成立・不成立で分岐)

基本的な書き方は次のようになります。
条件」には式や関数(何かを実行するプログラム)が入り、「条件」の実行結果が成立で「1」(真と呼ばれる)になり 「プログラム1」が実行されます。
不成立で「0」(偽と呼ばれる)になり 「プログラム2」が実行されます。

・if文の書き方(基本形)
if ( 条件 ) {       
//もし、条件が成立「1(真)」なら
 プログラム1   
//プログラム1を実行
} else {           
//条件が不成立「0(偽)」なら
 プログラム2     
//プログラム2を実行
}
//」以降はコメントでプログラム内に書き込んでも実行されず無視されます。
スポンサーリンク

2.「if ~」のみの書き方「else ~」は省略できる。(条件成立時のみ実行)

else」以降は省略することができます。
この場合は「条件」が成立した時に「プログラム1」を実行し、不成立の時は何もしません。

・「if文」の書き方(elseなし)
if ( 条件 ) {       
//もし、条件が成立「1(真)」なら
 プログラム1   
//プログラム1を実行
}
スポンサーリンク

3.複数条件の時の書き方「else if ~」(成立条件によって分岐)

複数の「条件」で分岐したい時は「else if」を使って次のように記入します。
最初の「条件」には「if」を使用し次の「条件」からは「else if」を使用します。
else if」は複数書くことができ、この場合でも最後の「else」は省略することができます。

・「if文」の書き方(複数条件分岐)
if ( 条件1 ) {             
//もし、条件1が成立「1(真)」なら
 プログラム1           
//プログラム1を実行
} else if( 条件2) {   
//条件2が成立「1(真)」なら
 プログラム2             
//プログラム2を実行
} else {                   
//全ての条件が不成立「0(偽)」なら
 プログラム3             
//プログラム3を実行
}

4.「Lチカ」プログラムで動作確認してみよう(ATOM LITE使用)

別記事で紹介している安価で高機能なマイコンボード「ATOM LITE」を使用した「Lチカ」プログラムを使用して「if文」の動作確認をしてみましょう。

「ATOM LITE」についてと「Lチカ」プログラムについての詳細は以下のリンクで詳しく紹介しています。

ATOM LITE プログラミング初心者におすすめ超小型で高機能!
マイコンボードはRaspberry Pi、Arduino、M5Stack等がありますが、一通りやってみてそれぞれの良さはあるものの「最初に何を?」と聞かれたらATOM LITEが一番お手軽♪プログラミング初心者におすすめ
定番の Lチカ!(ATOM LITE編)で遊びながら自然と身につくプログラミング
プログラミング初心者ならとりあえず「Lチカ」やりましょう!LEDを点灯、消灯(チカチカ)させるものです。サンプルプログラムをコピペでとりあえず動作確認。LEDの色は数値を変えるだけ。いろいろ試して遊びながら学びましょう♪
「開発環境の準備」がまだの方は → こちら

以下のコードを「コピペ」して書き込みを行い、動作確認をしてみてください。

※コピーは下コード(黒枠)内の右上角にある小さなアイコンのクリックでもできます。
#include <M5Atom.h>    //Atomのヘッダファイルを準備

// FastLEDライブラリの設定(CRGB構造体)
CRGB dispColor(uint8_t r, uint8_t g, uint8_t b) {
  return (CRGB)((r << 16) | (g << 8) | b);
}
// 初期設定 -----------------------------------------------
void setup() {
  // 本体初期化(UART有効, I2C無効, LED有効)
  M5.begin(true, false, true);
  // LED全消灯(赤, 緑, 青)
  M5.dis.drawpix(0, dispColor(0, 0, 0));
}
// メイン -------------------------------------------------
void loop() {
  M5.update();  //本体のボタン状態更新

  if (M5.Btn.isPressed()) {         //ボタンが押されていれば
    M5.dis.drawpix(0, dispColor(0, 0, 255)); //LED(指定色)
  } else {                        //ボタンが押されてなければ
    M5.dis.drawpix(0, dispColor(20, 20, 20));    //LED(白)
  }
  delay(100);   //100ms待機
}

18行目の「if文」の条件 (M5.Btn.isPressed()) は、本体ボタン制御用の「関数」で、押している間「1」(真)になるためLEDが青色に変わります。
ボタンを離すと「0」(偽)になるため、LEDが白色に変わります。

本体ボタンの使用方法については以下のリンクで詳しく紹介しています。

M5Stack 本体ボタンの使い方、ボタン操作関数一覧(Arduinoプログラミング)
M5Stackシリーズの本体ボタンは Arduino のコマンドで簡単に制御できます。「Lチカ」のサンプルプログラムを使用して紹介しますので用途に応じて使い分けられるようになりましょう♪

5.条件の判断は「1」(真)か「0」(偽)ではなく、「0以外」(真)か「0」(偽)

条件 (M5.Btn.isPressed())の部分を (1) または (0) に変更して書き込むとどうなるでしょうか?
想像してみてください。そして、書き込んで確認してみましょう。

条件を (1) に変更して書き込むとLEDはずっと青色のままで、(0) に変更して書き込むとLEDはずっと白色のままになったと思います。
「if文」の条件に直接「1」(真)か「0」(偽)を書き込むことで、実行するプログラムが分岐していることが確認できたのではないでしょうか?

条件を (2) や (3) にするとどうなるかも確認してみてください。
LEDが青色のままになることが確認できると思います。これは、条件の実行結果が「1」(真)になったということになります。
「2なのに1?」ちょっと混乱しそうですね・・・
便宜上、条件の実行結果は「1」(真)か「0」(偽)で紹介してきましたが、実際は「0以外」(真)か「0」(偽)が正解です。
 (2) は「関数」でも「条件式」でもないので、実行結果は2のままのため「0以外」(真)となり、LEDは青色になるのです。
今回の「Lチカ」プログラムには「if文」の条件として、ボタン制御用の「関数」が使われていますが、他に「条件式」も使用します。
「条件式」は「演算子」を使って作成されます。「演算子」については別記事で紹介していますのでそちらで確認してみてください。

「C言語」の「演算子(条件式)」については以下のリンクで詳しく紹介しています。

動かして学ぶC言語「演算子(条件式)」(関係・等価演算子、論理演算子)
「if文」等で条件分岐を行う「条件式」を作るための「演算子」について詳しく紹介。 演算子の使い方をATOM LITEの「Lチカ」プログラムで動かしながら学びましょう♪

6.ブラウザ上で動作確認するなら

ちょっとした動作確認をしたい時は、ブラウザ上でプログラムを作成して実行できる「paiza.IO」が便利なので以下にリンクを貼っておきます。
無料で使用できて「C言語」だけでなく「python」や「JavaScript」「PHP」等たくさんの言語にも対応しています。

ブラウザでプログラミング・実行ができる「オンライン実行環境」| paiza.IO
paiza.IOはオンラインですぐにプログラミングが始められる、オンライン実行環境です。Java,Ruby,Python,PHP,Perlなど主要24言語に対応。プログラミング学習にも。

プログラミングの上達には学ぶことも大切ですが、自分で書いて実行して、どんな動きになるか、間違っててもいいのでこれをひたすら繰り返すことが一番の近道と思います。たくさん書いて実行してみましょう。

7.まとめ

「C言語」の「if文」の使い方について紹介しました。

「if文」は「条件」として変数や条件式を設定し「条件」の実行結果が「0以外(真)」か「0(偽)」かに応じてプログラムを分岐させることができます。

「条件式」は「演算子」を使って作成されます。「演算子」については別記事で詳しく紹介しています

「if文」の理解には実際に作成したプログラムを動かして、目で見て確認すると理解が早いです。
これには安価で高機能なマイコンボード「ATOM LITE」を使用した基本の「Lチカ」が手軽でおすすめです。

本体内蔵のボタンとフルカラーLEDでいろいろな動作プログラムを作成して、理解を深めましょう。

同じ条件分岐の「switch文」との使い分けには迷うところですが、基本的にどちらを使用しても同じ動作を実現することができます。
後から編集する時や、他の人が見て理解しやすいか等を意識して使い分けましょう。

「if文」では条件の評価結果が「0以外(真)」か「0(偽)」の分岐しかできませんが、「switch文」では条件の評価結果(1,2,3・・・等)によって複数の分岐を行うことができます。(「swich文」の「条件」の評価結果は整数型である必要があります。)

動かして学ぶ「C言語」については、他にも以下のリンクで基礎からサンプルプログラムを使って詳しく紹介しています。

C言語プログラミングの記事一覧
C言語のプログラミング記事一覧です。安価なマイコンボードを使用して動かしながら学んでみましょう♪ プログラム例を使って、コピペで書き込み、動作確認しながら少しづつ理解を深めましょう。

8.独学に限界を感じたら

最後に、独学に限界を感じている方へ、私のように無駄な時間を過ごさないように「C言語」や「Python」を基礎から学べるオンラインスクール(教室での受講も可)の紹介です。

私は学生の頃、独学で「C言語」を始めましたが、かなり時間をかけて結局一度挫折しました(汗)
仕事で少しプログラミングに触れる機会もあり、今となっては小規模なプログラムなら組めますが、どれだけ時間をかけたでしょう・・・

短期間で基礎から学べて質問もできる、そんな環境が当時あったらと思うと・・・
今はとても羨ましい時代になりました。


いろいろなプログラミングスクールのサイトを見て回りましたが「C言語」と「Python」の両方を扱っている所は少ないです。その中でも以下のスクールは他の言語も含めて、たくさんの講座から目的やスキルに合ったものを組合わせて、オンラインでも対面でも受講が可能です。

ほとんどの受講生が未経験で、全国に教室があるため現地で直接指導してくれますが多くの講座がオンライン対応です。
オンラインでは「個人レッスン(講師一人につき3名程)」と「集合レッスン」の選択も可能です。

オンラインレッスンの方には授業で使用するノートPC(ソフトインストール済み)も追加料金なしで貸りられて、質問掲示板を使って授業時間外でも質問できます。

無料体験もあり、説明会やカウンセリング等も行っています。
以下のリンクから内容だけでも確認してみてください。

コメント

タイトルとURLをコピーしました