問題1の気づき
コーディングの規約
局所変数とは?
「ローカル変数」のこと。
出典 https://wa3.i-3-i.info/word15734.html
コンピュータプログラム中のあるコードブロック(関数やメソッドなど)の内部で宣言され、その範囲内でのみ有効な変数。
出典 https://e-words.jp/w/%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E5%A4%89%E6%95%B0.html#:~:text=%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E5%A4%89%E6%95%B0%E3%81%A8%E3%81%AF%E3%80%81%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF,%E3%81%A7%E3%81%AE%E3%81%BF%E6%9C%89%E5%8A%B9%E3%81%AA%E5%A4%89%E6%95%B0%E3%80%82
気づき
用途ごとに提起することでわかりやすさにつながるために、用途が異なる場合は使うのは控える。
ループの制御変数には不動小数点変数を使用しない。
浮動小数点数は実数値を表現しているため、単純な有理数などは正確に表現できると考えられがちであるが、これは間違いである。浮動小数点数には整数と同様に精度の限界があり、全ての実数を厳密に表現できるわけではない。10進数としては小さい桁数で表現できる値が、2進数の浮動小数点数としては正確に表現できない場合がある。
加えて、浮動小数点数は大きな値を表現できるため、そのような大きな値の有効桁数全てを表現できると考えられることが多いが、これもまた間違いである。浮動小数点数は固定長の精度ビット(significand とも呼ばれる)と指数ビット(exponent)を使って広い範囲の値を表現するため、有効桁数はごく限られたものになる。
処理系によって精度の限界は異なる。コードの可搬性を維持するためには、ループカウンタに浮動小数点変数を使ってはいけない。
出典 https://www.jpcert.or.jp/sc-rules/c-flp30-c.html
サブルーチンとは?
関数やサブルーチンを用いれば良い。
コンピュータプログラムの中で特定の機能や処理をひとまとまりの集合として定義し、他の箇所から呼び出して実行できるようにしたもの。単に「ルーチン」とも呼ばれる。
出典 https://e-words.jp/w/%E3%82%B5%E3%83%96%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3.html#:~:text=%E3%82%B5%E3%83%96%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3%20%E3%80%90subroutine%E3%80%91%20%E3%82%B5%E3%83%96%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3,%E5%8D%98%E3%81%AB%E3%80%8C%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3%E3%80%8D%E3%81%A8%E3%82%82%E5%91%BC%E3%81%B0%E3%82%8C%E3%82%8B%E3%80%82
領域割付け関数とは?
領域割り付け関数とは特定のメモリ領域を取得するための関数です。メモリ領域は有限なため必ず確保できるとは限らないので領域確保ができなかった際のエラー処理を記述する必要があります。
出典 https://pczama.com/blog/?p=2349
問題2の気づき
参照渡しのためサブルーチン(幅プログラム)で変更するとメインルーチン(主プログラム)でも変更される。
参照渡しとは?
コンピュータプログラム中で関数やプロシージャなどに渡す引数として変数などを指定する際、呼び出し先でも同じ実体を参照するように渡す````方式。渡された引数に変更を加えると呼び出し元にも同じように反映```される。
プログラム中で関数などを呼び出す際に、処理に反映させるパラメータなどを呼び出し元が指定することができる。呼び出し元が呼び出し文中で指定するものを実引数、呼び出された側が実引数を受け取るために用いる変数などを仮引数という。
実引数として定数やリテラルを渡す場合には、仮引数にその値が代入されて処理に用いられるだけだが、実引数に呼び出し側が使用している変数やオブジェクトなどを指定する場合、実引数の変数名で表される実体と仮引数の変数名で表される実体との関係をどのように扱うかという問題がある。
参照渡しは仮引数と実引数が完全に同じ実体を表すように引数を受け渡す方式で、呼び出し先が仮引数に新しい値を代入するなどの変更を行うと、呼び出し元の実引数に指定された変数などにも変更が反映される。
一方、実引数から仮引数へ値のみを複製して渡し、両者が異なる実体として扱われる引き渡し方法を「値渡し」(call by value)という。値渡しか参照渡しかはプログラミング言語によって決まっているが、参照渡しが可能な言語では値渡しも選択できるようになっていることが多い。
リテラルとは?
コンピュータプログラムのソースコードなどの中に、特定のデータ型の値を直に記載したもの。また、そのように値をコードに書き入れるために定められている書式。
表記の仕方によってデータ型を識別できるよう、例えば文字列を表記する際は必ず前後を「"」で括る、といった書式が言語仕様によって定められている。各データ型のリテラルを、型名を先頭につけて「文字列リテラル」「整数リテラル」「日付リテラル」などと呼ぶ。
出典 https://e-words.jp/w/%E3%83%AA%E3%83%86%E3%83%A9%E3%83%AB.html
気づき
メインルーチンとサブルーチンの間で渡される引数の扱い方の問題か。
参照値渡しはサブルーチンで変更されたらメインルーチンでも変更される。
値渡しは、サブルーチンで変更されてもメインルーチンには変更されない。
知らないことばかりだな。
出典