計算機数学演習 A 2014.4.18. Risa/Asir のプログラミング (変数, 繰り返し, 条件分岐) この講義の資料は, http://www.sm.u-tokai.ac.jp/~nakayama/ より入手することができる. 1. ファイルに書いたプログラムの読み込み エディタ (メモ帳, wordpad など) で次のようなファイルを作成する. test.rr 1+1; end$ 上のファイルは Asir で 1 + 1 を実行するプログラムである. 最後の行の end$ はファイルに Asir のプログラムを 書いた際, プログラムの終わりを表す命令である. このファイルを読み込んでプログラムを実行するには, Asir の メニューバーから, ファイル → 開くを選択し, 先ほど作成したファイルを選べばよい. すると, 1+1; という命令が 実行され画面上に 2 と出力されるはずである. 上のように, GUI (Graphical User Interface) を使ってファイルを読み込むことができるが, コマンド load でも ファイルを読み込むことができる. 以下はその例である. ただし, 作成したファイル test.rr はディレクトリ C:\Users\naka\Desktop にあるとしておく. (ファイルの存在するディレクトリがどこになるかは, ファイルを右 クリックし, プロパティ → 全般 → 場所, より確認できる.) コマンドを用いたファイルの読み込み (Asir 上) [113] load("C:/Users/naka/Desktop/test.rr"); 2 [115] Windows ではディレクトリの区切りは円記号であるが, Asir の場合は / でディレクトリを区切る (Unix 風) こと になっていることに注意. 2. 変数 Asir では変数名は, アルファベットの大文字から始まる. 例えば, A, B, I, J, K, Variable, Weight などである. 変 数は宣言しなくてもいきなり使える. また変数に型はなく, さまざまなデータを代入することができる. 変数の中 身を出力するには, 変数名; もしくは print(変数名); で変数の中身を出力できる. [115] A=1+1; 2 [116] A; 2 [117] print(A); 2 0 [118] A=x^3+1; x^3+1 [119] A; x^3+1 [121] A^2; x^6+2*x^3+1 [123] B=y+1; y+1 [124] A+B; x^3+y+2 Asir での変数の取り扱い <-- 変数を定義しなくてもいきなり使うことができる <-- 変数の中身の表示 <-- print を用いた変数の中身の表示 <-- 先ほど変数 A には 2 を代入したが, 多項式を新たに代入 (型はない) 3. 繰り返し (for 文, while 文) Asir には, 繰り返しのための文として, for, while 文が用意されている. 書き方は, C 言語と同様である. 次は, 1 から 10 を表示するプログラムである. 1 fortest.rr <-- for (初期条件; 継続条件; 各繰り返しごとに実行される命令) {命令} for (K = 1; K <= 10; K++) { print(K); } end$ whiletest.rr K = 1; while (K <= 10) { print(K); K++; } end$ <-- while (継続条件) {命令} C 言語と同様に, インクリメント命令 ++, デクリメント命令 -- も使える. (すなわち, K++ は K = K + 1 の省略形) 参考 (C 言語での 1 から 10 を表示するプログラム) fortest.c #include <stdio.h> main() { int k; for (k = 0; k <= 10; k++) { printf("%d\n", k); } } <-- ヘッダーファイル stdio.h の読み込み <-- プログラムの実行は main 関数から始まる <-- 変数定義が必要 <-- format 付き文字列表示関数 printf 4. 条件分岐 (if 文) Asir には, 条件分岐の文として, if, if-else 文が用意されている. やはり書き方は, C 言語と同様である. 次は, 変数 A が整数であると仮定して, 偶数かどうかを判定するプログラムである. ifelsetest.rr if (A % 2 == 0) { print("even"); } else { print("not even"); } end$ <-- A % 2 は A を 2 で割った余り <-- 文字列 "even" を表示 <-- 文字列 "not even" を表示 ifelsetest2.rr if (A % 3 == 0) { print("A = 0 mod } else if (A % 3 == 1) print("A = 1 mod } else { print("A = 2 mod } end$ <-- A % 3 は A を 3 で割った余り 3"); <-- 文字列 "A = 0 mod 3" を表示 { 3"); <-- 文字列 "A = 1 mod 3" を表示 3"); <-- 文字列 "A = 2 mod 3" を表示 条件に用いる関係式も C 言語と表記は同じである. 記号 == != ! && || 意味 等しい 等しくない 否定 (not) かつ または 例 A == 1 A != 1 !(A == 1) (A >= 1) && (A <= 3) (A < 1) || (A > 3) 2 A が 1 に等しい A が 1 に等しくない A が 1 に等しくない A が 1 以上 かつ 3 以下 A が 1 未満または 3 より大きい
© Copyright 2024 ExpyDoc