• ベストアンサー

プログラムについて

プログラムを勉強していてわからないことが3つあります。 1ソースプログラムを編集し、次にコンパイルしてオブジェクト プログラムを作成し、さらに関数を引用した場合などには他の オブジェクトプログラムと結合し、最終的に実行形式の プログラムを得て実行します。 と教科書に書いてあるのですが、関数を引用した場合などには他のオブジェクトプログラムと結合するとはどういうことですか? 2メモリを多く費やせば処理は速くなり、処理速度を犠牲にすればメモリを節約できるとありますがなぜこうなるのですか? メモリを節約するとどんなメリットがありますか? 3プログラムの高速化では 必要な演算回数を少なくする。無駄な繰り返しを省く。 速い演算を多くし、遅い演算を少なくする。 とあるのですが具体的にどういうことですか? プログラム初心者です。 わかりやすく教えていただければ幸いです。 どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • don_go
  • ベストアンサー率31% (336/1059)
回答No.2

1)... 略...関数を引用した場合などには他のオブジェクトプログラム と結合するとはどういうことですか? C言語を例にすると、printf(),strcpy()等の標準関数は、コンパイラ のメーカー等が予め作成した物をライブラリまたはオブジェクトとして 提供します。 実行形式のプログラムは自分で作成したプログラムとこれらのライブラリ を結合して作成されます。 2) ファイルやデータベースのデータを必要になる度に1件ずつ読むのと 最初に1000件分のデータをメモリ上に読み込んで使用するのとでは メモリ上に読み込んだ方が、ディスクからの読み込み処理が必要ない 分処理速度が速くなります。 ただし、メモリ上に読み込むデータの件数が大きすぎると、初期起動 が遅くなったり、メモリ容量の少ないPCでは動作できなくなったり します。 3)必要な演算回数を少なくする。無駄な繰り返しを省く 不良) for(j = 0; j < 100; j++){ /* 計算1 */ } for(j = 0; j < 100; j++){ /* 計算2 */ } for(j = 0; j < 100; j++){ /* 計算3 */ } 良) for(j = 0; j < 100; j++){ /* 計算1 */ /* 計算2 */ /* 計算3 */ } 速い演算を多くし、遅い演算を少なくする。 #掛算・割算は足し算・引き算より遅い。 不良) for(j = 0; j < 100; j++){  for(k = 0; k < 50; k++) {   z1 = j * xx + k * z1;   z2 = j * xx + k * z2;   z3 = j * xx + k * z3;  } } 良) for(j = 0; j < 100; j++){  zz = j * xx;  for(k = 0; k < 50; k++) {   z1 = zz + k * z1;   z2 = zz + k * z2;   z3 = zz + k * z3;  } }

k1637nb
質問者

お礼

とてもわかりやすいご回答ありがとうございます。 プログラムについてよく理解できました。

その他の回答 (2)

  • hilow1
  • ベストアンサー率53% (7/13)
回答No.3

1) C言語を例にします。 たとえば以下の2つのプログラムで考えてみます。 add関数は、単純に足し算をする関数です。 // main.cというプログラム #include <stdio.h> int main(void) { int answer; answer = add(1, 2); printf("1 + 2 = %d\n", answer); return 0; } // add.cというプログラム int add(int a, int b) { return (a+b); } この2つのプログラムはそれぞれ別のファイルです。main.cのmain関数 で、add.cのadd関数を呼び出しています。main.cだけ実行しようとしても 動きません。もちろんadd.cにはmain関数がないのでadd.cだけ実行しよう としても動きません。main関数内でadd.cのadd関数を使用しているので、 main.cを正常に実行するためにはコンパイル時にmain.cとadd.cを結合 する必要があります。具体的には、add.cのオブジェクトファイルを作成 (gccの場合、add.o)し、それとmain.cのオブジェクトファイルとを結合し、実行ファイルを作成します。 コマンド: gcc -c add.c // オブジェクトファイルadd.oを作る gcc -c main.c // オブジェクトファイルmain.oを作る gcc -o main.exe main.o add.o // オブジェクトファイルを結合し、実行ファイルmain.exeを作る これでmain.exeができあがり、プログラムが実行できます。 こんな感じですかね。わかりにくかったらすみません。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.1

分かる所だけ回答します。 >速い演算を多くし、遅い演算を少なくする。 結果が同じでもプログラムによって計算速度は、異なります。 たとえば、 A*0.5 と A/2 は、結果は同じですが計算速度は異なるはずです。 かけ算を使うのか、割り算を使うのか、また整数を使うのか、小数を使うのかによって計算速度は変わってきます。 計算が早くなるように考えてプログラムを作るということです。

関連するQ&A