SPEAKER 1：のは、水についてお話しましょう​​。
この問題では、我々が言うようにユーザーに依頼し 私たちどのくらいの数分で自分のシャワーがありました
し、我々は同等の計算します 水のボトルの数
彼らのシャワーを使用していること。
>> だから、私たちのto-doのは何ですか この問題のために？
まず、我々はするつもりです 要求し、その後検証します
ユーザーが私たちを与える入力。
我々は、我々を確保すると 有効なユーザ入力を有し、
我々は計算するつもりです 水のボトルの同等数
ユーザーは、中に持っていたこと その後、彼らのシャワー、私たちはしています
することによって、それらを言うつもり その番号をプリントアウト。
>> それでは、私たちの最初に取り組むみましょう タスク、プロンプトと検証
ユーザー入力。
このために私たちが書きました あなたが呼ばれるための機能
CS50ライブラリにありget_int。
get_intは、ユーザ入力を確実に 整数なので、任意の正の数、
負の数、または ゼロがすべて受け入れられます。
しかし、ユーザーが何かを入力すると、 そのように文字や数字の組み合わせ
その後、または小数、 ユーザーが再試行するように求められます
そして、機能は何かを受け入れることはありません ユーザーまで、彼らに整数を与えます。
>> では、どのようget_intを使用するのですか？
あなたのワークスペースを開くとし、 みましょうのinteger.cという名前のファイルを作成します
次のように入力します。
ハッシュタグはcs50.h.を含みます
get_intので、これが必要です CS50ライブラリ関数であり、
私たちは、ハッシュタグなければなりません 順番にその宣言
関数を使用します。
そして、私のメインで 機能私は行きますよ
単に機能get_intを呼び出します。
>> それでは、これを実行し、それがどのように動作するか見てみましょう。
私はすでにそうしましょう​​のは、それをまとめました ただ先に行くと、このプログラムを実行し、
。/整数。
ここで私はプロンプトを持っているし、 ここで私は入力値をここです。
、私はいくつかの整数型に入れて言います 50、プログラムexceptsでと終了します
それはそれです。
>> しかし、私は再びそれを実行すると言います 他の私は、入力何か。
おそらく、こんにちは世界。
それはとても整数ではありません プログラムは再試行するために私を促すメッセージが表示されます。
それでは、再び試してみましょう おそらく小数点この時間。
0.5、再び、整数でないので、 プログラムはそれを受け入れることはありません
それが再試行することを私に教えてあげましょう。
それでは、それを別の番号を与えてみましょう。
プログラムはそれを受け取り、 終了し、我々は完了です。
>> だから今、私たちは機能を持っています それは私たちと性を保証することができます
ユーザーが入力しました 整数が、どのように我々はできます
実際の追跡 整数値は、ユーザにより入力されましたか？
さて、私たちがやるすべてのお店です 変数にこの値は、nは言います。
だから私は、整数nを宣言した場合、 そして、私は、get_intするために、その値を設定します
そして、nは、次にどのような保存します 入力されたユーザを大切にしています。
>> すべての権利、今私たちがいることを確実にしました ユーザーは、私たちに整数を与えます
私たちはトラックを維持する方法を知っています 整数の、しかし、覚えて、
整数は正と負の両方です。
だから、本当に意味がありません。 この問題の文脈で
ユーザーは、シャワーを浴びること 負の12分を言います。
だから我々は、ユーザーがそのことを確認する必要があります 実際に私達に正の整数を与えます。
今、私たちはただ持っていません そのための一つの関数、
私たちは持っているつもりです 自分自身ことを作成します。
>> だから我々は継続的にしたいです ユーザにプロンプ​​トを表示
彼らは私たちに正の整数を与えるまで。
私は継続的に、次に何かをやっている場合 それは、繰り返しループに似ています。
我々が使用するコンストラクトの1だから、 （c）に反復とループを実装します
whileループです。
だから、whileループ、など ここに示され、実行されます
ループの本体にあるもの 与えられた条件の評価していれば
trueに設定します。
すぐにその条件として、 その後、falseと評価
プログラムは、どんなに進みます ループ本体の後に来ます。
>> だからループがしようとしている一方で CS50で本当に便利です。
しかし、この特定で 場合は、私たちがしていることを知っています
少なくともユーザにプロンプ​​トを表示しよう 一度だけループ必要に応じて。
そこでここでは、に来て 特別な構築物およびそのの
しばらくに非常に似て ループがdo-whil​​eループと呼ばれます。
>> そう-whil​​eループが実行されます ループの本体に少なくとも一回
そしてそれがどうかをチェック それが実行すべきかどうか、
whileループとは対照的に、 その状態をチェックします
そしてその後、ボディを実行します。
そう-whil​​eループで、私たちがかもしれません やる整数のためのユーザープロンプトで、
そして、それは無効だかどうかを確認します。
それが無効の場合は、我々はよ ユーザに尋ねるプロセスを繰り返します
その後、私たちに別の整数を与える、とします その整数が有効である場合にのみ、
我々は、に進みます 何でも、後で来ます。
>> 今、あなたは、ことに気づくでしょう 整数nの宣言
私たちに少し異なります 前の例では前にしました
そしてこれは、範囲のものです。
私たちは、内部の整数nを宣言していた場合 DO-whil​​eループの本体の、
その後、我々はアクセスできません それらの巻き毛の外側のnの値
ループの本体を示すブレース。
しかし、我々は、実際にアクセスしたいです 私たちのプログラムで、後にnの値。
>> [OK]を、ので、今の約話をしましょう この状態はどうあるべきか。
私たちは求めるプロンプトを表示したいです ユーザー限り、nが無効であるとして。
それでは、無効な自分自身に思います 整数値は次のようになります。
そして、ブールを作成 それを表現する表現。
>> 私たちは、ほとんど私たちのサブタスクが終了しています プロンプトおよびユーザー入力を検証します。
それでは、この小さなを作ってみよう もう少しユーザーフレンドリー
そして、ユーザーを少し与えます もう少し情報
我々はのためにそれらを促すているものの。
それではごとに、ユーザにプロンプ​​トを表示させます スペック、文字列の分と。
だからあなたのprintf文を使用して、作ります あなたがこれを正確に一致することを確認してください。
>> 大丈夫。
だから今、私たちは、有効なユーザーを持っています 入力、正の整数
何分の値 彼らはシャワーで過ごしました。
それでは、次のは計算することです。 ボトルの同等の数。
私たちがここでやろうとしていることかもしれません 最初はあなたに非常に明白です、
それはOKです。
私たちがやりたいことは、私たちです 練習を開始したいです
検出パターンの考え方と 問題の数式を開発します。
>> だから我々は、仕様ごとに語っています シャワーでその1分
約に相当します 水の12ボトル。
それでは、2分のでしょう 24に相当します、
そして5分だろう 60に相当します。
だから今あなたが考える場合 あなたはそれを持っているし、してみましょう
あなたが出てくることができるかどうかを確認 パターンまたは式
我々は、Nと答えている場合に表現するために 水の分、どのように多くのボトル
そのは、nで表現されるのでしょうか？
>> ここでも、たとえこの 最初は単純かもしれません、
後で我々が得るときに より複雑な問題
我々は中に取得したいとしています 特定の実践
パターンと発展途上式 これらの事を把握します。
>> Cでは、へのアクセス権を持っています 標準的な算術演算、
加算、減算、 乗算、除算。
だから私はそれを残しておきます 今、あなたを把握します
表現するためにどのように ボトルの等価数
ユーザーが消費されます 彼らのシャワー中。
>> すべての権利、我々はほぼ完了です。
私たちは、彼らのユーザに入力を求めるメッセージが表示しました、 我々はそれが有効な入力だことを確実にしました、
し、我々は方法を考え出しました 等価を計算します
彼らは消費ボトルの数。
これを行うには最後のものは、出力にあります ボトルの等価数
うまくいけば、奨励 それらいくつかの水を節約します。
>> 値をします出力します printf文です。
私はことをあなたに伝えたい場合 例えば、3ペットを持っています、
私は、printf文を使用する場合があります それは次のようになります。
私は、新しい3ペットを飼っていて、 素敵なフォーマットの行。
>> 今、私たちはしたくありません 単にハードコードの事。
私の数を言います ペットは時間の経過とともに変化します。
それから私はを利用するつもりです 私のprintf文のプレースホルダ。
だからここに私の電話番号は整数です。
だから私は、プレースホルダを作成するつもりです ％の私を使用して整数のため。
私は、文字列を記述するつもりです、 そして、次に文字列の後に
私はコンマを書き、その後、 私は印刷したい変数。
だから、その値が出力されます そのプレースホルダの代わりに、％I。
>> あなたはのように、プレースホルダを使用することができます よく、％fの山車のため。
また、複数持つことができます 文字列内のプレースホルダ。
例えば、私はいくつかの番号を持っている場合 犬や猫のいくつかの数の、
私はここで、その後、2つのプレースホルダを置きます それぞれの順序で私の二つの変数。
>> だから今我々は印刷する方法を知っていること 変数に格納された値、
と非常に最後の事 行うには、我々を確保することです
正確なフォーマットで値を印刷 仕様で示されています。
そのことを、我々はプロンプトが表示されました ユーザーとは、その入力を検証しました。
私たちは、その後、同等のを計算しました 水のボトルの数
彼らはシャワー中に消費していること、 私たちは彼らにその値を出力しました。
だから、私たちは水を完了しました。
>> 私の名前は [？ Zamila、？] これはCS50です。