Presentation is loading. Please wait.

Presentation is loading. Please wait.

コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力

Similar presentations


Presentation on theme: "コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力"— Presentation transcript:

1 コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力
コンピュータ基礎実験 第6回 コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力

2 「関数と分割コンパイル」の復習 「関数」:データ処理の「ひとまとまり」
「f(a,b)」は、データa,bに対する、決まった処理(計算や文字出力等)を表す 見通しのよさ、定型処理の繰り返し 「分割コンパイル」:巨大なプログラムを複数のファイルに分けて、個々でコンパイル 編集、変更、分担開発が容易 コンパイル時間の短縮

3 分割コンパイルの手順 「ex-5-4-1.c」をコンパイル 「ex-5-4-2.c」をコンパイル
$ cc -c ex c ⇒ ex o (オブジェクトファイル) 「ex c」をコンパイル $ cc -c ex c ⇒ ex o (オブジェクトファイル) 「ex o, ex o」をリンク $ cc ex o ex o ⇒ a.exe (実行ファイル) ex c ex o コンパイル 「cc -c」 リンク 「cc 」 a.exe ex c ex o 実行ファイル ソース   ファイル オブジェクト     ファイル

4 前回課題2:分割コンパイル: ex5-5-1.c, ex-5-5-2.c,ex5-5-3.c
(a,b)=(1,2)、(3,4)、(5,6)…(19,20)の10個の実数の組に対し、積a*b、商a/bを計算するプログラムを、「main()」(ex5-5-1.c)と「basiccalc()」(ex5-5-2.c)の2つのソースファイルに分けて、分割コンパイルせよ。 「ex5-5-2.c」をコピーして「ex5-5-3.c」というソースファイルを作り、これを改造して和、差を計算するプログラムを作れ

5 前回課題2回答例1/2: ex5-5-1.c, ex5-5-2.c ex5-5-1.c: ex5-5-2.c:
「printf()」は、このファイル内で使う ex5-5-1.c: ex5-5-2.c: void basiccalc(float a, float b); int main(void) { float a,b; a=1; b=2; basiccalc(a,b); a=3; b=4; basiccalc(a,b); a=5; b=6; basiccalc(a,b); a=17; b=18; basiccalc(a,b); a=19; b=20; basiccalc(a,b); return 0; } #include <stdio.h> void basiccalc(float a, float b) { float c,d; c=a*b; b=a/b; printf(”a=%f b=%f の時、”,a,b); printf(”積%f 商%f\n”,c,d); } このファイル内では定義されていない「basiccalc」 という関数を使うことを宣言

6 前回課題2回答例2/2: ex5-5-3.c ex5-5-3.c: #include <stdio.h>
void basiccalc(float a, float b) { float c,d; c=a+b; b=a-b; printf(”a=%f b=%f の時、”,a,b); printf(”和%f 差%f\n”,c,d); }

7 前回分割コンパイルの手順 「ex-5-5-1.c」をコンパイル 「ex-5-5-2.c」をコンパイル 「ex-5-5-3.c」をコンパイル
$ cc -c ex c ⇒ ex o 「ex c」をコンパイル $ cc -c ex c ⇒ ex o 「ex c」をコンパイル $ cc -c ex c ⇒ ex o 組み合わせを変えてリンク 「積」と「商」: $ cc ex o ex o 「和」と「差」: $ cc ex o ex o

8 キーボードからの入力 コンピューターは、「キーボード」や「マウス」、「タブレット」などからデータを入力することができます
例えば、「四則計算プログラム」でもキーボードから好きな数を入力して計算できると便利ですね C言語では、「データの入力」も、「関数」(入出力関数)を利用して実現可能です

9 キーボード入力関数「scanf()」 変数型宣言 int a; のあとに scanf(“%d”, &a);
とすると,キーボードから入力した整数の値が aに入力される.

10 2つ以上の数の場合も同様に int a, b, c, …, ; printf(“2つの整数? ”);
scanf(“%d %d”, &a, &b); ・ 実数型なら float x; printf(“x= ”); scanf(“%f”, &x); ☜ 整数型の   変数の場合  文字型変数   ☟  の場合 文字型なら char name[10]; printf(“%s”); scanf(“%s”, name); ☜ 実数型の   変数の場合 & は不要

11 アドレス修飾演算子「&」(発展) 「scanf(”%d”,&a)」では、変数「a」に「&」という記号が付いています。これは何でしょう?
「a」に記録するには、「a」が何番目の箱かがわからなければなりません(今「a」に何が記録されているかはどうでもよい) 「&a」は、「a」の番号(アドレス)の値になります アドレス(箱番号) 1 2 3 4 5 325 2441 -523 39 812 -3665 ‥‥ 「a」と名付けた a ⇒ 39 &a ⇒ 3

12 課題6-1: ex1-4で用いたa,bをキーボードから入力するプログラムに 書き替えてみよう.
#include <stdio.h> main() { int a,b; a=11,b=3; printf("a=%d",a); printf(", b=%d\n",b); printf(" a+b=%d\n",a+b); printf(" a-b=%d\n",a-b); printf(" a*b=%d\n",a*b); printf(" a/b=%d",a/b); printf(" あまり %d\n",a%b); } printf("2つの整数?"); scanf("%d %d",&a, &b); のように書き替える このファイル名は    ex6-1.c として   下さい.

13 ■ 以下の課題に対するプログラムを作り,実行例を3つ以上示せ.
課題 6-2: 半径を与え,周囲の長さと面積を求めるプログラム ( ex6-2.c )を作成せよ.ただし,円周率π= とする. 課題 6-3: 三角形の底辺の長さaと高さhを与え,面積を求める   プログラム( ex6-3.c )を作成せよ. 課題 6-4: 質量m1の質点の置かれている座標をx1,質量m2の 質点の置かれている座標をx2とする.x1, m1, x2, m2を与え,    重心の座標xGを求めるプログラム( ex6-4.c )を作成せよ.   ただし,例としてx1= 0, m1=10, x2 = 1, m2=1の場合を含めて   実行例を3つ以上示せ.

14 ■ 発展課題 課題 6-5: 三角形の3辺の長さa, b, cを与え,面積を求めるプロ
グラム( ex6-5.c )を示せ.ただし,三角形の面積を与える 公式(Heronの公式)は既知とする.   Heronの公式   ここで,平方根の計算は sqrt(…) とすればよい. [ヒント] プログラムの最初に #include <math.h> を加えること 発展課題 6-6: 課題 6-5において,平方根の計算を正確に 計算するプログラムを示せ.( ex6-6.c ) [ヒント]変数をdouble a,b,c,…  scanf(“%lf,…,&a, …) 、printf(“%1.15f…”,a)として下さい.

15 算術関数 三角関数や指数関数など、数学で使う関数はワープロやウエブブラウザなどの、よく使われる普通のソフトではめったに使われません
算術関数を使いたい時には、その旨宣言する必要があります 「prinf()」を使いたいときには「#include <stdio.h>」 「sin()」を使いたいときには「#include <math.h>」 リンクのとき、算術関数を含むオブジェクトファイル(既に用意されている)をリンクする必要があります

16 算術関数のリンク 算術関数の例 算術関数のオブジェクトファイルをリンクする場合には「-lm」のオプションをつける
sin(), cos(), asin(), exp(), sqrt(), pow() ⇒ WEB検索 算術関数のオブジェクトファイルをリンクする場合には「-lm」のオプションをつける $ cc -lm hoge.c (単一ソース) 「hoge.c」はsin()」を含む単一ソース  $ cc -lm hoge1.o hoge2.o (分割コンパイル) 分割コンパイルの場合の最後のリンク時 既に準備されている「オブジェクトファイル」を「ライブラリ」と呼びます

17 実習結果のレポート 3つのソースファイル「ex6-2.c」、「ex6-3.c」、「ex6-4.c」を添付ファイルにしてメールを送ってください。 宛先: 件名:コンピューター基礎実験6 本文:感想および一言


Download ppt "コンピュータープログラミング(C言語)(3) 1.関数と分割コンパイル (復習) 2.キーボード入力"

Similar presentations


Ads by Google