記事一覧へ戻る

C言語プログラミング能力認定試験3級 向け教材

C言語初級 |

C言語プログラミング能力認定試験3級 向けトレース教材

本教材は、試験対策を目的にしています。
ポインタ・構造体などの上位概念は使わず、3級レベルの文法だけです


1. 必須文法のおさらい(これだけ分かれば全部読める)

① 変数と代入

int a = 10;
a = a + 5;  // a は 15 になる
  • = は代入

  • 右辺を計算して左辺に入れる


② if文(条件分岐)

if(x > 5){
    y = 1;
}else{
    y = 0;
}
  • 条件が真(true)なら if 側

  • 偽(false)なら else 側


③ for文(回数が決まっている繰り返し)

for(i=0; i<5; i++){
    sum = sum + i;
}

意味:

  1. i=0 で開始

  2. i<5 の間くり返す

  3. 1回ごとに i++


④ 配列(センサ値・ログ保存の基本)

int data[4] = {10, 20, 30, 40};
添字
data[0]10
data[1]20
data[2]30
data[3]40

⑤ 論理演算子(組み込みで超重要)

if(x >= 10 && x <= 100)
  • && 両方 true

  • || どちらか true


2. 実務モデル①:センサ異常値除外+平均

▶ 想定シナリオ

  • センサ値を配列で取得

  • 異常値は無視

  • 正常値だけで平均


▶ Cコード

int sensor[6] = {12, 105, 18, 0, 25, 110};
int i;
int sum = 0;
int count = 0;

for(i=0;i<6;i++){
    if(sensor[i] >= 10 && sensor[i] <= 100){
        sum = sum + sensor[i];
        count = count + 1;
    }
}

if(count > 0){
    sum = sum / count;
}

▶ 処理の考え方

判定sumcount
12OK121
105NG121
18OK302
0NG302
25OK553
110NG553

平均 = 55 / 3 = 18(整数除算)


3. 実務モデル②:エラー回数で強制リセット

▶ 想定シナリオ

  • 通信結果が1=正常、0=エラー

  • エラーが3回続いたらリセット


▶ Cコード(約50行)

int frames[12]={1,0,1,0,0,1,0,1,0,0,0,1};
int i;
int okCount=0;
int errCount=0;
int resetCount=0;
int state=1;   // 1:動作中 0:リセット要求

for(i=0;i<12;i++){

    if(state==0){
        state=1;
        errCount=0;
        okCount=0;
        resetCount=resetCount+1;
    }

    if(frames[i]==1){
        okCount=okCount+1;
    }else{
        errCount=errCount+1;
    }

    if(errCount>=3){
        state=0;
    }
}

▶ 実務でよくある構造

監視 → 異常検出 → カウンタ加算 → 閾値超え → 状態変更

マイコン制御はほぼこの繰り返し。


4. 試験で狙われるポイント

✔ ① 初期値

int sum = 0;

ここが0でないと全部ズレる。


✔ ② ループ条件

i < 6

<= にすると1回多く回る。


✔ ③ ifの位置

if(state==0){...}

if(frames[i]==1){...}

順番が変わると結果が変わる → 超頻出ひっかけ。


✔ ④ 整数除算

55 / 3 = 18

小数は出ない。必ず切り捨て。


5. トレース手順テンプレ(試験本番用)

  1. 変数の初期値を書く

  2. for / while 1周ずつ表で追う

  3. ifの条件を必ず評価

  4. 変更された変数だけ更新

  5. ループ終了条件を確認