...

情報活用演習06 第11回

by user

on
Category: Documents
14

views

Report

Comments

Transcript

情報活用演習06 第11回
JohoEnshuu06_11.ppt
情報活用演習06 第11回
~~プログラミング入門(2)~~
担当:水野 恒史 (代講:深沢秦司)
居室:理学部 物理科学科 高エネルギー宇宙研究室 (理学部 B210号室)
電子メール:[email protected]
ホームページ:http://home.hiroshima-u.ac.jp/tsune/
1
JohoEnshuu06_11.ppt
前回の復習:プログラミング言語とは
•ユーザーの指示に応じてデータの処理を行うものをプログラム、プ
ログラムを記述する人工言語を、プログラミング言語という。
•プログラミング言語には、大別して2種類ある。
•インタープリタ:記述された処理を1行1行実行するもの。Perlや
awkなど
•コンパイラ:記述されたプログラムを、一度計算機が直接実行可
能な形式に翻訳して実行するもの。FortranやC、C++など。
•本演習では、もっとも代表的なプログラミング言語であるC言語を題
材に、プログラムの記述、コンパイル、実行を体験するとともに、簡
単なプログラムの作成に取り組んでもらう。最終的にはgnuplotと組
み合わせ、物理の問題をグラフ化できるようになるのが目的。
•手始めに、文字の表示および、整数、実数の計算(簡易電卓)プロ
グラムを作成した。
2
JohoEnshuu06_11.ppt
関数の計算:コードの記述
•単純な計算の仕上げに、数学や物理で用いる関数の使い方を学ぶ。C言語では、これ
らは「数学ライブラリ」として準備されており、「include」命令で数学ライブラリを使う旨を
宣言しなければならない。三角関数、指数関数などのあらわし方はgnuplotとほぼ同じ
である。下の例をまね、様々な関数を計算するプログラムを書いてみよう。
数学ライブラリを使うためのおまじない
関数は実数値をとるので、変数も実数を用
いる。ここではa-fまでの6つの変数を使う。
C言語では、円周率は「M_PI」なる文字で
表す。(他のシステムでは異なることがあり
ます)
三角関数はsin(*),cos(*),tan(*)、平方根
はsqrt(*)、指数関数はexp(*)、べき乗は
pow(*,*)、対数関数はlog(*)および
log10(*)となる。なお、pow(a,b)とは「aの
b乗」という意味。
3
JohoEnshuu06_11.ppt
関数の計算:プログラムの実行
中身を確認し、コンパイルおよび実
行を行うコマンド。「-lm」が、数学ライ
ブラリを使う際は必要
sin( 0 )
sin( π / 4 )
sin( π / 2 )
9
25
100
cos( 0 )
52
cos( π / 4 )
cos( π / 2 )
10 2
tan( 0 )
e3
tan( π / 4 )
log 10 1000
tan( π / 2 )
log 10 1000000
正しくプログラムがかけていれば、左のよう
な出力がでるはずである。うまくいかなかっ
た人は、エラーメッセージに注意してソース
コードを見直してみてください。
練習:様々な関数を計算させてみよう。試し
に、以下の関数を計算させ、結果が数学的
に正しいことを確かめよ。
e0
4
JohoEnshuu06_11.ppt
繰り返し処理:コードの記述
つづいて繰り返し処理の仕方を学ぶ。同じ作業を繰り返し行う、といったことは計算機が得
意中の得意とするところであり、さまざまな数値計算に広く応用できる。本演習では、その基
礎を身につけて欲しい。まずはやってみよう。以下のようにコードを記述してください。(すぐ
後で説明するので、中身はまだ理解できなくても構いません)
中身はあとで説明するので、今は間違い
なく記述してください。終わったら、「保存」
ボタンで保存し、左上の「ファイル」メニュー
から「終了」を選ぶ
5
JohoEnshuu06_11.ppt
繰り返し処理:プログラムの実行
中身を確認し、コン
パイルおよび実行を
行う
こちらが出力結果。つまり今のプログラムは、
1から10までの整数を順に表示するプログ
ラムであった。では、ソースコードの中身は
どうなっていただろうか?
6
JohoEnshuu06_11.ppt
繰り返し処理:解説
C言語では、繰り返し処理は「for文」と呼ばれるものを使う。書式は、「for(文A){文
B}」であり、「文A」で繰り返しの仕方を指定する。通常は、整数をひとつずつ大きく
していって、ある値に達するまで繰り返す。ここで指定された数だけ、文Bが繰り返
される。具体的には、以下の例をもう一度みてみましょう。
•まず、繰り返し処理で使う整数変数「i」
を宣言する。
•「iを1から」「10まで」「ひとつずつ増や
して」かっこの中身(「{」と「}」で囲まれた
部分)を繰り返す、という意味。
•おなじみの「printf」文で、iの値を順次
表示させている。
7
JohoEnshuu06_11.ppt
繰り返し処理:練習
•ここまでできた人は、繰り返しの仕方の指定をいろいろ変えて練
習してみて下さい。以下は、例題です。
•0から10までの整数を順に表示させる。
•-5から5までの整数を順に表示させる。
•0から20までの偶数を順に表示させる。
•1から19までの奇数を順に表示させる。
•逆順:10から0までの整数を、逆順に表示させるプログラムを書く。
(出力は順番に、10, 9, 8, …, 1,. 0となる)
8
JohoEnshuu06_11.ppt
こんなこともできます
•繰り返し処理ができると、有名な「1から**までの数の和」とかも簡単に出せま
す。簡単な例を示します。
ポイントは、「sum」なる変数を
用意し、そこに1,2,3,…の数を
順次加えて行く事。
9
JohoEnshuu06_11.ppt
実行例
•練習として、「1から100までの和」「1から1000までの和」を計算さ
せて、答えが正しいことを確かめましょう。(「1からnまでの和」は
n(n+1)/2になる)
10
JohoEnshuu06_11.ppt
C言語+gnuplot(1):コードの記述
•既に学んだように、gnuplotは関数を描くとともに、データ点をグラフにすることができる。
そこでプログラミングの実用編として、典型的な数学、物理関数をデータ点として計算し、そ
れをグラフにしてみよう。こうすることで結果を加工することが可能となり、また表示の細か
さなども自由に指定できる。また関数であらわせない(あらわしにくい)現象をグラフにする
場合は、そもそもプログラムと組み合わせるしかない。
•まずは、やってみよう。以下は、三角関数の例。
xは0から 2 π
までを200点に分け、yにはsin(x)を
代入し、(x,y)の組を表示させる。
11
JohoEnshuu06_11.ppt
C言語+gnuplot(2):実行と結果の保存
•以下が、プログラムの実行例。
ポイントは、「./program8 >
program8.dat」の行。この「>」なる記号は
「リダイレクト」と呼ばれ、値を画面に出力さ
せるかわりにファイルに保存することができ
る。右が今作ったファイルの中身。(x,
sin(x))の値の組が保存されているのがわか
る。とても便利なので、是非覚えてください。
12
JohoEnshuu06_11.ppt
C言語+gnuplot(3):グラフの作成
•あとはgnuplotでグラフを書けばよい。起動
は「gnuplot」と打つ。その中で「set grid」す
ることでグリッドを表示させ、「plot」コマンド
で実際にグラフ(今回の場合はデータ点の
組)がプロットされる。gnuplotの使い方を忘
れた人は、第7-9回の資料を参照してくださ
い。
13
JohoEnshuu06_11.ppt
練習問題
•三角関数
y = sin x
y = cos x
y = tan x
•円および楕円
(ヒント:媒介変数表示で
x=cos(t), y=sin(t)とし、t
を0から 2π まで変化させる
と分かりやすい)
x
x
2
x
2
2
2
2
+
+
+
y
y
y
2
その他、放物線、双曲線、指数関数ほか、好きな関数で練習してみてください。
では、よいお年を。
=
2
2
2
2
1
=
1
=
1
14
Fly UP