National Institute for Environmental Studies

本日の目標

2024年度前期
情報処理演習第3回

2024/04/24
平山 修久（減災連携研究センター）

1. 前回の確認（プログラミング，コンパイル，TACT課題提出）

2. 整数と実数との演算規則を理解する
3. データを入力するプログラムを作成できる

名古屋大学減災連携研究センター

Disaster Mitigation Research Center, NAGOYA UNIVERSITY
12

Step 1．プログラムを書く

Step 2．プログラムを動くようにする

エディタ（テキスト文章を作成，編集するアプリ
ケーション，Windowsではメモ帳，Macではテキ
ストエディット，UNIX：viなど）を使って，キーコンパイル
ソースコードを機械語に変換（コンパイル）する。
Fortranであれば，Fortranコンパイラボードでプログラムを打ち込み，ファイルに保存。

プログラムに間違いがなければコンパイルに成功。
実行ファイル（a.exe，a.out）が作られる。

ファイルの内容（ソースコード）は人は理解できるが，CPUは理解できない。

書いたプログラムの文法に誤りがあればコンパイルに失敗し，コンパイルはエラーを表示。その場合には，ソースコードを修正し，再度コンパイル。

34

Step.3

プログラムを実行する

Tips

1.ターミナルからiCloud Driveに移動する

コンパイルで作成された実行ファイルを動かす。
OSのコマンドライン（Windows：コマンドプロ
ンプト，Mac：ターミナル）で，実行ファイルのファイル名を入力。

UsersフォルダのLibrary/Mobile Documents
cd Library/Mobile Documents
2.機構アカウントの場合フォルダの場所はフォルダの情報，プロパティで確認
右クリックで，パスをコピー（macOSでは，option+右クリック）するとよい。

56

プログラムの構成と書式

データ型，定数，変数

Fortranプログラムの一般的な構成
PROGRAM kadai̲̲̲Fortranには5種類の基本データ型
INTEGER：整数
REAL：実数宣言部

0，137，-2516，17745

1.234，-0.01536，+56473.，

337.456，3.37456E2

実行部

COMPLEX：複素数

副プログラム部

CHARACTER：文字列，二重引用符またはアポスト
ロフィで囲まなければならず，両端に同じ記号。

END PROGRAM kadai̲̲̲7(a, b),(1.0, 1.0),(-6.0, 7.2)

LOGICAL：論理変数，.TRUE.，.FALSE.
8識別子

変数

プログラム，定数，変数など，プログラム中の要素を識別するために使う名前。

Fortran変数の型は，その変数に代入される値の型を決定する。ゆえに，型宣言文によって，Fortranプログラムの各変数の型を宣言する。

英文字で始まり，最大30文字までの英文字，数字，下線
Mass
Rate
Velocity
Speed_of_Light
Fortran90では大文字と小文字を区別しない．

一般的に，Fortranのキーワードは大文字，プログラ
マが定義する識別子は小文字（最初も文字は大文字）

INTEGER :: リスト
REAL :: リスト

INTEGER :: NumValues, Sum
REAL :: Mass, Velocity

CHARACTER(n) :: リスト

CHARACTER(15) :: FirstName, LastName
CHARACTER :: InitialCHARACTER(15) :: Name, L_Name*20, Initial*1

910

IMPLICIT NONE文プログラムではつけること。

変数の初期化

Fortranでは，型宣言文で明示的に型を宣言しない変数は，暗黙の型宣言に従って型を割り当てられる。名前がI, J, K, L, M, Nおよび対応する小文字で始まる未宣言の識別子は整数型（INTEGER）となり，それ以外はすべて実数型（REAL）
この暗黙の型宣言を無効にする文IMPLICIT NONE

Fortranではすべての変数が初期状態では未定義
REAL :: W = 1.0, X = 2.5, Y = -7.73

名前付定数：PARAMETER属性
型指定子, PARAMETER :: リスト
INTEGER, PARAMETER :: Limit = 50
REAL, PARAMETER :: Pi = 3.141593, TwoPi = 2.0* Pi
CHARACTER(*), PARAMETER :: Units = “cm”

1112Tips

演算と関数
数値演算

整数，実数の演算規則について
Integer, Integer

Integer

Integer, Real+（加算）, -（減算）, *（乗算）, /（除算）, **（累乗）RealReal, Real

B**2 - 4 * A * C型混合式

Real

前回の課題では、
2.0 + 8 / 5→

2.0+

2 + 8.0 / 5→

2 + 1.61なのでなので3.00000

3.59999x**2

整数の量と実数の量と結びつけると，整数の量が実数の量に変換され，演算結果は実数型となる。
1.0 / 4
3.0 + 8 / 5と3 + 8.0 /5との違い

1314

演算の優先規則

数値関数
ABS(x) xの絶対値

最初に，すべての累乗が実行される。累乗の累乗の累乗…の場合には，右から左に実行。
次に，すべての乗算と除算が，左から右へ記述されている順に実行される。

最後に，加算と減算が，左から右へ記述されている順に実行される。

xラジアンのコサイン（余弦）COS(x)

EXP(x) 指数関数
INT(x)

xの整数部分FLOOR(x)MAX(x1, x2, …, xn)x1,,,xnの最大値

MIN(x1, x2, …, xn)x1,,,xnの最小値

REAL(x) xを実数型に変換
SIN(x)

xラジアンのサイン（正弦）SQRT(x)2+4**2/2 = 2+16/2 = 2+8 = 1015

xをyで割った余り，x - INT(x/y)*yxの最も近い整数

NINT(x)10/5*2 = 2*2 = 4xの小数部分xの自然対数

LOG(x)

MOD(x, y)

2**3**2 = 2**9 = 512x以下の最大の整数

FRACTION(x)xの平方根

TAN(x) xラジアンのタンジェント（正接）
16

文字演算
連結演算//

変数=式‘centi’ // ‘meters’ ⇒ “centimeters”
SquareUnit = “square ”
SquareUnit // “centi”// “meters”“square centimeters”

部分列にアクセス：文字型変数の値や文字定数から部分列を抽出。部分列の開始文字と終了文字の位置をコロン（:）で区切り，括弧で囲んで，変数や定数の後に置く。
Units = “centimeters”
Units(4:7)“time”

18

入出力

今日（2024.04.24）の課題

PRINT *, “At time”, Time, “seconds”
PRINT *READ *, 入力並び

READ *, InitialHeight, InitialVelocity, Time
100.0, 90.0, 4.5 （カンマで区切り一行）
100.0

REAL :: XCoordinate, YCoordinate, Alpha, Beta
INTEGER :: Number, Term, N
XCoordinate = 5.23
YCoordinate = SQRT(25.0)
Number = 17
Term = Number/3+2
XCoordinate = 2.0*XCoordinate
N=9Alpha = 3
Beta = (N+3)/5I = 3.14159
Kappa = X/2.0
Mu = 1.0/X

17

PRINT *, 出力並び100.0 90.0 4.5

代入文（スペースで区切り一行）（リターンで一行でひとつづつ）

90.0
4.5

1. 摂氏温度を華氏温度に変換するプログラムを作成する。
提出物：プログラムファイル：kadai03̲1.f90
2. 解の公式を使って，次の二次方程式
Ax 2 + Bx + C = 0 の解を求め，表示する。ただし，A，B，Cは入力文を用いる。
x 2 − 2x − 3 = 0*IDONEでは stdin enter inputにあらかじめ入力する
19

提出物：実行イメージ：kadai03̲2.png
20

課題3̲1

摂氏を華氏に変換する

課題3̲2 二次方程式の解を求める。

摂氏温度を華氏温度に変換するプログラムを作成する。摂氏温度を入力し，それに対応する華氏温度を表示する。

解の公式を使って解く

2. 摂氏温度を入力する。READ文

アルゴリズム1. 変数を定義する。例えば，Celsius, Fahrenheit
3. 華氏温度を計算する。
摂氏と華氏の変換式

  +   +  = - ± -   

1. A（1）, B（-2）, C（-3）を入力する。

Fahrenheit =4. 華氏温度を表示する。PRINT文
21

9
Celsius + 32
5

2. 2つの根を計算して表示する

22