pe-2. 計算
1
Pascal プログラミング入門)
URL: https://www.kkaneko.jp/pro/pascal/index.html
金子邦彦
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のプログラム実行結果(例)
3
キーボードから,デー
タ「0.4」と「0.1」を
読み込んでいる
計算を 20回繰り返して,
計算結果を表示してい
例題1のプログラムの機能
1.キーボードからのデータの読み込み
次の2つの値を読み込む
start_x, step_x
2.計算の繰り返し
sin( x ) の計算を20回繰り返す
x = start_x + step_x,
start_x + 2 ×step_x,
...
start_x + 20 ×step_x
3.画面へのデータの書き出し
計算した sin( x ) の値を書き出す 4
20回分
これ以降の内容
例題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
プログラム実行順
18
write('Please Enter teihen: ');
readln(teihen);
menseki := teihen * takasa * 0.5;
writeln('menseki =', menseki:8:3);
readln
メッセージ
'Please Enter teihen: 」を表示
浮動小数点数データを読み込み
計算
計算結果を表示
終わり
write('Please Enter takasa: ');
readln(takasa);
メッセージ
'Please Enter takasa: 」を表示
浮動小数点数データを読み込み
プログラムとデータ
19
メモリ
takasa
menseki
3つの変数
readln(teihen);
teihen
浮動小数点数データを読み込み
writeln('menseki =', menseki:8:3);
計算結果を表示
menseki := tekhen * takasa * 0.5;
計算
readln(takasa);
浮動小数点数データを読み込み
変数宣言
変数は,データを入れるためのメモリ
変数宣言とは,変数を使うために,名前を書
いて,変数の使用をコンピュータに伝えること
20
var teihen: real;
var takasa: real;
var menseki:
real;
浮動小数点数データで,変数名は「teihen
浮動小数点数データで,変数名は「takasa
浮動小数点数データで,変数名は「menseki
real」とは,浮動小数点数データ
という意味.
代入文
計算結果(teihen*takasa*0.5)を,変数 menseki
に格納する(このことを,代入という)
:=」は,代入の意味
21
menseki := teihen*takasa*0.5;
入力,出力とは
入力
データの読み込み
(読み込まれたデータは変数に格納される)
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. 23
キーボードの「Enter」キー
を待つ
入力文
入力文は,データを読み込むための文
読み込むべき変数名を指定
24
readln(teihen);
読み込むべき変数名
出力文
出力文は,データやメッセージを表示するための
メッセージ部分と,変数部分を「,」で区切る
変数に,書式を付ける
書式「:8:3」の意味: 8桁で,小数点以下3桁表
25
writeln('menseki =', menseki:8:3);
書式
表示すべき
変数名
メッセージ
いろいろな出力
26
write('Please Enter teihen: ');
メッセージ Please Enter
teihen: 」の表示 (改行無し)
writeln('sin(', x:8:3, ') =', y:8:3);
sin( 0.800) = 0.717
のように,メッセージと変数の
中身を並べて表示(改行あり)
write writeln の違い
機能は同じ
使い方も同じ
表示の後に改行するかしないかだけが違う
27
例題3.sin 関数による三角形の面積
三角形の2辺の長さ a, b とその挟角 theta読み
込んで面積 S を計算するプログラムを作る
面積を求めるために,sin関数を使う
円周率π=3.14159 とする
28
sin
2
1abS
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
出力文と計算式の組み合わせ
34
writeln('sqrt(x) =', sqrt(x):8:3);
のように,メッセージ計算結果
を並べて表示
:8:3」は,計算結果を8桁で,
小数点以下3桁表示という意味
ライブラリ関数
指数,対数,平方根
exp 指数関数(ez乗)
Ln 対数関数(底をeとする自然対数)
sqrt 平方根
Power(x,y) べき乗(xy乗)
三角関数
ArcCos 逆コサイン
ArcSin 逆サイン
ArcTan 逆タンジェント
cos コサイン
sin サイン
tan タンジェント
絶対値
abs 絶対値 35
いろいろな計算
y := sin( x );
36
y := sqrt( x );
d := sqrt( ( x * x ) + ( y * y ) );
sin x を計算し,y に格納
x を計算し,y に格納
x2+ y2を計算し,d に格納
x := sqrt( a * ( a - b ) * ( a - c ) );
a(a-b)(a-c)を計算し,x に格納
演習1.Heron の公式
三角形の3辺の長さ a, b, c を読み込んで,面積 A
を計算するプログラムを作りなさい.
Heronの公式を用いること
37
))()((csbsassA
2/)( cbas