ラベル 基本的な文法 の投稿を表示しています。 すべての投稿を表示
ラベル 基本的な文法 の投稿を表示しています。 すべての投稿を表示

#include

#includeは外部のライブラリ(あらかじめ用意された機能群)を
自分のスケッチに取り入れたいときに使います。
この機能によりプログラマはC言語の豊富な標準ライブラリや
Arduino専用に書かれたライブラリを利用する事が出来ます。

[例]
この例では、RAMの代わりにFlashメモリにデータを保存するための
ライブラリをインクルードしています。
この方法により、動的な記憶に必要なRAMスペースが節約でき、
ルックアップテーブルも実用的に使えるようになります。


#include <avr/pgmspace.h>

prog_uint16_t myConstants[] PROGMEM = {0, 21140, 702  , 9128,  0, 25764, 8456,
0,0,0,0,0,0,0,0,29810,8968,29762,29762,4500
};

#define

#defineはC言語の便利な機能です。
プログラム中の定数に対して名前を付ける事が出来ます。
#defineで定義された定数は、コンパイル時に値へと置き換えられ
チップ状のメモリを消費しません。

なお、定数を定義する際は#defineよりもconstを使いましょう。
Arduinoの#defineはC言語のそれと同じ構文です。

[構文]
#define 定数名 値

[例]
この例では、コンパイル時にledpPinと記述されている部分が
すべて3という値に置き換えられます。

 #define ledPin 3

void loop(){
 digitalWrite(ledPin, HIGH);
 delay(100);
 digitalWrite(ledPin,LOW);
deray(100)
}

[補足]
#define文の後ろのセミコロン;は不要です。
もしつけてしまうと、コンパイラは暗号めいたエラーを表示するでしょう。

コメント

コメントは、そのプログラムがどのように機能するかを他の人や自分自身に
伝える為に書きます。
コメントはコンパイラから無視され、コンピュータに出力される事はないので
チップ上のメモリを消費しません。

コメントの目的は、プログラムがどのように働くかを自分が理解したり
思い出したりするのを助ける事です。
また、それを人に伝える為にあります。

[例]
コメントを記述する方法は//と/* ・・・・*/の2通りあります。


 x = 5;  // 1行コメント。2つのスラッシュの後ろは全てコメント。
      
/* こちらは複数行コメント。プロックをコメントアウトしたいときに使用。

if (gwb == 0){   // 複数行の中の一行コメントは可能
x = 3;                //しかしここに複数行コメントは不可
}

ここまでが複数行コメント*/

{} (波カッコ)

波カッコ(ブレース)は、C言語の重要な要素です。
波カッコは下に示すように、複数の異なった状況で使われときに初心者を混乱させます。

開きカッコ[ { ]は、常に閉じカッコ[ } ]を伴います。
これをカッコがバランスしている、といいます。

arduino IDEは波カッコのバランスをチェックする機能がついていて、
ある波カッコをクリックすると、対になる波カッコがハイライト表示されます。
(コメントアウトされたテキストの中の波カッコをみつけてしまうこともあります)

プログラミングの初心者やBASICから移ってきた人は、波カッコを使うときに
混乱したり苦手に思ったりするかもしれません。
そういうときは、波カッコをサブルーチンの中のreturn文や、
if文のにおけるendif、あるいはforループにおけるnextと同じだと
考えるといいかもしれません。

波カッコの使い方はさまざまです。
波カッコを必要とするプログラムを書くとき、開きカッコ{を入力したら
すぐ閉じカッコ}も入力するようにするのは良い習慣です。
先に波カッコを置いてから、その間に文や改行を入力していきます。
こうすることで、バランスがとれた状態でいられます。

大きなプログラムにおけるアンバランスな波カッコは、解けない暗号のように
不可解なコンパイルエラーを引き起こします。
波カッコにはさまざまな使い方があると同時に、いくつかの文では極めて重要なので
ほんの数行位置が違っただけで、そのプログラムが意味するところが
劇的に変化してしまうことがあります。


関数

void myfunction(引数){
  文
}


ループ

while (式)
{
  文
}
do
{
  文
} while (式);
for (初期化; 式; 加算)
{
  文
}


条件分岐

if (式)
{
  文
}
else if (式)
{
  文1
}
else
{
  文2
}

;(セミコロン)

文末に用います。

[例]

 int a =13;

[tips]
文末のセミコロンを忘れると、コンパイラのエラーを引き起こします。
その時のエラーメッセージは、セミコロンの抜けを明確に示すかもしれませんが
セミコロンとは全く関係ないメッセージであることもあります。

一見筋の通らない不可解なエラーが発生したときは、
まず最初にコンパイラが示すエラーのすぐ近くでセミコロンを忘れてないかを
確かめましょう。