プログラミング入門 電卓を作ろう・パートIV!!
C言語で電卓 先週までに小数点を含む四則演算が出来るようになった。 かなり、電卓に近づいてきた。 しかし、もう少し気になることがある・・・ 1回の計算が終わるとプログラムが終了してしまう。 そして、もう一度計算するためには再度「実行」しなければならない。 今週は1回の計算が終了してもプログラムが終了せず、繰り返し計算ができるようにバージョンアップを目指す。 繰り返し制御・・・もう1つの制御
C言語で電卓 ~先週のプログラムの復習~ 左は先週の演習プログラム シナリオ ‘+’‘-’‘*’‘/’だったら、演算結果を表示。 そうでなければ、「そのような計算は出来ません」と表示する。
C言語で電卓 ~繰り返し計算~ 左は先週の演習プログラム シナリオ どの部分を繰り返すのか? 電卓の機能を記述している部分を繰り返す 具体的に・・・ 『演算を入力してください』の表示~『演算結果の表示』までを繰り返す。 この部分を繰り返したい!!
C言語で電卓 ~繰り返し計算~ とりあえず、左のプログラムを実行してみよう!! どのように変わったか? ⇒繰り返し『演算を入力してください』と聞いてくる ⇒終了するには「Ctrl」+「C」を押す!!
C言語で電卓 ~繰り返し計算~ シナリオ 電卓部分の繰り返し 赤線部分の繰り返し ある部分を繰り返す制御 ⇒C言語 while(1){・・・}と書く ⇒{ }で囲まれた{・・・}の部分を繰り返す ⇒「while」の意味「~の間」 改行をなくす
while文の処理の流れ(フローチャート) ~繰り返し計算~ 開始 開始 while(1){ 電卓部分; 電卓部分; } 終了 終了
C言語で電卓 ~繰り返し計算~ これで、繰り返して計算ができるようになった しかし、終了する場合「Ctrl」+「C」を押さなければならない ⇒強制終了 次のバージョンアップでは、計算するかしないかを自分の意志で決めるようにプログラムを変更する。
C言語で電卓 ~繰り返し計算~ 条件 Yes No while(1){ 電卓部分; } もう一度while文のフローチャートを見てみる 開始 もう一度while文のフローチャートを見てみる 菱形は条件分岐制御だった!! ⇒“if”文で出てきた・・・ 条件を入れてみる つまり、計算を続けるか?続けないか?を条件とする。 つまり、条件分岐を次のように考える 計算を続けるならば“Yes”⇒電卓部分へ 計算をやめるならば“No”⇒終了へ 条件 Yes No while(1){ 電卓部分; } 終了
C言語で電卓 ~繰り返し計算~ 条件 Yes No while(1){ 電卓部分; } while文は 実は ⇒条件が正しくなければ、{・・・}をとばして(実行せず)終了へ よって、条件に 計算を続けるならば⇒電卓部分へ 計算をやめるならば⇒終了へ とシナリオを書き直せばよい ここで・・・while(1){・・・}の意味 ⇒「1」はコンピュータでは「真」を表す ⇒つまり、「常に正しい」を表す ⇒よって、条件「1」は常に正しい!! ⇒永遠に繰り返し続ける⇒強制終了 開始 条件 Yes No while(1){ 電卓部分; } 終了
C言語で電卓~繰り返し計算~ 条件 Yes No while(1){ 電卓部分; } シナリオを詳しく具体的に 条件をどのように実現するか? 計算を続ける⇒「1」を入力する 計算をやめる⇒「0」を入力する ここで!!(重要) この、 「1」や「0」の数字を入れておくための入れ物を用意する必要がある ⇒int joukenn; 条件はどの様に書くか? 計算を続けるならば「1」⇒電卓部分へ 計算をやめるならば「0」⇒終了へ⇒while( joukenn == 1 ){・・・} もう1つ 繰り返すかどうか、「1」や「0」をどこで「joukenn」に入力するか?を考える必要がある 開始 条件 Yes No while(1){ joukenn==1 電卓部分; } 終了
電卓部分; } Yes No 繰り返すかどうか聞く; C言語で電卓~繰り返し計算~ while(1){ 電卓部分; } 条件 Yes No 開始 終了 電卓部分; } Yes No joukenn==1 繰り返すかどうか聞く; C言語で電卓~繰り返し計算~ シナリオを詳しく具体的に 条件をどのように実現するか? 計算を続ける⇒「1」を入力する 計算をやめる⇒「0」を入力する ここで!!(重要) この、 「1」や「0」の数字を入れておくための入れ物を用意する必要がある ⇒int joukenn; 条件はどの様に書くか? 計算を続けるならば「1」⇒電卓部分へ 計算をやめるならば「0」⇒終了へ⇒while( joukenn == 1 ){・・・} もう1つ 繰り返すかどうか、「1」や「0」をどこで「joukenn」に入力するか?を考える必要がある 開始 while(1){ 終了 電卓部分; } 条件 Yes No joukenn==1
C言語で電卓 ~繰り返し計算~ とりあえず、左のプログラムを実行して、確認してみよう!!
条件を始めは「1」としておく。つまり、1回は計算を行う C言語で電卓 ~繰り返し計算~ joukenn 1 シナリオ 条件を入れる「入れ物」を用意 joukenn==1 条件を始めは「1」としておく。つまり、1回は計算を行う 計算を続けるかどうか聞く⇒条件を選択 聞く場所は、計算が終了した後
while文の処理の流れ(フローチャート) ~繰り返し計算~ 開始 開始 joukenn==1 電卓部分; No Yes 電卓部分; 続けるか? 終了するか? 終了 終了
C言語で電卓 ~繰り返し計算~ これで、この講義での電卓は完成とする。 当然、まだまだバージョンアップする余地はある。 この講義では、 何を作るか?を考えることの重要性 プログラミングにおけるシナリオの重要性 ⇒コンピュータに向かうことが重要ではない!! バージョンアップを繰り返すことの重要性 ⇒まず、簡単なところから初めて、徐々にシナリオを完成に近づけていく!! プログラミングの基礎 ⇒入れ物 ⇒制御文(条件分岐・繰り返し) C言語の基礎 ⇒入れ物・・・int, double, char ⇒条件分岐・・・if, else if, else ⇒繰り返し・・・while
演習5 講義のプログラムでは「enzan」に足し算‘+’、引き算‘-’、掛け算‘*’、割り算‘/’が入力されていなくても、つまり、ディスプレイ上に「そのような計算は出来ません」と表示されていても、計算を続けるかどうか確認するプログラムであった。 演習では、計算を続けるかどうかは、「enzan」に足し算‘+’、引き算‘-’、掛け算‘*’、割り算‘/’が入力されたときだけ確認するようにし、「enzan」にそれら以外の文字が入力された場合は確認することなく、計算を終了するように、プログラムを変更しなさい。 演算1回目 演算結果の表示 繰り返すか? 演算2回目 演算結果の表示 繰り返すか? 演算3回目 演算結果の表示 終了
演習5ヒント1 ヒント どこで、確認するか? 「enzan」が+・-・*・/であった場合、つまり、通常の演算を表示する場所で表示と同時に計算を繰り返すかどうか、確認する。 そうでない場合、「joukenn」に「0」を代入する。“joukenn=0;” 表示の後に繰り返すかどうかの判断をたずねる 表示の後に強制的にjoukennに「0」を代入する
演習5ヒント2 ヒント どこで、確認するか? 「enzan」が+・-・*・/であった場合、つまり、通常の演算を表示する場所で表示と同時に計算を繰り返すかどうか、確認する。 そうでない場合、「joukenn」に「0」を代入する。“joukenn=0;” 表示の後に繰り返すかどうかの判断をたずねる 表示の後に強制的にjoukennに「0」を代入する