130 '************ Output into File ************
140 CLOSE #1:OPEN "C:\WINBASIC\suutikaiseki_OUT.TXT" FOR OUTPUT AS #1
150 FOR I = 1 TO 6
160 READ X0
165 X=X0
170 GOSUB 240
180 NEXT I
190 CLOSE #1
200 GOTO 390
210 END
240 N=0
250 ER=.00001
260 FX=X0*X0-333
270 DFX=2*X0
275 X1=X0-FX/DFX
280 X1=1/2*(X0+333/X0)
290 IF ABS(X1-X0)<ER THEN 320
300 N=N+1
302 PRINT #1,;N;",";X;",";X1;"
304 PRINT"Out:N=";N;" X=";X;" X1=";X1
305 X0=X1
310 GOTO 260
320 PRINT #1,;N+1;",";X;",";X1;"
330 PRINT"Out:N=";N;" X=";X;" X1=";X1
340 RETURN
350 '*************試行値*************
360 DATA 1,5,10,50,100,500
370 CLOSE #1
380 '************ Input from File **************
390 CLOSE #2:OPEN "C:\WINBASIC\suutikaiseki_OUT.TXT" FOR INPUT AS #2
400 IF EOF(2)<>0 THEN GOTO 440
410 INPUT #2,N,X,X1
420 PRINT"Inp:N=";N;" X=";X;" X1=";X1
430 GOTO 400
440 CLOSE #2
450 '***** Close All Files and Computer Stop*****
460 CLOSE
470 END
http://www.cs.takushoku-u.ac.jp/caed/kisosemi/k7/FlowChart.html
端子→準備→ループ→処理→出力→判断→入力
確かにフローチャートの用語で端子とかありますけどあまりこだわる必要はないと思います(はじめとか処理開始とか終わりとか書くのが端子…terminalの訳なんでしょうね)。
プログラム自体は
140が開始処理(ファイルオープン)
150〜180がメインのループ部分
190、200→390移行が結果表示と終了処理
(210と370は浮いてますね…ここにはどこからもこないな)
240〜340までがサブルーチン
メイン:
端子(処理全体の「はじめ」)
↓
ファイルを準備する
↓
I=1から6までのループ (実際のフローチャートではFOR文もIFと変数の計算みたいに書き下す必要あり)
↓
DATAのX0への読み込み、Xにコピー
↓
ループの終了判定、I = I+1
↓
結果の入ったファイルをオープン
↓
結果をファイルから読み出して表示するループ
↓
ループの終了判定 ファイルの最後まで読み出したか(Y/N)
↓
ファイルクローズ
↓
(念のため全部クローズ)
↓
全体の「終わり」(端子)
サブルーチン:
サブルーチンのはじめ(端子)
↓
N=0, ER=.00001 (変数の初期化)
↓
FX=X0*X0-333 (関数f(x)の計算)
↓
DFX=2*X0 (微分値の計算)
↓
X1=X0-FX/DFX
↓
X1=1/2*(X0+333/X0)
↓
ループの終了判定 X1-X0の絶対値が誤差ERより小さいならばループをぬける
↓
N=N+1
↓
結果表示、結果をファイルに保存
↓
X0=X1
↓
ループ(260に戻る)
ループを抜けてきたところ(320)
結果表示、結果をファイルに保存
↓
RETURN(戻る) (340) (端子)
というところでしょうか。
それにしてもこれが授業だったとしたらちょっと(ほんの30年ぐらい)時代遅れですね…
コンピュータの歴史は60年ぐらいですが。
たぶん、今の世の中でフローチャートがまだ実用になっているのは特許の申請ぐらいじゃないかと思います。
GOSUB 240
と呼んでる箇所は、サブルーチン扱いになりますので、別に
分けます。
http://www016.upp.so-net.ne.jp/masuda2/text1/Flow/algo003.html
メイン側は
開始→準備(ファイルオープン)→ループ→処理(X0取得)→X=X0→SUB呼び出し(関数のフロー)→ファイルクローズ→ファイルオープン→
判断(ファイル終了か)→No N,X,X1をファイルから読み取り→画面に出力→判断に戻る
→Yes ファイルクローズ →終了
最後のCLOSE って必要なのかは わかりませんが・・・。
あと、200から GOTO 390 って 飛ばないで
そこから 390 以降を入れたほうが 少しは 見やすくなるでしょう。
サブルーチン側は
端子→N=0→ ER=.00001→FX=X0*X0-333→DFX=2*X0→X1=X0-FX/DFX→X1=1/2*(X0+333/X0)→判断 ABS(X1-X0)<ER →Yes N=N+1</p>
→ファイル出力→画面出力→X0=X1
→260に戻る
→No ファイル出力→画面出力→RETURN
サブルーチン部分についても理解できました。ご回答有難うございました。
http://www.cs.takushoku-u.ac.jp/caed/kisosemi/k7/FlowChart.html
端子→準備→ループ→処理→出力→判断→入力
確かにフローチャートの用語で端子とかありますけどあまりこだわる必要はないと思います(はじめとか処理開始とか終わりとか書くのが端子…terminalの訳なんでしょうね)。
プログラム自体は
140が開始処理(ファイルオープン)
150〜180がメインのループ部分
190、200→390移行が結果表示と終了処理
(210と370は浮いてますね…ここにはどこからもこないな)
240〜340までがサブルーチン
メイン:
端子(処理全体の「はじめ」)
↓
ファイルを準備する
↓
I=1から6までのループ (実際のフローチャートではFOR文もIFと変数の計算みたいに書き下す必要あり)
↓
DATAのX0への読み込み、Xにコピー
↓
ループの終了判定、I = I+1
↓
結果の入ったファイルをオープン
↓
結果をファイルから読み出して表示するループ
↓
ループの終了判定 ファイルの最後まで読み出したか(Y/N)
↓
ファイルクローズ
↓
(念のため全部クローズ)
↓
全体の「終わり」(端子)
サブルーチン:
サブルーチンのはじめ(端子)
↓
N=0, ER=.00001 (変数の初期化)
↓
FX=X0*X0-333 (関数f(x)の計算)
↓
DFX=2*X0 (微分値の計算)
↓
X1=X0-FX/DFX
↓
X1=1/2*(X0+333/X0)
↓
ループの終了判定 X1-X0の絶対値が誤差ERより小さいならばループをぬける
↓
N=N+1
↓
結果表示、結果をファイルに保存
↓
X0=X1
↓
ループ(260に戻る)
ループを抜けてきたところ(320)
結果表示、結果をファイルに保存
↓
RETURN(戻る) (340) (端子)
というところでしょうか。
それにしてもこれが授業だったとしたらちょっと(ほんの30年ぐらい)時代遅れですね…
コンピュータの歴史は60年ぐらいですが。
たぶん、今の世の中でフローチャートがまだ実用になっているのは特許の申請ぐらいじゃないかと思います。
そうなのですか。プログラムの各部分の働きを理解させるのが目的だったようです。ご回答有難うございました。
そうなのですか。プログラムの各部分の働きを理解させるのが目的だったようです。ご回答有難うございました。