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」を代
入する
表示の後
に繰り返す
かどうかの
判断をたず
ねる