「C言語」の「for文」について紹介します。
「for文」は実行回数を指定して繰り返し実行したい時によく使用されます。
繰り返し何かをする事はプログラムの得意とするところです。
「if文」の条件分岐と組み合わせることで様々な動作を実現することができますので、サンプルプログラムを使って詳しく紹介します。
1.for文の基本
2.実践プログラム:フルカラーLEDの色を変化
3.break:繰り返し処理を途中で終了
4.continue:次の繰り返し処理をスキップ
5.ブラウザ上で動作確認するならpaiza.IO
6.まとめ
7.独学に限界を感じたら
1.for文の基本
「for文」を使用したプログラム例は以下のようになります。
プログラム1;
プログラム2;
}
処理の流れは以下のようになります。
プログラム1;
プログラム2;
}
「for文」では繰り返し処理用に変数を1つ使用します。
まずは繰り返し処理に使用する「変数の初期化」を行い「繰り返し条件式」でこの変数の評価(成立「1(真)」か不成立「0(偽)」か)を行います。
条件が成立していれば「プログラム1、プログラム2」(複数記入可)を実行します。
この後に「変数への演算式」で指定した演算を行い、変数の値を更新します。
再び「繰り返し条件式」で変数の評価を行い、条件が成立していれば「プログラム1、プログラム2」を実行します。
そして、また「変数への演算式」を実行「繰り返し条件式」の評価と繰り返されます。
「繰り返し条件式」を評価した時に条件が不成立になると繰り返しは終了します。
2.実践プログラム:フルカラーLEDの色を変化
安価で高機能なマイコンボード「ATOM LITE」本体内蔵のフルカラーLEDの色を徐々に変化させるプログラムで「for文」の動作を確認してみましょう。
「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」ライブラリについては以下のリンクで詳しく紹介しています。
LEDの色が変化するプログラムについては以下のリンクで詳しく紹介しています。
3.break:繰り返し処理を途中で終了
繰り返し処理の途中で終了させて「for文」から出たい時は「break」を使用します。
「break」は以下のように使用します。
プログラム1;
if ( 条件 ) {
break ;
}
}
上記の「for文」は「プログラム1」を10回実行するものです。
10回実行する途中で「if文」の「条件」が成立すると「break」が実行され、途中で「for文」を抜けて、次の処理へ移ります。
4.continue:次の繰り返し処理をスキップ
繰り返し処理の途中で次の処理をスキップさせたい時は「continue」を使用します。
「continue」は以下のように使用します。
プログラム1;
if ( 条件 ) {
continue ;
}
プログラム2;
}
上記の「for文」は「プログラム1」と「プログラム2」を10回実行するものです。
10回実行する途中で「if文」の「条件」が成立すると「continue」が実行され、それより下の「プログラム2」は実行されずスキップされます。
次に「i ++」が実行されて、また「for文」の続きから処理が実行されます。
「if文」については以下のリンクで詳しく紹介しています。
5.ブラウザ上で動作確認するならpaiza.IO
ちょっとした動作確認をしたい時は、ブラウザ上でプログラムを作成して実行できる「paiza.IO」が便利なので以下にリンクを貼っておきます。
無料で使用できて「C言語」だけでなく「python」や「JavaScript」「PHP」等たくさんの言語にも対応しています。
プログラミングの上達には学ぶことも大切ですが、自分で書いて実行して、どんな動きになるか、間違っててもいいのでこれをひたすら繰り返すことが一番の近道と思います。
たくさん書いて実行してみましょう。
6.まとめ
「C言語」の「for文」の使い方について紹介しました。
「for文」は実行回数を指定して繰り返し実行したい時によく使用されます。
繰り返し何かをする事はプログラムの得意とするところで「if文」の条件分岐と組み合わせると様々な動作を実現することができます。
「for文」の理解には実際に作成したプログラムを動かして、目で見て確認すると理解が早いです。
これには本体に「フルカラーLED」を内蔵した安価で高機能なマイコンボード「ATOM LITE」が手軽でおすすめです。
本体内蔵のフルカラーLEDでいろいろなパターンで動作プログラムを作成して、理解を深めましょう。
動かして学ぶ「C言語」については、他にも以下のリンクで基礎からサンプルプログラムを使って詳しく紹介しています。
7.独学に限界を感じたら
最後に、独学に限界を感じている方へ、私のように無駄な時間を過ごさないように「C言語」や「Python」を基礎から学べるオンラインスクール(教室での受講も可)の紹介です。
私は学生の頃、独学で「C言語」を始めましたが、かなり時間をかけて結局一度挫折しました(汗)
仕事で少しプログラミングに触れる機会もあり、今となっては小規模なプログラムなら組めますが、どれだけ時間をかけたでしょう・・・
短期間で基礎から学べて質問もできる、そんな環境が当時あったらと思うと・・・
今はとても羨ましい時代になりました。
いろいろなプログラミングスクールのサイトを見て回りましたが「C言語」と「Python」の両方を扱っている所は少ないです。その中でも以下のスクールは他の言語も含めて、たくさんの講座から目的やスキルに合ったものを組合わせて、オンラインでも対面でも受講が可能です。
ほとんどの受講生が未経験で、全国に教室があるため現地で直接指導してくれますが多くの講座がオンライン対応です。
オンラインでは「個人レッスン(講師一人につき3名程)」と「集合レッスン」の選択も可能です。
オンラインレッスンの方には授業で使用するノートPC(ソフトインストール済み)も追加料金なしで貸りられて、質問掲示板を使って授業時間外でも質問できます。
無料体験もあり、説明会やカウンセリング等も行っています。
以下のリンクから内容だけでも確認してみてください。
コメント