>100 Views
February 03, 22
スライド概要
(Pascal プログラミング入門)
URL: https://www.kkaneko.jp/cc/pascal/index.html
金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko
pe-2. 計算 (Pascal プログラミング入門) URL: https://www.kkaneko.jp/cc/pascal/index.html 金子邦彦 1
program sum; var start_x, step_x, x, y:real; var i:integer; begin write('Please Enter start_x:'); readln(start_x); write('Please Enter step_x:'); readln(step_x); for i:=1 to 20 do begin x := start_x + ( i * step_x ); y := sin(x); writeln('sin(', x:8:3, ') =', y:8:3); end; readln end. キーボードからの データの読み込みを 行っている部分 計算の繰り返しを 行っている部分 画面へのデータの 書き出しを行ってい る部分 2
例題1のプログラム実行結果(例) キーボードから,デー タ「0.4」と「0.1」を 読み込んでいる 計算を 20回繰り返して, 計算結果を表示してい る 3
例題1のプログラムの機能 1.キーボードからのデータの読み込み 次の2つの値を読み込む start_x, step_x 2.計算の繰り返し sin( x ) の計算を20回繰り返す x = start_x + step_x, start_x + 2 ×step_x, 20回分 ... start_x + 20 × step_x 3.画面へのデータの書き出し 計算した sin( x ) の値を書き出す 4
これ以降の内容 例題1.自由落下距離 ・ 四則演算 例題2.三角形の面積 ・ 代入文 ・ 浮動小数点数の変数,入力文,出力文, write 文と writeln 文の違い ・ 「プログラムの終わりのreadln文」の機能 例題3. sin 関数による三角形の面積 例題4.ライブラリ関数 ・ 種々のライブラリ関数 5
目標 • 自分の思い通りの計算ができるようになる • 四則演算 • ライブラリ関数(三角関数,対数・指数関数など) • 見やすいプログラムを書くために,字下げを行う 6
オンライン開発環境 Online GDB • プログラミングを行えるオンラインのサービス https://www.onlinegdb.com • ウェブブラウザを使う • たくさんの言語を扱うことができる Pascal, Python3, Java, C/C++, C#, JavaScript, R, アセンブリ言語,SQL など • オンラインなので、「秘密にしたいプログラム」 を扱うには十分な注意が必要 7
Online GDB で Pascal を動かす手順 ① ウェブブラウザを起動する ② 次の URL を開く https://www.onlinegdb.com 8
③ 「Language」のところで,「Pascal」を選ぶ 9
実行ボタン エディタ画面 プログラムを 書き換えること ができる 10
例題1.自由落下距離 • 自由落下距離を求めるプログラムを作る • 地上で物を落とし始めた後の自由落下距離を求める • 重力加速度 g は 9.8 とする • 自由落下距離を求めるために,プログラム中に,計算 式 y := ( 9.8 / 2.0 ) * x * x を書く 11
program sum; var start_x, step_x, x, y:real; var i:integer; begin write('Please Enter start_x:'); キーボードからの データの読み込みを 行っている部分 readln(start_x); write('Please Enter step_x:'); readln(step_x); for i:=1 to 20 do 計算の繰り返しを 行っている部分 begin x := start_x + ( i * step_x ); 自由落下運動の式 y := ( 9.8 / 2.0 ) * x * x; writeln('x=', x:8:3, ', y=', y:8:3); end; readln end. 画面へのデータの 書き出しを行ってい る部分 12
実行結果例 13
四則演算のための演算子 + 和 - 差 * 積 / 商 14
例題2.三角形の面積 • 底辺と高さを読み込んで,面積を計算するプログ ラムを作る 例) 底辺が 2.5,高さが 5 のとき, 面積: 6.25 • 底辺,高さ,面積を扱うために,浮動小数点数の 変数を3つ使う 15
program sum; var teihen: real; var takasa: real; var menseki: real; begin キーボードからの データの読み込みを 行っている部分 write('Please Enter teihen: '); readln(teihen); write('Please Enter takasa: '); readln(takasa); 三角形の面積の式 menseki := teihen*takasa*0.5; writeln('menseki =', menseki:8:3); readln end. 画面へのデータの 書き出しを行ってい る部分 16
実行結果画面(例) 17
プログラム実行順 write('Please Enter teihen: '); readln(teihen); メッセージ 「 'Please Enter teihen: 」を表示 浮動小数点数データを読み込み write('Please Enter takasa: '); メッセージ 「 'Please Enter takasa: 」を表示 readln(takasa); 浮動小数点数データを読み込み menseki := teihen * takasa * 0.5; 計算 writeln('menseki =', menseki:8:3); 計算結果を表示 readln 終わり 18
プログラムとデータ メモリ ① teihen readln(teihen); 浮動小数点数データを読み込み ③ ② takasa menseki := tekhen * takasa * 0.5; 計算 menseki readln(takasa); 浮動小数点数データを読み込み ④ writeln('menseki =', menseki:8:3); 計算結果を表示 3つの変数 19
変数宣言 • 変数は,データを入れるためのメモリ • 変数宣言とは,変数を使うために,名前と型を書 いて,変数の使用をコンピュータに伝えること var teihen: real; 浮動小数点数データで,変数名は「teihen」 var takasa: real; 浮動小数点数データで,変数名は「takasa」 var menseki: real; 浮動小数点数データで,変数名は「menseki」 「real」とは,浮動小数点数データ という意味. 20
代入文 • 計算結果(teihen*takasa*0.5)を,変数 menseki に格納する(このことを,代入という) 「:=」は,代入の意味 menseki := teihen*takasa*0.5; 21
入力,出力とは • 入力 • データの読み込み • (読み込まれたデータは変数に格納される) • readln 文を使う • 出力 • • • • • メッセージの表示 データの表示 (変数に格納されたデータが表示される) 式の計算結果の表示(例題4参照) write文あるいは writeln文を使う 22
readln program sum; var teihen: real; var takasa: real; var menseki: real; begin write('Please Enter teihen: '); readln(teihen); write('Please Enter takasa: '); readln(takasa); menseki := teihen*takasa*0.5; writeln('menseki =', menseki:8:3); readln end. キーボードの「Enter」キー を待つ 23
入力文 • 入力文は,データを読み込むための文 • 読み込むべき変数名を指定 readln(teihen); 読み込むべき変数名 24
出力文 • 出力文は,データやメッセージを表示するための 文 • メッセージ部分と,変数部分を「,」で区切る • 変数に,書式を付ける 書式「:8:3」の意味: 示 8桁で,小数点以下3桁表 writeln('menseki =', menseki:8:3); メッセージ 表示すべき 変数名 書式 25
いろいろな出力 write('Please Enter teihen: '); メッセージ 「Please Enter teihen: 」の表示 (改行無し) writeln('sin(', x:8:3, ') =', y:8:3); 「sin( 0.800) = 0.717」 のように,メッセージと変数の 中身を並べて表示(改行あり) 26
write と writeln の違い • 機能は同じ • 使い方も同じ • 表示の後に改行するかしないかだけが違う 27
例題3.sin 関数による三角形の面積 • 三角形の2辺の長さ a, b とその挟角 thetaを読み 込んで,面積 S を計算するプログラムを作る • 面積を求めるために,sin関数を使う • 円周率π=3.14159 とする 1 S = ab sin 2 28
program sum; var a: real; キーボードからの データの読み込みを 行っている部分 var b: real; var theta: real; var S: real; begin write('Please Enter a: '); readln(a); write('Please Enter b: '); readln(b); write('Please Enter theta: '); 三角形の面積の式 readln(theta); S := 0.5 * a * b * sin( theta * 3.14159 / 180.0 ); writeln('S =', S:8:3); readln end. 画面へのデータの 書き出しを行ってい る部分 29
実行結果例 30
例題4.ライブラリ関数 • 浮動小数点数データ x (但し 0 < x < 1) を読み込 んで,次の計算を行うプログラムを作る • 指数,対数,平方根 • 三角関数 • 絶対値 31
program sum; uses Math; var x: real; begin write('Please Enter x: '); readln(x); writeln('exp(x) =', exp(x):8:3); writeln('Ln(x) =', Ln(x):8:3); writeln('sqrt(x) =', sqrt(x):8:3); writeln('ArcCos(x) =', ArcCos(x):8:3); writeln('ArcSin(x) =', ArcSin(x):8:3); writeln('ArcTan(x) =', ArcTan(x):8:3); writeln('cos(x) =', cos(x):8:3); writeln('sin(x) =', sin(x):8:3); writeln('tan(x) =', tan(x):8:3); writeln('abs(x) =', abs(x):8:3); readln end. 32
実行結果例 33
出力文と計算式の組み合わせ writeln('sqrt(x) =', sqrt(x):8:3); のように,メッセージと計算結果 を並べて表示 → 「:8:3」は,計算結果を8桁で, 小数点以下3桁表示という意味 34
ライブラリ関数 • 指数,対数,平方根 • • • • exp 指数関数(eのz乗) Ln 対数関数(底をeとする自然対数) sqrt 平方根 Power(x,y) べき乗(xのy乗) • 三角関数 • • • • • • ArcCos 逆コサイン ArcSin 逆サイン ArcTan 逆タンジェント cos コサイン sin サイン tan タンジェント • 絶対値 • abs 絶対値 35
いろいろな計算 y := sin( x ); sin x を計算し,y に格納 y := sqrt( x ); √ x を計算し,y に格納 d := sqrt( ( x * x ) + ( y * y ) ); √ x2 + y2 を計算し,d に格納 x := sqrt( a * ( a - b ) * ( a - c ) ); √ a(a-b)(a-c)を計算し,x に格納 36
演習1.Heron の公式 • 三角形の3辺の長さ a, b, c を読み込んで,面積 A を計算するプログラムを作りなさい. • Heronの公式を用いること A= s(s −a)(s −b)(s −c) s =(a +b+c)/ 2 37