Transcript PPT
第1回レポートの講評
インデント(字下げ)の統一
自宅学習用コンパイラの入手方法
行列計算と for 文
演習12.3の計算結果
演習12.4の計算結果
インデント(字下げ)の統一
自分なりの字下げの数、やり方を決める
「不統一」はダメ
テキスト、資料: 2文字分、サンプル:4文字分
Tab を使う? → 印刷すると狂う場合はスペースで統一
波カッコ対{}の位置
テキスト ― すべて揃える、字下げは2段階
for (i = 0; i < n; i++)
{
printf("%d", a[i]);
}
資料 ― 関数ブロックだけは揃える、字下げは1段階
for (i = 0; i < n; i++) {
printf("%d", a[i]);
}
自宅学習用コンパイラの入手法
タダで始めるC/C++プログラミング
Visual C++ 2008 Express Edition
http://www.ooyashima.net/db/prog.htm
http://www.microsoft.com/japan/msdn/vstudio/express/
Boland C++ 5.5, Turbo C++ Explorer
http://www.codegear.com/jp/downloads/free/cppbuilder
行列計算と for 文
∑の計算と for 文
N
S
k2
k 1
s = 0;
for (k = 1; k <= N; k++) {
s += k * k;
}
行列の乗算と for 文
N
ci, j
a
i,k
bk , j
k 1
(i 1,2,..., N; j 1,2,..., N )
c[i][j] = 0;
for (k = 0; k < N; k++) {
c[i][j] += a[i][k]*b[k][j];
}
演習12.3の計算結果
12 14 16
A B 18 20 22
24 26 28
10 10 10
A B 10 10 10
10 10 10
90 96 102
A B 216 231 246
342 366 390
演習12.4の計算結果
2 3 1 x 1
3 1 2 y 7
1 2 3 z 6
x 1
y 2
z 3
ポインタとは何か
配列の先頭=ポインタ定数
ポインタ
メモリ空間における目印
ポインタ変数
ポインタ'定数'
固定された目印=「ランドマーク」
配列名はポインタ定数
ポインタ'変数'
動かせる目印=「本のしおり」
使いたいときに定義しておく
int *p;
メモリ空間
pはポインタで、pの位置の中味(*p)がint型であるような物.
ポインタを1つ増すごとに sizeof(int)(= 4バイト)進む.
実体はなく、常に何か(配列や文字列)の代理人として働く.
ポインタの正体
ポインタの正体はメモリのアドレス
int a;
int *p;
→ 変数: a, アドレス: &a
→ 変数: *p, アドレス: p
→ 変数(配列の要素): a[0]
アドレス: &a[0] = a
int a[2][1];→ 変数(配列の要素): a[0][0]
アドレス: &a[0][0]=a[0]=a
&a[1][0]=a[1]
int a[1];
ポインタ配列とは
ポインタの配列
例えば、2次元配列の1列目(各行の先頭)のアドレス
だけを集めて配列にすると便利なことがある
int a[2][2];
int *p[2];
定義しただけでは実体はない
p[0] = a[0]; p[1] = a[1];
としておくと、2次元配列を関数に引き渡すときに
サイズを指定しなくて済む