Informatics 2015
全文
(2) この授業で学ぶ内容 コンピュータに関する基礎的なこと アルゴリズムとデータ構造 プログラミングの初歩(C言語).
(3) 計算機の歴史. 新旧のソロバン. バベッジの階差機関 (19C前半). 手回し計算機 (19C後半∼20C後半). スパコン (1960年代∼). ENIAC (1946). 大型汎用計算機 (1950年代∼1980年代). 電卓 (1964∼) パソコン (1970年代∼).
(4) 現在のコンピュータ.
(5) コンピュータの基本構成. 外界. Input Output Device. Central Processing Unit. I/O. CPU. 入出力を 行う. 基本的な演算 を実行する. 情報. 外界. コンピュータ 情報. Memory プログラムやデータ を格納する. コンピュータは情報を取得し、 それを与えられた手続きに従っ て処理して、その結果である情 報を出力する.
(6) OS (Operating System) コンピュータ・システム全体を管理するソフトウェア コンピュータを使用する上での環境のようなもの パソコンのOSとしてポピュラーなものは Windowsシリーズ Mac OS X Linux などの UNIX系OS この授業では Linux を使う.
(7) コンピュータの操作 コマンドラインを入力する方法 ターミナル画面に表示されたプロンプトの後にいろいろな 命令をキーボードから打ち込む. GUI を使用する方法. Graphical User Interface. ほとんどの基本的操作をマウスなどのデバイスによって 行うことができるユーザインターフェースのこと. GUI を使えるときは GUI で、 さもなければコマンドラインで. 適当に併用.
(8) ファイルシステム:木構造 ホームディレクトリ. u012345. 隠しファイル. .bashrc. Desktop. Src a.out. Informatics. prog.c. Mihon hello.c 注:ディレクトリは フォルダとも呼ばれる. Exec. a.out. Src. プログラムやデータを格納する最小単位を ファイル と呼ぶ ファイルは ディレクトリ の作る木構造によって整理されている あなたは常に木構造の中のどこかのディレクトリにいることになって いて、作業をするためにデイレクトリの間を動き回ることができる ログイン時にいるディレクトリをホームディレクトリという.
(9) ファイルシステム(全体) /. 各自のホームディレクトリはもっと 大きな木構造に組み込まれている. fs home1 ryokoba bin. u012345. . は現ディレクトリ .. はその上のディレクトリ ../.. はそのまた上のディレクトリ. Desktop. Mihon Exec. home2. ~ は自分のホームディレクトリ. Src. Informatics. 注:./a.out は現ディレクトリ の下にある a.out という意味. ファイルやディレクトリの名前の指定の仕方 /fs/home1/ryokoba/Mihon/Src のような表記を絶対パス名という ../../bin のような表記を相対パス名という.
(10) デイレクトリ関連コマンド ls : 現ディレクトリに属するファイルやディレクトリの一覧を見る $ ls -F : ディレクトリとファイルの区別がわかる 注:ls の後にディレクトリ名を指定すると、そのディレクトリの 下にあるファイルやディレクトリの一覧が見える. cd : ディレクトリを移動する $ cd ~/Informatics/Mihon とか $ cd ../.. と入力 移動先のディレクトリは絶対パス名でも相対パス名でもよい 単に $ cd とすると ~(ホームディレクトリ)に移動. mkdir : 新しいディレクトリを作る. $ mkdir New とすると現ディレクトリに New という名前の ディレクトリができる.
(11) ファイル関連コマンド cp : ファイルをコピーする $ cp source_file target_file target_file という名前を持つ source_file のコピーを作る $ cp source_file target_directory target_directory の下に source_file の同名のコピーを作る. mv : ファイルを移動したり、ファイル名を変更したりする $ mv source_file target_file source_file の名前を target_file に変更する $ mv source_file target_directory target_directory の下に source_file を移動する. rm : ファイルを消去する この rm コマンドは危険なのでリターンキーを押す前にはひと呼吸 入れて確認してから実行.
(12) GUI:マウスの基本操作 左クリック:左側のボタンを1回押す(単に クリック ともいう) フォルダやファイルを選択するのに使う(複数も可) 右クリック:右側のボタンを1回押す 作業のメニューが出る ダブルクリック:左側のボタンを2回素早く押す フォルダを開くのに使う cd + ls ファイルの場合はファイルの種類によって動作が違う ドラッグ:左側のボタンを押して、ファイルやフォルダを選択 しながらマウスを移動させる ドロップ:ドラッグした状態からボタンをはなす ドラッグ & ドロップ でファイルやフォルダを移動できる フォルダやファイルを消去したい時は、それをゴミ箱に 移動する(これは rm よりは安全).
(13) 授業のホームページ. http://www.math.sci.hiroshima-u.ac.jp/ ryo/Lectures/Informatics2015/.
(14) ゴミ箱の出し方 システムツール > 設定 > Tweak Tool > デスクトップ > ゴミ箱.
(15) プログラミングの第1歩 人間. 自然言語 日本語, 英語, スワヒリ語 .... etc.. 高水準言語 C言語, Java, Fortran .... etc.. コンピュータ (CPU). 機械語 CPU の種類ごとに違う 人間には解読困難.
(16) コンパイルと実行 C言語のソースプログラム. hello.c. テキストエディタを用いて作成. $ cc hello.c 機械語によるプログラム. a.out. 機械語への翻訳 を指示する命令. $ ./a.out プロセスの実行. a.out という機械語プロ グラムの実行命令. ./a.out の初めの ./ は「現ディレクトリの」という意味.
(17) Cプログラミング事始め #include <stdio.h> int main(void) {. ..................... }. この形が基本形 ..................... の部分に プログラムの内容が 書かれる. C言語においては一連の処理の集まりを関数と呼ぶ 関数は printf( ) や main( ) のように ( ) を付けて書く main 関数はプログラムの開始点となる.
(18) ソースプログラム hello.c #include <stdio.h> int main(void) {. printf(“Hello!!\n”); } printf( ) はいろいろな文字列を 端末画面に出力するための関数 字下げ(インデント)を必ず行う インデントには Tab Key を使う.
(19) 情報の単位 1bit 通常 8 bit を 1 byte とする. 1 0 0 1 0 1 1 0 2進数8桁 B KB MB GB TB. 28 = 256 個の整数を表現できる byte kilo byte mega byte giga byte tera byte. 1B=8bit 3 1KB=10 B 6 1MB=10 B 1GB=10 9 B 1TB=1012 B. 210 = 1024. 1K.
(20) データの型 C 言語で扱うデータにはいくつかの型がある 整数型 int, unsigned int, long, unsigned long, short, unsigned short, 実数型 float, double 文字型 char, unsigned char. それぞれのデータの型ごとに どれだけの長さのビット列を 使用するかは決まっている. 注:2 は整数型データであり 2. や 2.0 は実数型データである.
(21) 変数とその型 変数とは指定された型の値を格納する箱のようなもの. int a; と宣言すると整数型の値のみ 格納できる a というラベルの付いた 箱が用意される. int a;. 整数型変数. double x; 倍精度実数型変数. int. doub le. a x. size_of_variables.c.
(22) 変数への代入 2 int. a. a = 2;. int. 2. a. 箱に中身を入れるには 代入という操作をしな ければならない. a という変数に2という値を代入する. x = y -1;. 変数 y に格納されている値から1引いた値 を変数 x に代入する. c = a + b;. 変数 a に格納されている値と変数 b に格納 されている値の和を変数 c に代入する.
(23) 変数への代入 C言語における イコール記号「=」の意味 = の左側にある変数に対して, 右側の式に よって表現される値を代入する 1 = a; という文はありえない x+y =1; という文はありえない. 定数に代入はできない 式に代入はできない. 注:変数に値が代入されると、元々その変数に入って いた値は上書きされて消えてしまう.
(24) 変数への代入 Ex.. a = a+1; という文は許されるか? 許されるとすれば何をしているのか?. a に格納されている値を1だけ増加させる C 言語における「=」は等号ではない! = は代入という動作を命ずる演算子である C言語において左辺と右辺が等しいという意味の 等号は「 == 」を用いる.
(25) 変数の初期化 プログラムの中で使用する変数は、プログ ラムの先頭で型を宣言しなければならない 例: int a; 宣言しただけでは変数を用意しただけで、 その変数に何が入っているかは不確定 int a = 0; のように書けば、変数の型を宣言 すると同時に、変数に値を代入できる initialize.c.
(26) 代入による変数値の遷移 substitution.c. a. b. 100 10. 10 10. a = b;. 10 11. -5 -5. a = a + 1;. 値の交換 失敗版 swap.c a, b�は変数名 p, q は値. int a = 100, b = 10; b = a -15;. a. b. p. q. q q. q q. a = b; b = a;.
(27) 代入による変数値の遷移 値の交換1. a. b. tmp. swap1.c a, b, tmp は変数名. p p q. q q q. − p p. p, q は値. q. p. p. 値の交換 2 swap2.c. a p p p q q. b q q q q p. tmp1 tmp2 − − p − p q p q p q. tmp = a; a = b; b = tmp;. tmp1 = a; tmp2 = b; a = tmp2; b = tmp1;.
(28) 数値の出力と書式指定 output_values.c #include <stdio.h> int main(void) { � int a�= 2; � double x = 1.0; � � printf("The value of a is %d.\n", a); � printf("The value of x is %f.\n", x); }. %d, %f�などは出力の書式指定を行っている.
(29) キーボードからの数値の入力 #include <stdio.h> int main(void) { int a; double x;. printf("Input a: "); scanf("%d", &a); 変数入力の定番型. & を忘れないこと! printf("Input a: "); scanf("%d", &a); printf("The value of a is %d\n\n", a); printf("Input x: "); scanf("%lf", &x); printf("The value of x is %f\n\n", x);. input_values.c. }. double 変数の読み込みは %f でなく %lf で.
(30) 数の演算と型 + ー * / . 足し算 引き算 掛け算 割り算. 右. 左. int. int int. double double. double double double. 注:3/5 は 0.6 とはならない! % 割り算の余り. 左右とも int. = 代入. 左右のデータ型が異なる場合 右の値は左の変数のデータの 型に変換される type1.c, type2.c.
(31) 練習問題 1. 次の式の値を求めよ(型に注意せよ) 3*2/5+1 3 * (2 / 5) + 1 3 * 2 / 5 + 1.0 3 * 2 / 5.0 + 1. values1.c. 2 1 2.0 2.2. 2. 次のプログラムを実行した後、変数 a, x にはどのよう な値が入っているか? values2.c int a = 1; double x; a = 4.3 / (a + 1); x = a + 2 / (a + 2); a には 2 が x には 2.0 が入っている.
(32) アルゴリズムとは 何かの問題を解決するための手順. 交差点に さしかかる. 例 信号のある交差点をわたる手順 信号を見る. 狭くは、コンピュータを使ってある特定 の目的を達成するための処理手順のこと コンピュータにアルゴリズムを実行させ るために、特定の言語で書かれた文書を プログラムという. 信号は青. no. yes 交差点を わたる. 終了. 注:アルゴリズムはそれが記述 されている言語とは独立なもの. フローチャート.
(33) コンピュータを働かせるには 問題の定式化 アルゴリズム設計. 人間. アルゴリズム プログラミング 高水準言語による プログラム 翻訳 機械語による プログラム. コンピュータ CPU が解釈. プロセスの実行.
(34) アルゴリズムの基本形 (i) 連続 次々と順に単純なステップを実行するようなアル ゴリズム構成を連続とよぶ 各ステップは1つずつ書き並べてある 順に実行され省略されることはない. 処理1 処理2. 連続だけでは状況に応じて実行 内容を変えることはできない. 処理3.
(35) アルゴリズムの基本形 (ii) 選択 条件が成立するか否かにより実行の流れに変化が 起きるようなアルゴリズム構成を選択と呼ぶ if then 型 条件. if then else 型. Yes. 条件. Yes. No. No. 処理1. 処理2. 処理1.
(36) C言語での選択の記述 if then 型 if (条件式) { 実行文; }. 必ず! tab を使って字下げ (indent) を行う. if then else 型. 条件式 とは?. if (条件式) { 実行文1; } else { 実行文2; }. { } で挟まれるブロックの中に実行文は複数行 あってもよい(一連の処理を表現).
(37) 比較演算子と条件式 変数や数の値を比較して条件式を作る 演算子. 対応する数学記号. 使用法. == < > <= >= !=. =. a == b a<b a>b a <= b a >= b a != b. < > ≤ ≥. !=. 例 3 > 1; -1 >= 0; 2 != 5; a - 1 < b; x != y + 1; a == 10; a * a <= 10; etc..
(38) 条件式の値 条件式が成立する場合 「条件式は真 (true)である」 条件式は 1という値を持つ 条件式が成立しない場合「条件式は偽 (false)である」 条件式は 0という値を持つ 例. 条件式 3>2 は真なので 1 という値を持つ 条件式 1==2 は偽なので 0 という値を持つ. 変数 a に 1 という値が入っているとき 条件式 a >2 は偽なので 0 という値を持つ 条件式 a !=2 は真なので 1 という値を持つ comparison.c.
(39) 条件式の値 条件式は整数値をもつので、整数変数に 代入することも可能 見やすいように条件式 は ( ) でくくっておく. 例. int a; a = (10 < 100); a には 1 という値が代入される int x; x = (-2.0 >= 0.0); x には 0 という値が代入される.
(40) 論理演算子 論理演算子を用いることによって基本的な条件式 から新しい条件式を作ることができる. && ¦¦ !. 意味. 使用法. and(かつ) or(または) not(でない). a && b. a && b の表 b a 0 1. a ¦¦ b の表 b a 0 1. 0 0 0 1 0 1. 0 0 1 1 1 1. a ¦¦ b !a !a の表 a !a. 0 1 1 0. logical_operator.c.
(41) if 文と条件式 if (条件式) { 処理1 } if (条件式) { 処理1 } else { 処理2 }. 条件式が真であれば処理1 を行う. 条件式が真であれば処理1 を行い、条件式が偽であれ ば処理2を行う.
(42) if 文と条件式 例 #include <stdio.h> int main(void) { int a; printf("Input a: "); scanf("%d", &a);. 条件式. if (a%2 == 0) { printf("The integer a is an even number.\n"); } else { printf("The integer a is an odd number.\n"); } }. even_odd.c.
(43) 練習問題 1.. 入力された2つの整数 a, b の最大値 (maximum value) を求めるプログラムを作成せよ max_of_two. 2. 入力された整数 a が正の整数 x と y の公倍数 (common multiple) であるかどうかを判定するプログラムを作成せよ.
(44) 入れ子になった if 文 例 if (a > 0) { if (a <= 100) { printf( 0 < a <= 100\n ); } else { printf( a > 100\n ); } } else { printf( a <= 0\n ); }. if_in_if.c. if 文の { } で囲まれた 処理の中にまた if 文 があってもよい. このような場合には 特に字下げ (indent) が 大事!.
(45) 練習問題 西暦 a 年がうるう年 (intercalary year) かどうかを 判定するプログラムを作成せよ intercalary_year. 4で割り切れる年はうるう年、ただし 100 で割り切れ る年はうるう年にしない。しかし、400 で割り切れる 年はやはりうるう年にする。 地球の公転周期 = 365.24219日 うるう年は400年に97回 1年あたり 97.0/400=0.2425 日補正している.
(46) うるう年の特徴付け 自然数全体. 4の倍数 100 の倍数 400 の倍数. =. +. (a%4 == 0) && (a%100 != 0). a%400 == 0. ((a%4 == 0) && (a%100 != 0)) ¦¦ (a%400 == 0).
(47) 入れ子の if 文でやると 自然数全体 4の倍数 100 の倍数 400 の倍数 flag という変数を導入して、 入れ子の if 文で素直に記述 flag == 1 うるう年である flag == 0 うるう年でない. int flag = 0; if (a%4 == 0) { flag = 1; if (a%100 == 0) { flag = 0; if (a%400 == 0) { flag = 1; } } }.
(48) アルゴリズムの基本形 (iii) 繰返し ある実行内容が反復されるようなアルゴリズム構成 を繰返しという 反復を行う回数があらかじめ 決まっている場合. for 文. 反復を行う回数があらかじめ 決まっていない場合. while 文.
(49) for 文による繰返し 実行内容を N 回反復する カウンタ int i;. カウンタの初期値を設定 繰返しを続けるための条件. for ( i = 1; i <= N; i++ ) { 実行内容 }. カウンタの増え方を指定 i++ は i = i + 1 と同じこと すなわち i は 1 ずつ増える. 最初に i を 1 とおく。 i は1回実行内容を行うごとに 1ずつ増えていき、i <= N という条件が満たされる限 りこれを繰返し、i > N になったら終了.
(50) for 文による繰返し 例. print_counter.c int i; for ( i = 1; i <= N; i++ ) { printf( i = %d\n , i); }. i=1. ループ No. i <= N Yes. 練習 上の例で i = 1 を i = 0 に 変更したり i <= N を i < N で置き換えて実行してみよ. i の値を書く i を 1 増やす.
(51) for 文による繰返し 例 x N を求める power = 1; for ( i = 1; i <= N; i++ ) { power = power * x; }. for ( i = 0; i < N; i++ ) で置き換えても同じ. 例 1+2+ ... +N を求める sum = 0; for ( i = 1; i <= N; i++ ) { sum = sum + i; }. for ( i = 0; i < N; i++ ) で置き換えたら結果は変 わる.
(52) for 文による繰返し 練習問題 1 から n までの和を計算し和の公式の結果と 比較するプログラム sum_up.c を作成せよ sum_up.
(53) 2重ループ 入れ子になった for 文を使って繰返しの中で繰返しを 実行することができる 例. print_double_counter.c int i, j;. Tab 一発で indent. for (i = 1; i <= M; i++) { for (j = 1; j <= N; j++) { printf(" (%d, %d)", i, j); } printf("\n"); } これを消すとどうなる?.
(54) 2重ループ 練習問題 (1) 九九の表を作ってみよ。 kuku. (2)* インドの九九(?)の表を作ってみよ。 indian_kuku. (3)* チェス盤 (chess board) を作ってみよ。 chess_board.
(55) while 文による繰返し while (条件式) { 実行内容 }. No. 条件式が真である限り 実行内容を繰返す. ループ 条件 Yes. 処理. 初めに条件が成り立たなければ 一度もループを回らない. 無限ループに陥らないように注意!. 有限回ループを回るう ちに条件が不成立にな るという保証が必要.
(56) while 文による繰返し 例 与えられた数以下の平方数 (square number) を square.c すべて書き出す #include <stdio.h> int main(void) { int n, i = 1;. i の初期化. printf("Input a positive integer : "); scanf("%d", &n);. 繰返しを続ける ための条件. }. while (i * i <= n) { printf("%d x %d = %d\n", i, i, i * i); i++; } i を 1 増やす. 練習 最後の i++; を書き 忘れるとどうなるか やってみよ コメントアウトの仕方 /* */ ではさむ /* i++; */ 強制終了の仕方 Control-c で止める.
(57) while 文による繰返し 練習問題 (1) 与えられた正整数 n に対し 1+2+ ... + i > n を満たす最小の i を求めるプログラムを作れ sum_over. (2)* 与えられた正整数 n が素数であるかどうかを 判定するプログラムを作れ judge_prime.
(58) i を増やすタイミング nを入力. nを入力. sum=0, i = 0. sum=0, i = 1. No. sum<=n Yes. No. sum<=n Yes. i を1増やす. sum に i を足す. sum に i を足す. i を1増やす. i を書く. i -1 を書く. ループを抜けたときの i の値は1違う!.
(59) ユークリッドの互除法 2つの正整数の最大公約数を求めるアルゴリズム 126 98 98 28 28 14 14 0. 20 14 14 6 6 2 2 0. 練習問題 以下のペアの最大公約数を求めよ (1) 528, 252 (2) 462, 819 (3) 55, 34 12. 21. 1.
(60) ユークリッドの互除法 2つの正整数 x, y の最大公約数 (greatest common divisor) を. gcd(x, y) と書くことにする(ただし y は 0 でもよい). gcd(x, y) = gcd(y, x%y) gcd(x, 0) = x gcd(20, 14) = gcd(14, 6) = gcd(6, 2) = gcd(2, 0) = 2 必ず有限回で求まる 注:素因数分解を用いるやり方もあるが,大きな数の 素因数分解は難しく時間がかかる. 8319, 6298.
(61) ユークリッドの互除法 gcd(x, y) = gcd(y, x%y) x = py + q y, q の公約数 q = x py x, y の公約数 x, y. の証明. p:x を y で割った商 q :x を y で割った余り (0. q < y). x の約数. x, y の公約数. q の約数. y, q の公約数. の公約数全体の集合 =. y, q の公約数全体の集合. それぞれの集合の最大値は一致. gcd(x, y) = gcd(y, q).
(62) ユークリッドの互除法 x. y. 整数 x, y を2辺とする長方形の 部屋を、できるだけ大きな整数を 1辺とする正方形のタイルで敷き 詰める問題 最大公約数を求める問題 ラッキー! 最大公約数は. y. もとの長方形と余りの 長方形のタイリング問 題は同値.
(63) ユークリッドの互除法 gcd(20, 14) = gcd(14, 6) = gcd(6, 2) = gcd(2, 0) =2. 2×2. 20 14. のタイル で敷き詰められる.. 練習問題 ユークリッドの互除法を用いて入力された2つの 正整数の最大公約数を求めるプログラムを作れ euclid.
(64) #include <stdio.h> int main(void) { int x, y, z; printf("Input two positive integers: "); scanf("%d %d", &x, &y); printf(" gcd(%d, %d) = ", x, y); while (y != 0) { z = x % y; x = y; y = z; } printf("%d\n\n", x); }. ユークリッドの互除法の 本体部分.
(65) 配列 (array) 配列とは複数の同じ型の変数を1つにまとめたもの 例えば int a[4]; と宣言すると4つの整数変数 a[0], a[1], a[2], a[3] が用意される int a; だと一つだけ int. a[0]. a[1]. a[2]. a[3]. int. a. C言語では配列の添字は0から始まる 注:宣言 int a[N]; で用意されるのは a[0], a[1], .... , a[N-1]. a[N] は用意されない!.
(66) 配列への値の代入 配列の各要素は普通の変数と同じなので変数と同様に 代入できる set_array.c 例. int x[5]; x[0] x[1] x[2] x[3] x[4]. = = = = =. 2; 5; 1; 8; 9; . 練習問題 for 文を使って配列 x に値を代入し, しかる後に表示 してみよ。次に配列の長さを 10 に変更せよ。 set_array2.
(67) define マクロ #include <stdio.h> int main(void) {. int x[5], i;. for (i = 0; i < 5; i++) {. x[i] = i * i; }. printf("Data of the array x\n");. }. for (i = 0; i < 5; i++) {. printf("x[%d] = %d\n", i, x[i]); }. サイズの変更 は1箇所変え ればオーケー. #include <stdio.h> #define N 5 int main(void) {. int x[N], i;. N という 文字列を 5 で置き 換える. for (i = 0; i < N; i++) {. x[i] = i * i; }. printf("Data of the array x\n");. }. for (i = 0; i < N; i++) {. printf("x[%d] = %d\n", i, x[i]); }. 大文字は define マクロ用に使い、変数名には使わない.
(68) 乱数の利用 #define N 10 int seed, i;. random_number.c. printf("Input the seed of random number sequence : "); scanf("%d", &seed); srand(seed); for (i = 0; i < N; i++) { printf("%d\n", rand()); }. 乱数列の種をセットする. 乱数を生成する. rand() は呼ばれるたびに「でたらめな」整数値を返してくる srand(seed) の seed の値に応じて異なる乱数列が生成される 幾通りもの乱数列を再現性のある形で得ることができる.
(69) 配列データの最大値 Champion vs. Challenger 方式 挑戦者の列 王座 maximum. x[0], x[1], x[2], ...... , x[N-1]. (1) 初代王座には無条件で x[0] が座る (2) 一人目の挑戦者 x[1] がチャンピオンと勝負して挑戦者が 勝てばチャンピオンは交代する(引き分けは防衛) (3) 以下同様に次々と挑戦者が現れ、最後の挑戦者 x[N-1] が 戦ったあとで王座に座っているのが配列データの最大値 練習問題 Mihon/Src/max_of_array.c に後半部分を書き足し、配列デー タの最大値を求めるプログラムを作れ max_of_array.
(70) 配列の利用 例 Fibonacci 数列 定義 . x0 = x1 = 1 xn+1 = xn + xn−1 (n = 1, 2, · · ·). 練習問題 (1) 配列を使って Fibonacci 数列の最初の 20 項を fibonacci 計算せよ (2) Fibonacci 数列の隣接2項の比を求めてみよ fibonacci_ratio 注:整数変数 a に対し (double)a と書くと、それは a の値を 倍精度実数に変換したものになる cast 演算子. 1.618034 って何だ!?.
(71) 配列の利用 練習問題 (1) 配列データに 0 から 100 の値をランダムに入れ、その 平均 (mean value)・分散 (variance)・標準偏差 (standard deviation) を求めるプログラムを作成せよ statistics. 平均 N 1 ! m= xi N i=1. √. 分散. N 1 ! V = (xi − m)2 N i=1. 標準偏差. σ=. √. V. x は sqrt(x). コンパイルは cc statistics.c ではなく cc statistics.c -lm. (2) エラトステネスの篩(ふるい)法を用いて 1000 より 小さい素数の表を作成せよ table_of_primes.
(72) 絵を描こう GLSC (Graphic Library for Scientific Computing) 簡易なグラフィックライブラリ. 使うための準備 $ cd $ gedit .bashrc. ホームディレクトリに移動 エディタで.bashrcを編集(作成). alias cglsc= ryokoba/bin/cglsc この内容を追加して保存.(最後に改行すること). マニュアルのページ http://home.hiroshima-u.ac.jp/kentaro/ SUURI15/glscm.html.
(73) 画面を用意する #include <stdio.h> #include <glsc.h>. glsc を使う 時は必要. int main(void) { ! double x_window = 100.0, y_window = 100.0; ! double waiting_time = 2.0; ! g_init("Graph", x_window, y_window); ! g_device(G_DISP);. 画面の用意. ! g_sleep(waiting_time);. 画面の維持. ! g_term(); }. 画面終了. ex0.c.
(74) 標準座標系 (0, 0). x_std. 標準座標の単位は mm. y_std. 描画スクリーン (x_window, y_window).
(75) 仮想座標系の定義 g_def_scale(scale_number, x_left, x_right, y_bottom, y_top, ! x_left_std, y_top_std, x_width_std, y_width_std);. x_right. x_left y_top_std y_top y_width_std. x_left_std x_width_std. y_bottom.
(76) 仮想座標系を用いた描画 g_init("Graph", x_window, y_window); g_device(G_DISP);. 仮想座標系 0番の定義. g_def_scale(0, x_left, x_right, y_bottom, y_top, x_left_std, y_top_std, x_width_std, y_width_std); g_cls(); g_sel_scale(0);. 仮想座標系 0番の選択. g_box(0.0, 1.0, 0.0, 1.0, G_YES, G_NO); g_move(0.5, g_plot(1.0, g_plot(0.0, g_plot(0.5,. 0.0); 1.0); 0.5); 0.0);. g_sleep(G_STOP); g_term();. 長方形の描画 線分の描画.
(77)
関連したドキュメント
Effects of Ginkgo biloba extract in improving episodic memory of patients with mild cognitive impairment: A randomized controlled trial... Is there a risk of bleeding associated
このように資本主義経済における競争の作用を二つに分けたうえで, 『資本
SVF Migration Tool の動作を制御するための設定を設定ファイルに記述します。Windows 環境 の場合は「SVF Migration Tool の動作設定 (p. 20)」を、UNIX/Linux
が前スライドの (i)-(iii) を満たすとする.このとき,以下の3つの公理を 満たす整数を に対する degree ( 次数 ) といい, と書く..
There is numerical evidence that if conformally K¨ ahler quasi-Einstein metrics with J -invariant Ricci tensor exist on CP 2 ]2 CP 2 , the K¨ ahler class of the metric is not the
①アプリをアンインストール スタート > 設定 > アプリ > アプリと機能 > Docan Browser5. ②関連ファイル削除(1)
子どもが、例えば、あるものを作りたい、という願いを形成し実現しようとする。子どもは、そ
ダウンロードしたファイルを 解凍して自動作成ツール (StartPro2018.exe) を起動します。.