プログラミング入門 電卓を作ろう・パートIV!! C言語で電卓 先週までに小数点を含む四則演算が出来るように なった。 かなり、電卓に近づいてきた。 しかし、もう少し気になることがある・・・ 1回の計算が終わるとプログラムが終了してしまう。 そして、もう一度計算するためには再度「実行」し なければならない。 今週は1回の計算が終了してもプログラムが終了 せず、繰り返し計算ができるようにバージョンアッ プを目指す。 繰り返し制御・・・もう1つの制御 C言語で電卓 ~先週のプログラムの復習~ 左は先週の演 習プログラム シナリオ ‘+’‘-’‘*’‘/’ だったら、演算 結果を表示。 そうでなけれ ば、「そのよう な計算は出来 ません」と表示 する。 C言語で電卓 ~繰り返し計算~ 左は先週の演習 この部分を繰り返したい!! プログラム シナリオ どの部分を繰り 返すのか? 電卓の機能を記 述している部分 を繰り返す 具体的に・・・ 『演算を入力して ください』の表示 ~『演算結果の 表示』までを繰り 返す。 C言語で電卓 ~繰り返し計算~ とりあえず、左のプログラムを実行してみよう!! どのように変わったか? ⇒繰り返し『演算を入力してください』と聞いてくる ⇒終了するには「Ctrl」+「C」を押す!! C言語で電卓 ~繰り返し計算~ シナリオ 電卓部分の繰 改行を なくす り返し 赤線部分の繰 り返し ある部分を繰り 返す制御 ⇒C言語 while(1){・・・} と書く ⇒{ }で囲まれ た{・・・}の部分 を繰り返す ⇒「while」の意 味「~の間」 while文の処理の流れ(フローチャート) ~繰り返し計算~ 開始 開始 while(1){ 電卓部分; 電卓部分; } 終了 終了 C言語で電卓 ~繰り返し計算~ これで、繰り返して計算ができるようになっ た しかし、終了する場合「Ctrl」+「C」を押さな ければならない ⇒強制終了 次のバージョンアップでは、計算するかしな いかを自分の意志で決めるようにプログラ ムを変更する。 C言語で電卓 ~繰り返し計算~ 開始 もう一度while文のフロー while(1){ 条件 No Yes 電卓部分; } 終了 チャートを見てみる 菱形は条件分岐制御だった!! ⇒“if”文で出てきた・・・ 条件を入れてみる つまり、計算を続けるか?続け ないか?を条件とする。 つまり、条件分岐を次のように 考える 計算を続けるならば“Yes”⇒ 電卓部分へ 計算をやめるならば“No”⇒終 了へ C言語で電卓 ~繰り返し計算~ while文は 実は while(条件){・・・}書くことが本当の使 開始 while(1){ 条件 No Yes 電卓部分; } 終了 い方 ⇒条件が正しければ(“Yes”ならば)、 {・・・}内(“電卓部分”)を実行する。 ⇒条件が正しくなければ、{・・・}をとば して(実行せず)終了へ よって、条件に 計算を続けるならば⇒電卓部分へ 計算をやめるならば⇒終了へ とシナリオを書き直せばよい ここで・・・while(1){・・・}の意味 ⇒「1」はコンピュータでは「真」を表す ⇒つまり、「常に正しい」を表す ⇒よって、条件「1」は常に正しい!! ⇒永遠に繰り返し続ける⇒強制終了 C言語で電卓~繰り返し計算~ 開始 joukenn==1 while(1){ 条件 No Yes 電卓部分; } 終了 シナリオを詳しく具体的に 条件をどのように実現するか? 計算を続ける⇒「1」を入力する 計算をやめる⇒「0」を入力する ここで!!(重要) この、 「1」や「0」の数字を入れておくた めの入れ物を用意する必要がある ⇒int joukenn; 条件はどの様に書くか? 計算を続けるならば「1」⇒電卓部分へ 計算をやめるならば「0」⇒終了へ ⇒while( joukenn == 1 ){・・・} もう1つ 繰り返すかどうか、「1」や「0」をどこで 「joukenn」に入力するか?を考える必要 がある C言語で電卓~繰り返し計算~ 開始 開始 joukenn==1 joukenn==1 while(1){ 条件 No No Yes 電卓部分; 電卓部分; 繰り返すか } どうか聞く; 終了 } 終了 シナリオを詳しく具体的に 条件をどのように実現するか? 計算を続ける⇒「1」を入力する 計算をやめる⇒「0」を入力する ここで!!(重要) この、 「1」や「0」の数字を入れておくた めの入れ物を用意する必要がある ⇒int joukenn; 条件はどの様に書くか? 計算を続けるならば「1」⇒電卓部分へ 計算をやめるならば「0」⇒終了へ ⇒while( joukenn == 1 ){・・・} もう1つ 繰り返すかどうか、「1」や「0」をどこで 「joukenn」に入力するか?を考える必要 がある C言語で電卓 ~繰り返し計算~ とりあえず、左の プログラムを実行 して、確認してみ よう!! 1 joukenn C言語で電卓 ~繰り返し計算~ 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」を代 入する 表示の後 に繰り返す かどうかの 判断をたず ねる
© Copyright 2024 ExpyDoc