復習のガイド・ヒント

期末試験は,情報処理実習1の範囲も含め,今年学習したC言語のすべてが範囲となる. しかしながら,勉強の仕方について迷っている学生もいると思われるので, 復習しておくべきことと,例題などをいくつか示しておく.


関数の作成

□ main関数から関数を分けることのメリットはどのようなものか?
□ 引数は変数しかやり取りできないか?
□ void fnc(void); と関数を宣言したが,この関数を利用することは可能か?注意すべき点は?
□ 引数にする際,型変換により揃える必要があるか?
□ 関数はどこに宣言すべきか?
□ 関数の中に記述した変数はどこで利用できるか?(CとC++で違う)

例題) main関数中で,float型で宣言された変数がある.関数の引数はdouble型であるときどのような処理・操作が必要か?
例題) main関数中にすべてのコードを記述することができる場合でも関数を作成する利点について述べよ.
例題) 戻り値の型はどのように記述すべきか,例示して説明せよ.


配列,構造体と構造体の演算

□ 変数宣言で,x1, x2, x3, x4, x5と,配列 x[5] とした場合の違いは何か?
□ 配列 x[10][10] とはどのようなデータの構造となっているか?
□ std::vector の利用法
□ 構造体を利用する理由はどのようなことか?
□ 構造体を配列にするとはどのようなことか?
□ 構造体を用いるにはどのように記述すればよいか?
□ 構造体内の中の変数に値を与えるとき,どのように書けばよいか?
□ 構造体名は,変数の型のようなものとして考えてよいか?
□ 文字を扱う上で配列にしなければならない理由はどのようなものであるか?

例題) 3行3列の行列を定義するために配列を用意したい.どのように宣言するか答えよ.
例題) 2行2列の行列と2行1列のベクトルがある.これらを掛ける関数を作成せよ.
例題) 構造体aの中に char str[20]がある.構造体を配列にしてa[10]とした場合,漢字の文字列は合計何文字分記述できるか?


複素数

□ Cの組み込み変数に複素数型という型はないが,C++の標準テンプレートライブラリ(STL)で複素数を簡単に扱うことができる.
□ 虚数についてプログラム上どのようなことに注意すべきか?
□ 数学的な複素数とプログラム上の複素数はどのように違うか?

例題) 複素数型 std::complex<double> を扱う方法.
例題) 二つの複素数の積を演算するプログラムを作成せよ.
例題) double im; として虚数を定義した.im*imで必要な値となるか,説明せよ.


ポインタ

□ ポインタはどのように宣言するか.値はどのように与えるか?
□ プログラムにおけるデータとは,アドレスと値から構成されると考えてよいか?
□ アドレスをやり取りすると,メモリ内の値はどのように扱われるか?
□ 関数をポインタ化した場合,どのように宣言するか.関数はどのように与えるか?

例題) 通常の値で参照する方法に対してポインタ(アドレス)で参照した場合,メモリ内の値の動き(書き換え)はどのように違うか説明せよ.
例題) メモリ内の複数の変数を示すのになぜアドレスが必要となるか説明せよ.
例題) 関数ポインタを利用するメリットを説明せよ.


グローバル変数

□ グローバル変数は,ソースファイルのどこに記述するか?
□ グローバル変数は,プログラムのどこから読み込むことができるのか?
□ グローバル変数を変更できなくする方法はあるのか?
□ グローバル変数は積極的に利用すべきか?

例題) グローバル変数とはプログラムのどこにどのように記述するか,説明せよ.
例題) グローバル変数の値が書き換わっては困る場合,どのように記述するか,説明せよ.
例題) グローバル変数をなるべく使わない方がよいと言われる理由はどのようなものか説明せよ.


補間

□ 補間によって作られたグラフは,理論式と同じか否か?その理由は?
□ 内挿,外挿とは何か?またそれぞれの精度はどのように違うか?
□ 補間アルゴリズムにより結果が異なる.補間したグラフの扱いで注意すべきことはどんなことか?

例題) 充分小さい誤差で計測データを得た.補間の処理を行った際の値は理論式に則っていると判断してよいか説明せよ.
例題) 内挿の範囲で補間曲線を調べたところ,理論式による曲線と誤差が生じた.考えうる原因を説明せよ.
例題) 測定していない値について外挿によって推測した.この値の扱いについてどのように注意すべきか説明せよ.


最小2乗法

□ 最小2乗法では,何の値が求められるか?
□ 人間が行うグラフ作成と最小2乗法による値はどのように異なるか?
□ 最小2乗法で理論式を決めた.理論式自体が正しいとして,結果をそのまま利用できるか?その理由は?

例題) 理論式が正しいとして,最小2乗法による値に誤差が生じる原因は何か,説明せよ.
例題) 最小2乗法の結果の精度を上げるにはどのようにしたらよいか,説明せよ.
例題) 最小2乗法の結果が良くなかった.この場合,結果をどのように扱うべきか説明せよ.


離散フーリエ変換(DFT)

□ フーリエ変換と離散フーリエ変換の違いはどのようなものか?
□ 離散フーリエ変換を行うことで得られる情報はどんなものか?

例題) フーリエ変換(離散ではない)を計算機上で演算することは可能か?またその理由はどのようなものか?
例題) 波形を観測している.今の瞬間の周波数構成を離散フーリエ変換によって演算することは可能か?
例題) サンプリング周期と離散フーリエ変換で演算できる周波数の上限の関係を説明せよ.


数値シミュレーション

□ 解析解,数値解(解析的解法,数値的解法)の違いは何か?
□ 同じ数式を計算したのに,解が異なってしまったのは何故か?
□ 同じことを求めるのに,解法(アルゴリズム)がいくつもあるのは何故か?
□ シミュレーションを行ったがエラーは発生しなかった.結果の妥当性と理由は?
□ 精度良く計算するために,細かい刻みで多くの計算を行った場合,よい結果となるか?
□ 切り捨て,丸め誤差とは何か?
□ 誤差の蓄積とは何を意味するか?
□ 計算結果の妥当性を上げるにはどのようなことに気をつけるべきか?

例題) 数値シミュレーションの結果と簡素化された理論式による解析結果を比較する意義を論じよ.
例題) よい精度の計算結果を得るため,計算速度の速いコンピュータと細かい刻みの計算上条件でシミュレーションを行った.結果は妥当と考えられるか,理由を添えて説明せよ.
例題) 理論式,実験値(測定値),シミュレーション結果の関係について,どのように扱うべきか説明せよ.


制御

□ P制御とは何か.PID制御とは何か?
□ ゲインとは何か?
□ 目標値,計測値,操作量とは何か?どのような関係にあるか?
□ 1次遅れとは何か?

例題) 定常偏差について説明せよ.
例題) P制御の問題点を述べよ.
例題) 制御周期とは何か説明せよ.