Cプログラム | コンパイル・エラーが発生したときに、プログラムのどこが間違っているかを理解し、デバグできる | 文字コードを理解し、「こんにちは」と日本語で画面に表示するプログラムを作成できる | プログラムをコンパイルして実行できる | Hello World!と画面に表示するプログラムを作成できる | Hello World!と画面に表示するプログラムを理解できるが、作成できない | プログラムの作成とコンパイルを理解できない |
変数と演算 | キャストを用いてint型の変数同士の除算を行うプログラムを作成できる | double型とint型の変数が混ざった演算の結果を理解できる | int型の変数同士、double型の変数同士の演算の結果を理解できる | 必要に応じてdouble型とint型の変数を宣言できる | double型とint型の違いを理解できるが、宣言できない | double型とint型の違いを理解できない |
条件分岐 | 複数の条件を論理積や論理和によって結んだif文を作成できる | if文を用いて条件によって3つ以上の異なるメッセージを出力するプログラムを作成できる | if文を用いて条件によって2つの異なるメッセージを出力するプログラムを作成できる | if文を用いて条件を満たしたときだけメッセージを出力するプログラムを作成できる | 条件分岐を含むフローチャートを理解できるが、プログラムを作成できない | if文と条件分岐を含むフローチャートを理解できない |
画面への出力とキーボードからの入力 | scanf関数を用いてキーボードから値を入力するプログラムを作成できる | 変換指定子を用いて桁数指定、ゼロ埋め、符号付き、左詰めなどで変数を画面に出力するプログラムを作成できる | エスケープ・シーケンスを用いて改行やダブル・クオーテーションを含むメッセージを表示するプログラムを作成できる | printf関数を用いて変数の値を画面に出力するプログラムを作成できる | printf関数を理解できるが、変数の値を画面に出力するプログラムを作成できない | printf関数を理解できない |
回数が決まっている繰り返し | for文のネストを用いて九九の表を出力するプログラムを作成できる | カウント変数を1増やす処理をインクリメント演算子や複合代入演算子で記述できる。 | for文を用いて1から10までの整数の和を求めるプログラムを作成できる | for文を用いて1から10までの整数を出力するプログラムを作成できる | for文を用いて1から10までの整数を出力するプログラムの流れを追跡できるが、プログラムを作成できない | for文を理解できない |
回数が決まっていない繰り返し | 与えられた後置判定条件分岐のフローチャートを前置判定条件分岐のフローチャートに変換し、while文を用いたプログラムを作成できる | break文やcontinue文を含むwhile文を用いたプログラムを作成できる | 与えられたfor文に等しいwhile文のプログラムを作成できる | while文を用いて出力した整数の合計が100を超えるまで1から順に整数を出力するプログラムを作成できる | while文を用いたプログラムの流れを正しく追跡できるが、作成できない | while文を理解できない |
プログラムの作成とテスト | プログラムをモジュールに分割し、モジュールごとにテストできる | 作成した関数をホワイト・ボックス・テストとブラック・ボックス・テストを用いてテストできる | 作成したフローチャートに等しいプログラムを作成できる | 自分が作成するプログラムのフローチャートを描ける | 自分が作成するプログラムの実行結果を書き下せるが、フローチャートを描けない | 自分が作成するプログラムの実行結果が理解できない |
関数 | 関数の中で宣言した変数の有効範囲を理解し、複数の関数で同じ名前の変数を用いたプログラムを作成できる | 戻り値を返す関数とそれを呼び出すプログラムを作成できる | 戻り値がない関数とそれを呼び出すプログラムを作成できる | 関数呼び出しを行うプログラムを作成できるが、関数を定義できない | 関数を理解できるが、関数呼び出しを行うプログラムを作成できない | 関数を理解できない |
配列 | 二次元配列を宣言し、二次元配列の要素をすべて出力するプログラムを作成できる | 配列を初期化し、sizeof演算子を用いて配列の要素数を計算できる | 配列を宣言し、配列の要素をすべて出力するプログラムを作成できる | 配列を宣言できるが、配列の要素をすべて出力するプログラムを作成できない | 配列を理解できるが、宣言できない | 配列を理解できない |
文字列 | 与えられた2つの文字列を比較して同じかどうかを判定するプログラムを作成できる | 与えられた文字列の長さを返す関数を作成できる | scanf関数を用いて文字列をキーボードから入力するプログラムを作成できる | Helloという文字列を一文字ずつ改行して出力するプログラムを作成できる | Helloという文字列を宣言できるが、一文字ずつ改行して出力するプログラムを作成できない | 文字と文字列を理解できない |
場合分け | 条件演算子を用いて変数を初期化できる | break文を含まないswitch文を用いて与えられた整数を6の剰余が1または2の組と3または4の組とそれ以外の組に分けるプログラムを作成できる | 与えられたif文に等しい条件演算子を用いた文を作成できる | switch文を用いて与えられた整数を剰余によって3つの組に分けるプログラムを作成できる | switch文を用いたプログラムの流れを追跡できるが、与えられた整数を剰余によって3つの組に分けるプログラムを作成できない | switch文と条件演算子を理解できない |
変数の高度な使い方 | 静的変数を用いて呼び出されるとそれまでに呼び出された回数を出力する関数を作成できる | 大域変数を用いて呼び出されるとそれまでに呼び出された回数を出力する関数を作成できる | 与えられたプログラムに宣言されている変数の有効範囲(スコープ)と有効期間(記憶域クラス)を理解できる | 16進数A0を10進数で出力するプログラムを作成できる | 符号付き整数型と符号なし整数型は理解できるが、変数の有効範囲(スコープ)と有効期間(記憶域クラス)を理解できない | 符号付き整数型と符号なし整数型を理解できない |
演算子の高度な使い方 | 左シフト演算を用いて-1を2倍するプログラムを作成できる | 与えられた整数の下位4ビットを2進数で出力するプログラムを作成できる | 増分・減分演算子の前置と後置の違いとプログラムの実行結果を理解できる | 論理演算子の短絡評価を理解し、短絡評価を用いてif文の評価回数を削減できる | 演算子の優先順位を理解できるが、論理演算子の短絡評価を用いてif文の評価回数を削減できない | ビット単位の演算、増分・減分演算子の前置と後置の違い、論理演算子の短絡評価、演算子の優先順位を理解できない |
関数の高度な使い方 | 再帰呼び出しを用いて与えられた整数の階乗を求める関数を作成できる | 再帰呼び出しを用いて与えられた整数の階乗を求める関数を追跡できるが、作成できない | 値渡しと参照渡しの違いを理解し、int型の配列とその長さを引数として渡すとすべての要素に0を代入する関数を作成できる | 与えられた関数のプロトタイプ宣言を記述できる | 関数のプロトタイプ宣言を理解できるが、与えられた関数のプロトタイプ宣言を宣言できない | 再帰呼び出し、値渡しと参照渡し、プロトタイプ宣言が理解できない |
大規模プログラムの開発に向けて | 与えられた二つの整数の和を返す関数をmain関数と別のファイルに作成し、コンパイルとリンクを行い、実行できる | 整数型の配列の要素数を別のファイルにマクロで定義したプログラムを作成できる | 整数型の配列の要素数を同じファイルにマクロで定義したプログラムを作成できる | キーボードから整数を入力するとその平方根を出力するプログラムを作成できる | コンパイルとリンク、前処理、ライブラリーを理解できるが、キーボードから整数を入力するとその平方根を出力するプログラムを作成できない | コンパイルとリンク、前処理、ライブラリーを理解できない |