プログラミング論 第二十一回 標準ライブラリ関数(数学関数) 本日の内容 数学関数を使おう – 数学関数の形式 – ラジアン変換 – 代表的な数学関数 入出力用の関数 その他の標準ライブラリ関数 – 数値変換用関数 – プログラムの強制終了 数学関数を使う 数学関数は,「math.h」というヘッダファイルの中に定 義されています。 次のような関数があります。形式は,double型の引数 を受け取りdouble型の結果を返すものがほとんどです。 – double sin(double x) sin値を計算します。引数xはラジアン角で指定します – double cos(double x) – double tan(double x) – double pow(double x, double y) xのy乗を計算します – double log10(double x) xの常用対数を計算します – double sqrt(double x) xの平方根を計算します 数学関数を使う sin関数を使ってみよう – math.hをincludeします。 – 角度はラジアンで指定します。360度が2πラ ジアンです。間違えないように指定しましょう。 – 10度ごとに値を出力してみましょう。 – ensyu60.cを確認してください。 数学関数を使う // ensyu60.c sin関数を使ってみよう #include <stdio.h> #include <math.h> math.hをincludeすることを忘れないように! int main(void) { int i; double d, pi=3.141592; 0度からスタートして,10度刻みで 360度まで計算を繰り返します。 for(i=0; i<360; i+=10){ d=sin(i*pi/180); printf("%d %f\n", i, d); } return 0; } 数学関数を使う // ensyu60.c sin関数を使ってみよう #include <stdio.h> #include <math.h> int main(void) { int i; double d, pi=3.141592; for(i=0; i<360; i+=10){ 1度はpi/180ラジアンです。 i度をラジアンに変換します。 d=sin(i*pi/180); printf("%d %f\n", i, d); } return 0; } 数学関数を使う ensyu60.cを実行し,得られた結果をメモ 帳に貼り付けて保存し,エクセルでグラフ にしてみましょう。 数学関数を使う 二次方程式の解を求めるプログラムを 作ってみましょう。 ax bx c 0 2 まず,a, b, cの値を入力します。 b b 4ac x 2a 2 *ensyu61.cを完成させてください 解の公式を使って計算 します。 課題 二次方程式は,b*b-4*a*cの値が0より大きい か,0であるか,0より小さいか,で答えが異なり ます。 – b*b-4*a*c > 0 異なる2つの実数解をもつ – b*b-4*a*c == 0 重解(1つの解)をもつ – b*b-4*a*c < 0 実数解を持たない if文を用いて,これらの場合分けを行いきちんと 答えが出力されるようなプログラムを作成しな さい。 入出力用の関数 標準入出力用(キーボードから入力,画面に出 力)の関数は,「stdio.h」に定義されています。 関数名 説明 putchar( ) 1文字出力 getchar( ) 1文字入力 puts( ) 文字列出力 gets( ) 文字列入力 printf( ) 書式付き出力 scanf( ) 書式付き入力 *以前の授業で学習済みです その他の標準ライブラリ関数 数値変換用関数 – “1234”といった「文字列」を,1234という「整数値」に変 換する関数です。 – 「stdlib.h」に定義されています。 int atoi(char []) 文字列を整数値へ変換 double atof(char[]) 文字列を実数値へ変換 プログラムの強制終了 – プログラムを途中で強制終了させる関数です。 – 「stdlib.h」に定義されています。 exit(1); その場所でプログラムを強制終了する その他の標準ライブラリ関数 プログラムの強制終了 ensyu61.cにおいて,b*b-4*a*cが負だっ た場合には「実数解はありません」と表示 して強制終了する処理を追加しなさい。 ensyu62.cを完成させなさい。
© Copyright 2024 ExpyDoc