Transcript Document
プログラミング入門
電卓を作ろう・パート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」を代
入する
表示の後
に繰り返す
かどうかの
判断をたず
ねる