プログラミング演習
II2003
年
11月
5日(第
4回)
木村巌
今日やること
減算、負の整数への準備
データ型の実装の変更
データ型の実装の隠蔽
Predicateの実装
減算、負の整数
前回は、自然数の足し算のみ実装した
減算では、負の整数が自然に現れる
負の整数をどのように表現するか?
負の整数を表すデータ型の実 装
いまでどおり、
longの配列だが
{0
桁目
, 1桁目
,…,DIM-1桁目
,符号
}最後に、符号を表す
1(正)、
-1(負)を付け足す
変数の初期化などを関数に
前回のように、手動で変数を初期化す るのは面倒だし、間違いを起こしやす い
専用の関数を用意する
多倍長整数を、
mpiと略す(
multiple p recision integer)
初期化関数、終了関数
mpi_init () mpi_clear()
mpi0.c
を参照
データの実装の隠蔽
Mpi
がどのように実装されているか
(配列を使って、最後の桁が符号)
これは意識しなくてもよいこと
各桁を取り出す、各桁を設定する、符 号を取り出す、符号を設定する
C
の
longから
mpiへの変換関数 などを用意する
mpi1.c
を参照
さらに関数の追加
mpi
の符号を変更する二つの関数
与えられた mpi を変更するか
与えられた mpi から新たに作るか
mpi
が
0であること
mpiの等号、大小
以上をふまえての加減算
加減算を、以上をふまえて実装したい 加算は本当に加算か?
1 + (-2) ?
減算は本当に減算か?
1 – (-2)?
レポート課題
Web
に掲示した
mpi2-report.cの指示に 従って、関数
mpi_iszero(), mpi_iseq(), mpi_isgt(), mpi_islt()の実装を完成させ ること。
それらの関数が正しく実装されている
ことを示す例を、
main()内に挙げるこ
と。
レポート課題提出要領
2003