動かして学ぶC言語「for文(繰り返し処理)」の使い方を基本から詳しく紹介

C言語:for文繰り返しの使い方C言語
スポンサーリンク

「C言語」の「for文」について紹介します。

「for文」は実行回数を指定して繰り返し実行したい時によく使用されます。
繰り返し何かをする事はプログラムの得意とするところです。

「if文」の条件分岐と組み合わせることで様々な動作を実現することができますので、サンプルプログラムを使って詳しく紹介します。

1.基本的な書き方

基本的な書き方は次のようになります。

for ( 変数の初期化 ; 繰り返し条件式 ; 変数への演算式) { 
  プログラム1;
  プログラム2;
}

for文」では繰り返し処理用に変数を1つ使用します。
まずは繰り返し処理に使用する「変数の初期化」を行い「繰り返し条件式」でこの変数の評価(成立「1(真)」か不成立「0(偽)」か)を行います。

条件が成立していれば「プログラム1」「プログラム2」(複数記入可)を実行します。

この後に「変数への演算式」で指定した演算を行い、変数の値を更新します。

再び「繰り返し条件式」で変数の評価を行い、条件が成立していれば「プログラム1」「プログラム2」を実行します。
そして、また「変数への演算式」を実行「繰り返し条件式」の評価と繰り返されます。

繰り返し条件式」を評価した時に条件が不成立になると繰り返しは終了します。


実際の書き方(プログラム例)は以下のようになります。

for ( i = 0 ; i < 10 ; i++) {   //プログラム1と2を10回繰り返します
  プログラム1;
  プログラム2;
}
変数の初期化
「繰り返し条件式」の中で使用する変数の初期値を指定します。
(例:i = 0 ※ i に 0 を代入)
繰り返し条件式
 繰り返しを行う条件です。
(例:i < 10 ※ i が 10 より小さければ)
変数への演算式

「繰り返し条件」成立時に「プログラム」を実行後に「変数」に対して実行される演算式です。
(例:i ++ ※ i を +1 する。)
for ( int  i = 0 ; i < 10 ; i ++ )のように「変数の初期化」の中で「変数」を宣言することも可能ですが、この「変数」は「for文」の中でだけ使用され「for文」の処理が終了すると値はクリアされるため注意しましょう。
変数については以下のリンクで詳しく紹介しています。
動かして学ぶC言語「変数」について、正しく学ぶならC言語が一番
「変数」とはプログラム内のデータを保存しておくために使用します。 データを入れておく箱のようなもので、一時的にデータを入れておき、必要な時に取り出して使用したり、取り出して加工(演算等)してから元に戻して、また必要な時に使用したりします。

2.フルカラーLEDの色を変化させるプログラムで動作確認

安価で高機能なマイコンボード「ATOM LITE」本体内蔵のフルカラーLEDの色を徐々に変化させるプログラムで「for文」の動作を確認してみましょう。

フルカラーLEDのカラフルな発光

ATOM LITE本体

「ATOM LITE」についての詳細は以下のリンクで詳しく紹介しています。

超小型で高機能!プログラミング初心者におすすめ「ATOM LITE」
マイコンボードはRaspberry Pi、Arduino、M5Stack等がありますが、一通りやってみてそれぞれの良さはあるものの「最初に何を?」と聞かれたらATOM LITEが一番お手軽♪プログラミング初心者におすすめ
「開発環境の準備」がまだの方は → こちら

下のコードを「コピペ」して書き込んでください。
※コピーは下コード(黒枠)内の右上角にある小さなアイコンのクリックでもできます。

#include <M5Atom.h>    //Atomのヘッダファイルを準備

// FastLEDライブラリの設定(CRGB構造体)
CRGB dispColor(uint8_t r, uint8_t g, uint8_t b) {
  return (CRGB)((r << 16) | (g << 8) | b);
}
// 変数宣言
int r = 255;    //赤LED初期値(最大発光)
int g = 0;      //緑LED初期値(消灯)
int b = 0;      //青LED初期値(消灯)
int wait = 10;  //色変更待ち時間

// 初期設定 -----------------------------------------------
void setup() {
  // 本体初期化(UART有効, I2C無効, LED有効)
  M5.begin(true, false, true);
}
// メイン -------------------------------------------------
void loop() {
  // 赤色から緑色へ変化(この時 bは0、rは255)
  for(g = 0; g < 255; g++) {  //gを0から1づつ加算して254まで繰り返し
    M5.dis.drawpix(0, dispColor(r, g, b));         //LED発光色指定
    r--;                      //rを1づつ減算
    delay(wait);              //wait時間(ms)待つ
  }
  // 緑色から青色へ変化(この時rは0、gは255)
  for(b = 0; b < 255; b++) {  //bを0から1づつ加算して254まで繰り返し
    M5.dis.drawpix(0, dispColor(r, g, b));         //LED発光色指定
    g--;                      //gを1づつ減算
    delay(wait);              //wait時間(ms)待つ
  }
  // 青色から赤色へ変化(この時 gは0、bは255)
  for(r = 0; r < 255; r++) {  //rを0から1づつ加算して254まで繰り返し
    M5.dis.drawpix(0, dispColor(r, g, b));         //LED発光色指定
    b--;                      //bを1づつ減算
    delay(wait);              //wait時間(ms)待つ
  }
}

20行目 ~25行目でフルカラーLEDを赤色から緑色に変化させています。
同じように緑色から青色、青色から赤色に変化する3つのプログラムがあり、これらを順番に繰返すことでLEDの発行色を「赤→橙→黄→緑→青→藍→紫」と変化させます。

フルカラーLEDの色を指定するには「FastLED」ライブラリを使用しています。

「FastLED」ライブラリについては以下のリンクで詳しく紹介しています。

定番の Lチカ!(ATOM LITE編)で遊びながら自然と身につくプログラミング
プログラミング初心者ならとりあえず「Lチカ」やりましょう!LEDを点灯、消灯(チカチカ)させるものです。サンプルプログラムをコピペでとりあえず動作確認。LEDの色は数値を変えるだけ。いろいろ試して遊びながら学びましょう♪

LEDの色が変化するプログラムについては以下のリンクで詳しく紹介しています。

プログラムでクリスマスイルミネーションを作ろう♪「ATOM LITE」
プログラムでクリスマスイルミネーションを作ってみましょう♪ATOM LITE本体に内蔵されているフルカラーLEDの色を、繰り返し変化させるプログラムを紹介します。
11行目 の「変数」waitで色が変化する時間を指定(ここでは10ms)しています。
delay( wait)は実行された時に( )内の時間(ms)待機します。
色が変化するたびに wait ms(ミリ秒)待機するので、この時間を長くするとゆっくり色が変わり、短くすると早く色が変わります。好みの時間間隔に設定してみましょう

3.繰り返し処理を途中で終わらせたい時(break)

繰り返し処理の途中で終了させて「for文」から出たい時は「break」を使用します。
break」は以下のように使用します。

for ( int  i = 0 ; i < 10 ; i ++) {
  プログラム1;
  if ( 条件 ) {
    break ;
  }
}

上記の「for文」は「プログラム1」を10回実行するものです。
10回実行する途中で「if文」の「条件」が成立すると「break」が実行され、途中で「for文」を抜けて、次の処理へ移ります。

4.繰り返し処理の途中で次の処理をスキップしたい時(continue)

繰り返し処理の途中で次の処理をスキップさせたい時は「continue」を使用します。
continue」は以下のように使用します。

for ( int  i = 0 ; i < 10 ; i ++) {
  プログラム1;
  if ( 条件 ) {
    continue ;
  }
  プログラム2;
}

上記の「for文」は「プログラム1」と「プログラム2」を10回実行するものです。
10回実行する途中で「if文」の「条件」が成立すると「continue」が実行され、それより下の「プログラム2」は実行されずスキップされます。
次に「i ++」が実行されて、また「for文」の続きから処理が実行されます。

繰り返し何かをする事はプログラムの得意とするところです。「if文」の条件分岐と組み合わせることで様々な動作を実現することができますので、しっかりと使い方をマスターしましょう。

「if文」については以下のリンクで詳しく紹介しています。

動かして学ぶC言語「if文(条件分岐)」の使い方を基本から詳しく紹介
「C言語」の「if文」について紹介します。「if文」は条件によって実行するプログラムを分岐させたい時に使用します。 基本の書き方や使い方を「Lチカ」プログラムで実際に動かしながら楽しく学びましょう♪

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

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

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

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

6.まとめ

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

「for文」は実行回数を指定して繰り返し実行したい時によく使用されます。
繰り返し何かをする事はプログラムの得意とするところで「if文」の条件分岐と組み合わせると様々な動作を実現することができます。

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

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


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

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

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

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

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

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

C言語は他のプログラムを学ぶための知識のベースにもなります。
C言語ではないと理解が難しいコンピュータ内でのデータの動きも理解できます。
これが理解できれば、他の言語への移行や多言語の習得も苦にはならないと思います。
人気の言語「python」も中身は「C言語」で出来ています。

以下のリンクで「C言語」のコースを短期間のカリキュラムにまとめて、安価で提供されています。
2ヶ月の期間中はオンライン授業が見放題、質問は専用アプリを使用してチャットまたは電話で対応してくれます。
準備されたカリキュラムを自分のペースで学習して、わからなくなったらチャットや電話で相談しながら進められるのでおすすめです。
「JAVA」や「VBA」「PHP」「Web製作」のプランもあります。

以下のリンクから「コース紹介」や「受講の流れ」だけでも確認してみてください。

コメント

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