*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]]に戻る