Quick BASICの練習(5)~二重ループ、流れ図(フローチャート)
またまた1ヶ月半の空白期間が経過してしまったが、代表的な初心者向け
プログラミングソフト・BASICの1つのヴァージョン、Quick BASIC(クイッ
ク・ベーシック)の練習を続けよう。雨の夜にはちょうどいい♪
これまで書いて来た6本の記事は以下の通り。ほぼ完全に知識ゼロ、ソフト
も無い状態の初心者状態からスタートしてる。必要なら、過去記事に戻って
読むことをお勧めする。
初めてのプログラミング♪
初めてのプログラミング(2)~計算その他、簡単なバッチファイル
・・・・・・・・・・・・・・・・・・・・
Quick BASICのダウンロード、ダイレクトモード(Immediate)入力と計算
Quick BASICの練習(2)~プログラム・モードでの入力&実行
Quick BASICの練習(3)~REM 文、GOTO 文、IF 文、各種トラブル・・
Quick BASICの練習(4)~IF文、FOR文、NEXT文とループ(繰返し)
使用テキストは今まで同様、少し前の高校数学の教科書、数研出版『数学A』
(1995年版)。教科書のままだと上手く行かないこともあるし、自分自身の勉
強にもならないので、マイナーチェンジや試行錯誤を繰り返すことになる。この
教科書を一通り終わらせるまで、あと記事3本くらいだろう。。
☆ ☆ ☆
まずは前回の復習も兼ねて、教科書p.181の問5から始めよう。n個の異な
るものからr個取り出して並べる順列(Permutation)の総数、nPrの計算。
ただし、nとrは後から数値を代入。また、「FOR ~ TO ~ STEP -1」
の構文を用いてループ(繰返し)を作る。n×(n-1)×・・・×(n-r+1)の掛
け算を、左から、つまり大きい順に実行させるわけだ。
まずnとrを入
力させる形を作
る。次に、順列
nPrの初期値
は1と設定して、
nからn-r+1
まで順に掛け合
わせて行く。
実行して、指示に応じてnとrの値を5、3と代入す
ると、確かに正しい答が表示(PRINT)された。
5 P 3=5×4×3=60だ。
☆ ☆ ☆
続いて、新しい話の「二重ループ」を使う問題。FOR文とNEXT文で作るループ
(繰返し)を二重に使うことになる。普通の数学なら、大きく場合分けした中で、
さらに小さく場合分けするようなものだ。「(1)その1,その2,・・・、(2)その1,
その2,・・・」といった感じ。
適当なアレンジを思い付かないので、ここでは教科書p.180の例20、掛け算
の九九(くく)の表を作る問題を、ほぼそのまま使ってみよう。ただし、REM文
(注釈)を少し簡単にしたし、元の変数がなぜかKとJになってたからaとbへと
変更した。
1の段(横の列)
は、a=1に対し
て、b=1,2,
・・・,9を順に
掛けて、Xとし
て出力する。
次にa=2,3,
・・・,9と変化
させる。まず、aで大きなループを作り、それぞれの中でbの小さなループを作る
から、入れ子状の二重ループとなる。
FORとNEXTで挟む部分の先頭は1マス空けて分かりやすくするから、中盤で
bを変化させる箇所では先頭が2マス空いてる。50行目は、1ケタの値を表示
する時、直前に半角スペー
スを入れて、表の縦の列を
揃えるためのもの。80行
目は、1の段、2の段など
の改行を入れるためのものだ。
実行すると、確かにキレイな表になる。
☆ ☆ ☆
すぐ下の問6では、30行目の右側の「b=1 TO 9」を「b=1 TO a」へと
修正したらどうなるか、と
いう問題。
予想通り、九九の表の
右上が消えた三角形の表
になった。1の段が1×1まで、2の段が2×2までで終わるから、半分ちょっと
になるのだ。掛け算の交換法則を前提とするなら、九九の表は一応これで間
に合う。1の段から消えた1×2の代わりに、2の段の2×1を見ればいい。小
学2年生は喜ばないだろうが♪
なお、この九九の表のプログラ
ムだと行の名前が100番まで
到達する。3ケタは珍しいし10
行目だから、うっかり10番と入
力したら、「Duplicate label」
(重複ラベル)というエラー表示が出た。このくらい、自動で修正してくれても
いいと思うのは、人間のワガママか♪
☆ ☆ ☆
続いて、流れ図(フローチャート)の書き方。これはそもそも、プログラムと違っ
て人間用のものだから、流れの筋道がある程度わかればいいはずだ。少し自
由度が大きいし、プログラムとの1対1の対応関係がある訳ではない。おまけ
に技術や特殊なソフトを持ってない私の場合、ノートに手書きすることになる。
まず、今回の最初のプログラム
で、順列nPrを求める流れ図か
ら。本来は流れ図を先に書い
て、それを参照しながらプログ
ラミングするのだが、初体験の
私の場合、プログラムを見な
がら流れ図を書いた♪
世界に通じる図を意識して、
日本語なしで書いてみたが、
教科書では日本語を使って
る(他の問題)。赤字は単な
る記事用の補足説明。
はじめと終わりは、両端が
丸い長方形みたいな枠。キーボード入力は台形の枠。コンピューター処理は
普通の長方形。条件判断は菱(ひし)形で、YESとNOで2つの道に分岐する。
図を見ると、「ループ」(輪)という用語の意味が一目瞭然だろう。モニター(画
面)への表示はなぜか、左向きの弾丸の形の枠組となってる。左向きの矢印
は、変数記号への代入を表す。
☆ ☆ ☆
最後は、九九の表を作る流れ図。
ここでは、半角スペースを入れる
処理(図ではSPACE)と、改行の
処理(LINE FEED)を使うことに
なる。「二重ループ」という用語の
意味も一目瞭然だ。
それにしても、やはりプログラム
より流れ図の方が面倒だと感じ
てしまう♪ 流れ図というものは、
もっと大まかにザックリ書かない
と実用性がないような気がする。
それとも、慣れの問題だろうか。
ともあれ、今日はこの辺で。。☆彡
cf. Quick BASICの練習(6)~DIM文と配列変数(添字つき変数)
Quick BASICの練習(7)~関数値の計算、方程式の近似値
Quick BASICの練習(8)~素数の判別、エラトステネスのふるい
Quick BASICの練習(9)~数列の二項間漸化式と固有値、一般項
(計 2547字)
| 固定リンク | 0
「数学」カテゴリの記事
- 日テレ『頭脳王2021』ストレンジ・オセロ、先手必勝ゲームの証明と戦略(7通りの場合分け)(2021.02.23)
- 『頭脳王2021』、純金のピラミッドの金額&シロナガスクジラを持ち上げる金剛力士像の身長、計算式と解説(2021.02.20)
- 1と0のカードゲーム、単純そうで複雑な連続操作の考察~開成中学2021年入試、算数・問題3の解き方(2021.02.14)
- 宝くじの当選番号を予言して当てる迷惑メールの仕組み、他~2021年・大学入学共通テスト・情報関係基礎(2021.01.24)
- 陸上100m走のタイム(時間)とストライド(歩幅)、ピッチ(歩数)の関係~2021年・大学入学共通テスト・数学ⅠA・第2問〔1〕(2021.01.19)
「プログラミング」カテゴリの記事
- 超初心者によるC言語入門2~答のケタ数指定、ルート(平方根)、三角関数、二次方程式の解の公式(2021.01.12)
- 超初心者によるC言語入門、無料のオンライン・コンパイラ探しが困難、paiza(パイザ)がいいかも♪(2020.10.24)
- 小学校『5、6年のプログラミング ドリル』問題と解き方4、アルゴリズム、移り変わり図(2020.05.26)
- 小学校『5、6年の楽しいプログラミング ドリルの王様』、問題と解き方3(2020.04.14)
- 小学校『5、6年の楽しいプログラミング ドリルの王様』、問題と解き方2(2020.04.02)
コメント
一ヶ月間を置いても、さっと立ち上がれるのは凄いですね。
””元の変数がなぜかKとJになってたからaとbへと変更した””。何の問題も無いですが、我々世代の習得した言語仕様では、整数を扱う変数はi,j,k,l、m,nの6文字(6文字で足りないときはi1,j1・・)と言う決まり(習った)なので、この時代になっても無意識に整数型変数はi,jと言う風に置きます。
投稿: gauss | 2014年11月26日 (水) 01時28分
> gauss さん

こんばんは。毎度どうもです♪
さっと立ち上がるどころか、ここ半月、
ズルズルと記事を先延ばしにしてました。
今回も、前回の記事と教科書を読みながら
何とか短めに書きあげた感じです。
流れ図の2つ目、スペース、改行、二重ループの
表示は、教科書の図にも載ってませんしね。
で、整数の変数はi,j,k,l,m,nだと。
なるほど、確かにそうなってるし、
数学でもそれらをよく使いますね。
和のSや積のPとかは、また別ってことで。
早く卒業して他の言語に挑戦したいのに、亀の歩み。
まだしばらく時間がかかりそうです。。
投稿: テンメイ | 2014年11月26日 (水) 23時42分