ページへ戻る

− Links

 印刷 

FDIII-HC Starter Kit Guide Chapter1.4 のバックアップソース(No.7) :: Besttechnology

knowledge:FDIII-HC Starter Kit Guide Chapter1.4 のバックアップソース(No.7)

« Prev[4]  Next »[5]
*C言語の基礎 [#qde98ab5]
このページではFREEDOMライブラリを使用した場合のC言語について説明をします。~
通常のC言語と若干異なる場合があります。

**基本 [#o84a22ef]
***2進数 [#ea68bb60]
私たちが普段使っているのは10進数です。
0から9まで増えて行くと、次は桁が上がり10になります。~
コンピュータでは2進数や16進数で表されることがあります。
2進数は0,1と増えて行くと、次は桁が上がって10になります。

***ビット・バイト [#y24bb3d4]
コンピュータの世界では2進数で表されことがありますが、その最小単位をビットと言います。~
またビットが8個で1バイトとなります。

***変数 [#ib843ca5]
変数は数値や文字を置いておく入れ物です。~
使い始める前に「このようなデータを入れるこんな名前の入れ物を使います」と宣言しなければなりません。
#ref(variable1.png,100%)
「int型のデータを入れるaという名前の入れ物を使います」と宣言しています。
int型というのは4バイトの整数という意味です。~
※システムによっては異なる場合があります
#ref(variable2.png,100%)
 a=24;
は変数aに24という整数を入れることになります。

***データ型 [#n1ebdc94]
変数を宣言する際にはどのようなデータなのかを言う必要がありました。
この「どのようなデータなのか」というのを型と言います。
型には以下があります。
|char|1バイト|-128~127|
|unsigned char|1バイト|0~255|
|short|2バイト|-32768~32767|
|unsigned short|2バイト|0~65535|
|long|4バイト|-2147483648~2147483647|
|unsigned long|4バイト|0~4294967295|
|int|4バイト|-2147483648~2147483647|
|unsigned int|4バイト|0~4294967295|

***演算子 [#reb3a365]
基本的な演算子には以下があります。
| 演算子 | 意味 | 使用例 |
| = | 右辺を左辺に代入 | a=b |
| + | 足し算 | c=a+b |
| - | 引き算 | c=a-b |
| * | 掛け算 | c=a*b |
| / | 割り算 | c=a/b |
| % | 割り算の余り | c=a%b |

算数でa=bは、aとbは同じという意味です。しかしC言語ではa=2でb=3の時にa=bとす
ると、aにbの値が代入されa、b両方とも3になります。

その他に以下の演算子があります。
基本的な演算子で書き換えることもですが、プログラムを見易く、短くするために以下を使います。
| 演算子 | 使用例 | 基本演算子で表すと |
| += | a+=b | a=a+b |
| -= | a-=b | a=a-b |
| *= | a*=b | a=a*b |
| /= | a/=b | a=a/b |
| %= | a%=b | a=a%b |
| ++ | a++ | a=a+1 |
| -- | a-- | a=a-1 |

***比較演算子 [#j7650a08]
比較演算子は後で説明する制御文の条件になります。

| 比較演算子 | 使用例 | 意味 |
| == | 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++する」という制御文を書いた場合、a=3,b=4ならa++されますが、a=4,b=4なら何もされません。

***論理演算子 [#k2bb26ac]
いくつかの条件を組み合わせる時に使用します。

| 論理演算子 | 使用例 | 意味 |
| && | 3<=a && a<=8 | aは3以上かつ8以下 |
| ! | !(a==5) | aは5ではない |
 ||  a<3 || 8<a  aは3未満または8より大きい
***fd_printf文 [#ua9b7908]
文字や変数の値などを表示する時に使います。~
通常のC言語ではprintfと書きますが、FREEDOMライブラリではfd_printfと書きます。
#ref(printf1.png,100%)
fd_printfの()内の"に挟まれた文字をそのまま表示しています。
----
#ref(printf2.png,100%)
aという変数の値を表示しています。変数の値は" "内の%dの部分に表示されます。%dの部分に何を表示するかを" "の後に,で区切って書きます。~
%dは整数を表示します。その他に以下があります。~
|%d|整数を10進数で表示|5, -17 など|
|%c|文字|'G' など|
|%s|文字列|"Hello" など|
|%o|整数を8進数で表示|12, 23 など|
|%b|整数を2進数で表示|10, 1011 など|
|%u|整数を符号なし10進数で表示|37,2093 など|
|%x|整数を16進数で表示|1A, B89E など|

----
#ref(printf3.png,100%)
%とdの間に数値を入れるとその桁数で表示します。空いている桁にはスペースが入れられます。~
さらに数値の前に0を付けると空いている桁には0が入れられます。~

 \n
は改行です。その他に
 \r
と書くと復帰(同じ行の頭から再び表示する)になります。

**制御文 [#b3400d86]
***if文 [#c6144380]
if文は「もし○○だったら△△する。それ以外だったら□□する」というような、条件によって実行することを分ける時に使います。
#ref(if1.png,100%)
「もし○○だったら△△する」というif文です。~

()内の条件が成り立っている時は{}内の処理を実行します。成り立っていない時は何もしません。
 main() {
   int a =10;

   if (a > 5) {
     a = a - 1;
   }
 }
もし変数aが5より大きかったらaから1引くというプログラムです。
----
#ref(if2.png,100%)
「もし○○だったら△△する。それ以外だったら□□する」というif文です。~

()内の条件が成り立っている時はその直後の{}内の処理を実行し、成り立っていない時はelse後の{}内の処理を実行します。
 main() {
   int a =10;

   if (a > 5) {
     a = a - 1;
   }
   else {
     a = a + 1;
   }
 }
もし変数aが5より大きかったらaから1引いて、それ以外(aが5以下)なら1足すというプログラムです。
----
#ref(if3.png,100%)
「もし○○だったら△△する、それ以外でもし●●だったら□□する、更にそれ以外は■■する」というif文です。~

最初のifの()内の条件が成り立っている時はその直後の{}内の処理を実行し、成り立っていない時は次のelse ifへ行きます。else ifの()内の条件が成り立っている時はその直後の{}内の処理を実行し、成り立っていない時はelse後の{}内の処理を実行します。
 main() {
   int a =10;

   if (a > 5) {
     a = a - 1;
   }
   else if (a < 0) {
     a = 0;
   }
   else {
     a = a + 1;
   }
 }
もし変数aが5より大きかったらaから1引いて、それ以外(aが5以下)でaが0より小さかったらaに0を代入して、更にそれ以外(aは0以上,5以下)ならaに1足すというプログラムです。

***for文 [#l1911408]
同じ処理を繰り返す時に使います。通常はカウンタを使って繰り返す回数を決めます。
#ref(for1.png,100%)
「iの初期値を0とし、iが5より小さい間は処理を繰り返す。ただし処理を1回行ったらiを1増やす。」というfor文です。~

事前にカウンタを変数として宣言しておきます。
処理を行うごとにカウンタが0,1,2,3,4と増え5になったら繰返しを止めます。~
i++はi=i+1と同じ意味です。
 main() {
   int i, a = 1;

   for (i = 0; i < 5; i++) {
     a = a * 3;
   }
 }
a×3を5回繰り返す(3の5乗を計算する)プログラムです。

***while文 [#of5e8829]
同じ処理を繰り返す時に使います。for文との違いは、繰り返す回数が決まっていない時に使うということです。
#ref(while1.png,100%)
()内の条件が成り立っている間は処理を繰り返し実行し、条件が成り立たなくなったら繰返しを止めます。
 main() {
   int i;

   while (i < 1000) {
     i = i * 2;
   }
 }
i×2を繰り返し、iが1000より少ない状態でなくなったら(1000以上になったら)繰り返しを止めるというプログラムです。

***switch文 [#x577fb19]
変数や式の値によって処理を分けるときに使用します。
#ref(switch1.png,100%)
「変数・式が値1なら処理Aを実行、値2なら処理Bを実行、どれにも当てはまらなければ処理Cを実行する」というswitch文です。~

switch文の()内の変数又は式の値がcaseの後の値と同じならその直後の処理を行います。処理後はbreak;を書きましょう。忘れるとそのまま次の処理も行ってしまいます。defaultはどれにも当てはまらない場合です。
 main() {
   char c = '+';
   int a, m = 5, n = 3;

   switch(c) {
     case '+':
       a = m + n;
       break;
     case '-':
       a = m - n;
        break;
     default:
       a = 0;
   }
 }
cが+ならmとnをたしてaに代入、cが-ならmからnを引いてaに代入、それ以外ならaに0を代入するというプログラムです。

[[FDIII-HC Starter Kit Guid]]に戻る

« Prev[4]  Next »[5]