10: 2009-12-10 (木) 16:01:23 sho ソース 現: 2011-02-02 (水) 19:28:16 eid7gud ソース
Line 1: Line 1:
 +TITLE:FDIII-HC Starter Kit Guide Chapter1.4
*C言語の基礎 [#qde98ab5] *C言語の基礎 [#qde98ab5]
このページではFREEDOMライブラリを使用した場合のC言語について説明をします。~ このページではFREEDOMライブラリを使用した場合のC言語について説明をします。~
Line 6: Line 7:
**基本 [#o84a22ef] **基本 [#o84a22ef]
-***2進数 [#ea68bb60] +***2進数・16進数 [#ea68bb60] 
-私たちが普段使っているのは10進数です。 +私たちが普段使っている数の数え方は10進数です。 
-0から9まで増えて行くと、次は桁が上がり10になります。+0,1,2,3,4…と増えてゆき、9の次は桁が上がって10になります。
-コンピュータでは2進数や16進数で表されることがあります。 +コンピュータでは2進数や16進数といった異なる基数で表されることがあります。 
-2進数は0,1と増えて行くと、次は桁が上がって10になります。+たとえば2進数は0,1…と増えて行くと、1の次は桁が上がって10になります。~ 
 +下表は10進数・2進数・16進数の対応表です。 
 +| 10進数 | 2進数 | 16進数 | 
 +| 0 | 0 | 0 | 
 +| 1 | 1 | 1 | 
 +| 2 | 10 | 2 | 
 +| 3 | 11 | 3 | 
 +| 4 | 100 | 4 | 
 +| 5 | 101 | 5 | 
 +| 6 | 110 | 6 | 
 +| 7 | 111 | 7 | 
 +| 8 | 1000 | 8 | 
 +| 9 | 1001 | 9 | 
 +| 10 | 1010 | A | 
 +| 11 | 1011 | B | 
 +| 12 | 1100 | C | 
 +| 13 | 1101 | D | 
 +| 14 | 1110 | E | 
 +| 15 | 1111 | F | 
 +| 16 | 10000 | 10 |
-| 10進数 | 2進数 | 
-| 0 | 0 | 
-| 1 | 1 | 
-| 2 | 10 | 
-| 3 | 11 | 
-| 4 | 100 | 
-| 5 | 101 | 
-| 6 | 110 | 
-| 7 | 111 | 
-| 8 | 1000 | 
-| 9 | 1001 | 
-| 10 | 1010 | 
***ビット・バイト [#y24bb3d4] ***ビット・バイト [#y24bb3d4]
-コンピュータの世界では2進数で表されことがありますが、その最小単位をビットと言います。~ +コンピュータの世界で使われる情報(データ)の最小単位をビットと言います。1ビットは0か1の値を扱い、2進数の1桁分が扱う大きさとなります。 
-またビットが8個で1バイトとなります。+ 
 +また1ビットが8個集まったものを1バイト(=8ビット)と言います。
#ref(bitbyte.png,100%) #ref(bitbyte.png,100%)
-1バイトで表すことができる数値は10進数だと0~255です。+1バイトで表すことができる数値は10進数で表すと0~255です。 
 + 
 +下表は10進数を2進数(1バイト)で表した例です。 
 +| 10進数 | 2進数(1バイド) | 
 +| 0 | 00000000 | 
 +| 50 | 00110010 | 
 +| 128 | 01000000 | 
 +| 200 | 11001000 | 
 +| 255 | 11111111 |
***変数 [#ib843ca5] ***変数 [#ib843ca5]
Line 35: Line 52:
#ref(variable1.png,100%) #ref(variable1.png,100%)
「int型のデータを入れるaという名前の入れ物を使います」と宣言しています。 「int型のデータを入れるaという名前の入れ物を使います」と宣言しています。
-int型というのは4バイトの整数という意味です。~+int型というのは4バイトの整数という意味です。詳しくは後述します。~
#ref(variable2.png,100%) #ref(variable2.png,100%)
Line 42: Line 59:
***データ型 [#n1ebdc94] ***データ型 [#n1ebdc94]
-変数を宣言する際にはどのようなデータなのかを言う必要がありました。 +変数は使い始める前に「このようなデータを入れるこんな名前の入れ物を使います」と予め宣言しておかなければなりません。「このようなデータ」を型と言います。~ 
-この「どのようなデータなのか」というのを型と言います。 +型には以下があり、それぞれサイズと入る値の範囲が異なります。 
-型には以下があります。 + 
-|char|1バイト|-128~127| +| 型の名前 | サイズ | 入る値の範囲 | 
-|unsigned char|1バイト|0~255| +| char | 1バイト | -128~127 | 
-|short|2バイト|-32768~32767| +| unsigned char | 1バイト | 0~255 | 
-|unsigned short|2バイト|0~65535| +| short | 2バイト | -32768~32767 | 
-|long|4バイト|-2147483648~2147483647| +| unsigned short | 2バイト | 0~65535 | 
-|unsigned long|4バイト|0~4294967295| +| long | 4バイト | -2147483648~2147483647 | 
-|int|4バイト|-2147483648~2147483647| +| unsigned long | 4バイト | 0~4294967295 | 
-|unsigned int|4バイト|0~4294967295|+| int | 4バイト | -2147483648~2147483647 | 
 +| unsigned int | 4バイト | 0~4294967295 | 
 + 
 +変数は数値や文字を置いておく入れ物でした。 
 +大きい入れ物なら大きな数字も入れられるので、変数のサイズが大きい型を選べば良いと思うかもしれません。 
 +しかしコンピュータが大きいサイズの変数を扱うには、小さいサイズの変数に比べて記憶しておく場所も大きくなり、それに伴う様々な処理にかかる時間も必要になってきます。
***演算子 [#reb3a365] ***演算子 [#reb3a365]
基本的な演算子には以下があります。 基本的な演算子には以下があります。
| 演算子 | 意味 | 使用例 | | 演算子 | 意味 | 使用例 |
-| = | 右辺を左辺に代入 | a=b | +| = | 右辺を左辺に代入 | a = b | 
-| + | 足し算 | c=a+b | +| + | 足し算 | c = a + b | 
-| - | 引き算 | c=a-b | +| - | 引き算 | c = a - b | 
-| * | 掛け算 | c=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とbは同じという意味で使うのが一般的ですが、C言語では右辺を左辺に代入します。例えばa=2を左辺、b=3を右辺とし、a=bにすると、bの値がaに代入され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 *= 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 | 
-| -- | a-- | a=a-1 |+| -- | a-- | a = a - 1 |
***比較演算子 [#j7650a08] ***比較演算子 [#j7650a08]
Line 81: Line 103:
| 比較演算子 | 使用例 | 意味 | | 比較演算子 | 使用例 | 意味 |
-| == | a==b | aとbは等しい | +| == | a == b | aとbは等しい | 
-| ''&lt;'' | a<b | aはbより小さい | +| &#x3c; | a < b | aはbより小さい | 
-| ''&gt;'' | a>b | aはbより大きい | +| &#x3e; | 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とbは等しくない |
-例えば「もしa<bだったら、a++する」という制御文を書いた場合、a=3,b=4ならa<bが成り立ちa++されますが、a=4,b=4ならa<bが成り立たないので何もされません。+例えば「もしa<bだったら、aに1足す」という制御文を書いた場合、a=3,b=4ならa<bが成り立ちaに1が足されますが、a=4,b=4ならa<bが成り立たないので何もされません。
***論理演算子 [#k2bb26ac] ***論理演算子 [#k2bb26ac]
Line 94: Line 116:
| 論理演算子 | 使用例 | 意味 | | 論理演算子 | 使用例 | 意味 |
-| && | 3<=a && a<=8 | aは3以上かつ8以下 | +| && | 3 <= a && a<= 8 | aは3以上かつ8以下 | 
-| ! | !(a==5) | aは5ではない | +| ! | !(a == 5) | aは5ではない | 
-| || | a<3 || 8<a | aは3未満または8より大きい | +| || | a < 3 || 8 < a | aは3未満または8より大きい |
-※ || は半角です。+
***fd_printf文 [#ua9b7908] ***fd_printf文 [#ua9b7908]
-文字や変数の値などを表示する時に使います。~+文字や変数の値などを[[Chapter1.2>FDIII-HC Starter Kit Guide Chapter1.2]]でインストールしたSIMPLE TERM上で表示する時に使います。~ 
通常のC言語ではprintfと書きますが、FREEDOMライブラリではfd_printfと書きます。 通常のC言語ではprintfと書きますが、FREEDOMライブラリではfd_printfと書きます。
#ref(printf1.png,100%) #ref(printf1.png,100%)
-fd_printfの () 内の " に挟まれた文字をそのまま表示しています。+fd_printfの () 内の " で挟まれた文字をそのまま表示しています。
---- ----
#ref(printf2.png,100%) #ref(printf2.png,100%)
-aという変数の値を表示しています。変数の値は " " 内の %d の部分に表示されます。%d の部分に何を表示するかを " " の後に , で区切って書きます。~ +aという変数の値を表示しています。変数の値は " " 内の%dの部分に表示されます。%dの部分に何を表示するかを " " の後に , で区切って書きます。~ 
-%d は整数を表示します。その他に以下があります。+%dは整数を表示します。その他に以下があります。~ 
-|%d|整数を10進数で表示|5, -17 など| +| 書式指定 | 意味 | 例 | 
-|%c|文字|'G' など| +| %d | 整数を10進数で表示 | 5, -17 など | 
-|%s|文字列|"Hello" など| +| %c | 文字 | 'G' など | 
-|%o|整数を8進数で表示|12, 23 など| +| %s | 文字列 | "Hello" など | 
-|%b|整数を2進数で表示|10, 1011 など| +| %o | 整数を8進数で表示 | 12, 23 など | 
-|%u|整数を符号なし10進数で表示|37, 2093 など| +| %b | 整数を2進数で表示 | 10, 1011 など | 
-|%x|整数を16進数で表示|1A, B89E など|+| %u | 整数を符号なし10進数で表示 | 37, 2093 など | 
 +| %x | 整数を16進数で表示 | 1A, B89E など |
---- ----
#ref(printf3.png,100%) #ref(printf3.png,100%)
-% と d の間に数値を入れるとその桁数で表示します。空いている桁にはスペースが入れられます。+%とdの間に入る数値は桁数を表します。空いている桁にはスペースが入ります。
-さらに数値の前に 0 を付けると空いている桁には 0 が入れられます。~+さらに数値の前に0を付けると空いている桁には0が入ります。~
 \n  \n
Line 125: Line 148:
 \r  \r
と書くと復帰(同じ行の頭から再び表示する)になります。 と書くと復帰(同じ行の頭から再び表示する)になります。
 +
 +|CENTER:BGCOLOR(red):||c
 +|  :idea:|お使いのブラウザ(Internet Explorer、Firefox、Safariなど)によっては、文中の¥(円記号)が\(バックスラッシュ)で表示される場合がありますが、GCC Developer Liteでは¥で表示されます。&br;また本文中のプログラムコード(プログラムを書いたもの)をGCC Developer Liteへコピーして貼り付けた場合、\は¥になりますので問題ありません。&br;※説明のためここでは¥と\を全角で書いていますが、実際には半角です。|
***アドレス [#b45fcfd3] ***アドレス [#b45fcfd3]
Line 133: Line 159:
 int a, b = 3;  int a, b = 3;
 a = &b;  a = &b;
-aには3ではなく、bのアドレスの値が入れられます。+aには3ではなく、bのアドレスの値が入ります。
**制御文 [#b3400d86] **制御文 [#b3400d86]
***if文 [#c6144380] ***if文 [#c6144380]
-if文は「もし○○だったら△△する。それ以外だったら□□する」というような、条件によって実行することを分ける時に使います。+if文は「もし○○だったら△△する。それ以外だったら□□する」というような、条件によって実行を分岐する時に使います。
#ref(if1.png,100%) #ref(if1.png,100%)
「もし○○だったら△△する」というif文です。~ 「もし○○だったら△△する」というif文です。~
-() 内の条件が成り立っている時は {} 内の処理を実行します。成り立っていない時は何もしません。+()内の条件が成り立っている時は{}内の処理を実行します。成り立っていない時は実行しません。
 main() {  main() {
   int a =10;    int a =10;
 + 
   if (a > 5) {    if (a > 5) {
     a = a - 1;      a = a - 1;
   }    }
 }  }
-もし変数aが5より大きかったら a から1引くというプログラムです。aは10なのでa>5が成り立っており、aから1が引かれます。+もし変数aが5より大きかったらaから1を引くというプログラムです。aは10なのでa>5が成り立っており、aから1が引かれます。
---- ----
#ref(if2.png,100%) #ref(if2.png,100%)
「もし○○だったら△△する。それ以外だったら□□する」というif文です。~ 「もし○○だったら△△する。それ以外だったら□□する」というif文です。~
-() 内の条件が成り立っている時はその直後の {} 内の処理を実行し、成り立っていない時はelse後の {} 内の処理を実行します。+()内の条件が成り立っている時はその直後の{}内の処理を実行し、成り立っていない時はelse後の{}内の処理を実行します。
 main() {  main() {
   int a =3;    int a =3;
 + 
   if (a > 5) {    if (a > 5) {
     a = a - 1;      a = a - 1;
Line 165: Line 191:
   }    }
 }  }
-もし変数a が5より大きかったら a から1引いて、それ以外(aが5以下)なら1足すというプログラムです。a は3なので a>5 は成り立たずelse内の a に1足すが実行されます。+もし変数aが5より大きかったらaから1を引いて、それ以外(aが5以下)なら1を足すというプログラムです。aは3なのでa>5は成り立たずelse内のaに1を足すが実行されます。
---- ----
#ref(if3.png,100%) #ref(if3.png,100%)
「もし○○だったら△△する、それ以外でもし●●だったら□□する、更にそれ以外は■■する」というif文です。~ 「もし○○だったら△△する、それ以外でもし●●だったら□□する、更にそれ以外は■■する」というif文です。~
-最初のifの () 内の条件が成り立っている時はその直後の {} 内の処理を実行し、成り立っていない時は次のelse ifへ行きます。else ifの () 内の条件が成り立っている時はその直後の {} 内の処理を実行し、成り立っていない時はelse後の {} 内の処理を実行します。~+最初のifの()内の条件が成り立っている時はその直後の{}内の処理を実行し、成り立っていない時は次のelse ifへ行きます。else ifの()内の条件が成り立っている時はその直後の{}内の処理を実行し、成り立っていない時はelse後の{}内の処理を実行します。~
else ifは複数書くことができます。 else ifは複数書くことができます。
 main() {  main() {
   int a = -3;    int a = -3;
 + 
   if (a > 5) {    if (a > 5) {
     a = a - 1;      a = a - 1;
Line 185: Line 211:
   }    }
 }  }
-もし変数a が5より大きかったら a から1引いて、それ以外(aが5以下)でかつ a が0より小さかったら a に0を代入して、更にそれ以外(aは0以上,5以下)なら a に1足すというプログラムです。+もし変数aが5より大きかったらaから1を引いて、それ以外(aが5以下)でかつaが0より小さかったらaに0を代入して、更にそれ以外(aは0以上,5以下)なら a に1を足すというプログラムです。
-a は-3なので a>5 は成り立たず、else ifの a<0 が成り立ち、aは0になります。+aは-3なのでa>5は成り立たず、else ifのa<0が成り立ち、aは0になります。
***for文 [#l1911408] ***for文 [#l1911408]
-同じ処理を繰り返す時に使います。通常はカウンタを使って繰り返す回数を決めます。+同じ処理を繰り返す時に使います。通常はカウンタ(何回繰り返したかをカウントする変数)を使って繰り返す回数を決めます。
#ref(for1.png,100%) #ref(for1.png,100%)
「iの初期値を0とし、iが5より小さい間は処理を繰り返す。ただし処理を1回行ったらiを1増やす。」というfor文です。~ 「iの初期値を0とし、iが5より小さい間は処理を繰り返す。ただし処理を1回行ったらiを1増やす。」というfor文です。~
Line 198: Line 224:
 main() {  main() {
   int i, a = 1;    int i, a = 1;
 + 
   for (i = 0; i < 5; i++) {    for (i = 0; i < 5; i++) {
     a = a * 3;      a = a * 3;
Line 211: Line 237:
 main() {  main() {
   int i = 1;    int i = 1;
 + 
   while (i < 1000) {    while (i < 1000) {
     i = i * 2;      i = i * 2;
   }    }
 }  }
-i×2を繰り返し、iが1000より少ない状態でなくなったら(1000以上になったら)繰り返しを止めるというプログラムです。+i×2をiに代入する処理を繰り返し、iが1000より少ない状態でなくなったら(1000以上になったら)繰り返しを止めるというプログラムです。
***switch文 [#x577fb19] ***switch文 [#x577fb19]
Line 229: Line 255:
   char c = '+';    char c = '+';
   int a, m = 5, n = 3;    int a, m = 5, n = 3;
 + 
   switch(c) {    switch(c) {
     case '+':      case '+':
Line 278: Line 304:
各関数内にインデントを付け、階層化することで、それぞれの関数の開始位置と終了位置が分かりやすくなります。 各関数内にインデントを付け、階層化することで、それぞれの関数の開始位置と終了位置が分かりやすくなります。
-[[FDIII-HC Starter Kit Guid]]に戻る+[[FDIII-HC Starter Kit Guide]]に戻る


トップ   差分 リロード印刷に適した表示   全ページ一覧 単語検索 最新ページの一覧   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom