1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:01,960 SPEAKER 1:のは、水についてお話しましょう​​。 3 00:00:01,960 --> 00:00:07,280 この問題では、我々が言うようにユーザーに依頼し 私たちどのくらいの数分で自分のシャワーがありました 4 00:00:07,280 --> 00:00:11,040 し、我々は同等の計算します 水のボトルの数 5 00:00:11,040 --> 00:00:12,970 彼らのシャワーを使用していること。 6 00:00:12,970 --> 00:00:16,379 >> だから、私たちのto-doのは何ですか この問題のために? 7 00:00:16,379 --> 00:00:20,050 まず、我々はするつもりです 要求し、その後検証します 8 00:00:20,050 --> 00:00:22,100 ユーザーが私たちを与える入力。 9 00:00:22,100 --> 00:00:24,790 我々は、我々を確保すると 有効なユーザ入力を有し、 10 00:00:24,790 --> 00:00:28,230 我々は計算するつもりです 水のボトルの同等数 11 00:00:28,230 --> 00:00:30,770 ユーザーは、中に持っていたこと その後、彼らのシャワー、私たちはしています 12 00:00:30,770 --> 00:00:33,720 することによって、それらを言うつもり その番号をプリントアウト。 13 00:00:33,720 --> 00:00:37,230 >> それでは、私たちの最初に取り組むみましょう タスク、プロンプトと検証 14 00:00:37,230 --> 00:00:38,550 ユーザー入力。 15 00:00:38,550 --> 00:00:40,910 このために私たちが書きました あなたが呼ばれるための機能 16 00:00:40,910 --> 00:00:43,950 CS50ライブラリにありget_int。 17 00:00:43,950 --> 00:00:48,710 get_intは、ユーザ入力を確実に 整数なので、任意の正の数、 18 00:00:48,710 --> 00:00:51,700 負の数、または ゼロがすべて受け入れられます。 19 00:00:51,700 --> 00:00:55,900 しかし、ユーザーが何かを入力すると、 そのように文字や数字の組み合わせ 20 00:00:55,900 --> 00:00:59,710 その後、または小数、 ユーザーが再試行するように求められます 21 00:00:59,710 --> 00:01:04,319 そして、機能は何かを受け入れることはありません ユーザーまで、彼らに整数を与えます。 22 00:01:04,319 --> 00:01:06,410 >> では、どのようget_intを使用するのですか? 23 00:01:06,410 --> 00:01:10,830 あなたのワークスペースを開くとし、 みましょうのinteger.cという名前のファイルを作成します 24 00:01:10,830 --> 00:01:12,110 次のように入力します。 25 00:01:12,110 --> 00:01:14,760 ハッシュタグはcs50.h.を含みます 26 00:01:14,760 --> 00:01:18,480 get_intので、これが必要です CS50ライブラリ関数であり、 27 00:01:18,480 --> 00:01:21,890 私たちは、ハッシュタグなければなりません 順番にその宣言 28 00:01:21,890 --> 00:01:23,370 関数を使用します。 29 00:01:23,370 --> 00:01:26,570 そして、私のメインで 機能私は行きますよ 30 00:01:26,570 --> 00:01:29,560 単に機能get_intを呼び出します。 31 00:01:29,560 --> 00:01:31,750 >> それでは、これを実行し、それがどのように動作するか見てみましょう。 32 00:01:31,750 --> 00:01:35,092 私はすでにそうしましょう​​のは、それをまとめました ただ先に行くと、このプログラムを実行し、 33 00:01:35,092 --> 00:01:36,480 。/整数。 34 00:01:36,480 --> 00:01:39,880 ここで私はプロンプトを持っているし、 ここで私は入力値をここです。 35 00:01:39,880 --> 00:01:44,880 、私はいくつかの整数型に入れて言います 50、プログラムexceptsでと終了します 36 00:01:44,880 --> 00:01:45,960 それはそれです。 37 00:01:45,960 --> 00:01:49,350 >> しかし、私は再びそれを実行すると言います 他の私は、入力何か。 38 00:01:49,350 --> 00:01:51,350 おそらく、こんにちは世界。 39 00:01:51,350 --> 00:01:55,660 それはとても整数ではありません プログラムは再試行するために私を促すメッセージが表示されます。 40 00:01:55,660 --> 00:01:59,160 それでは、再び試してみましょう おそらく小数点この時間。 41 00:01:59,160 --> 00:02:03,450 0.5、再び、整数でないので、 プログラムはそれを受け入れることはありません 42 00:02:03,450 --> 00:02:05,290 それが再試行することを私に教えてあげましょう。 43 00:02:05,290 --> 00:02:07,070 それでは、それを別の番号を与えてみましょう。 44 00:02:07,070 --> 00:02:09,830 プログラムはそれを受け取り、 終了し、我々は完了です。 45 00:02:09,830 --> 00:02:13,520 >> だから今、私たちは機能を持っています それは私たちと性を保証することができます 46 00:02:13,520 --> 00:02:16,790 ユーザーが入力しました 整数が、どのように我々はできます 47 00:02:16,790 --> 00:02:20,330 実際の追跡 整数値は、ユーザにより入力されましたか? 48 00:02:20,330 --> 00:02:25,260 さて、私たちがやるすべてのお店です 変数にこの値は、nは言います。 49 00:02:25,260 --> 00:02:30,580 だから私は、整数nを宣言した場合、 そして、私は、get_intするために、その値を設定します 50 00:02:30,580 --> 00:02:34,700 そして、nは、次にどのような保存します 入力されたユーザを大切にしています。 51 00:02:34,700 --> 00:02:38,620 >> すべての権利、今私たちがいることを確実にしました ユーザーは、私たちに整数を与えます 52 00:02:38,620 --> 00:02:42,550 私たちはトラックを維持する方法を知っています 整数の、しかし、覚えて、 53 00:02:42,550 --> 00:02:45,610 整数は正と負の両方です。 54 00:02:45,610 --> 00:02:49,110 だから、本当に意味がありません。 この問題の文脈で 55 00:02:49,110 --> 00:02:53,570 ユーザーは、シャワーを浴びること 負の12分を言います。 56 00:02:53,570 --> 00:02:59,310 だから我々は、ユーザーがそのことを確認する必要があります 実際に私達に正の整数を与えます。 57 00:02:59,310 --> 00:03:02,130 今、私たちはただ持っていません そのための一つの関数、 58 00:03:02,130 --> 00:03:04,620 私たちは持っているつもりです 自分自身ことを作成します。 59 00:03:04,620 --> 00:03:07,190 >> だから我々は継続的にしたいです ユーザにプロンプ​​トを表示 60 00:03:07,190 --> 00:03:09,730 彼らは私たちに正の整数を与えるまで。 61 00:03:09,730 --> 00:03:14,300 私は継続的に、次に何かをやっている場合 それは、繰り返しループに似ています。 62 00:03:14,300 --> 00:03:19,130 我々が使用するコンストラクトの1だから、 (c)に反復とループを実装します 63 00:03:19,130 --> 00:03:20,410 whileループです。 64 00:03:20,410 --> 00:03:23,020 だから、whileループ、など ここに示され、実行されます 65 00:03:23,020 --> 00:03:27,030 ループの本体にあるもの 与えられた条件の評価していれば 66 00:03:27,030 --> 00:03:27,900 trueに設定します。 67 00:03:27,900 --> 00:03:30,640 すぐにその条件として、 その後、falseと評価 68 00:03:30,640 --> 00:03:34,830 プログラムは、どんなに進みます ループ本体の後に来ます。 69 00:03:34,830 --> 00:03:39,400 >> だからループがしようとしている一方で CS50で本当に便利です。 70 00:03:39,400 --> 00:03:42,590 しかし、この特定で 場合は、私たちがしていることを知っています 71 00:03:42,590 --> 00:03:48,140 少なくともユーザにプロンプ​​トを表示しよう 一度だけループ必要に応じて。 72 00:03:48,140 --> 00:03:51,080 そこでここでは、に来て 特別な構築物およびそのの 73 00:03:51,080 --> 00:03:55,020 しばらくに非常に似て ループがdo-whil​​eループと呼ばれます。 74 00:03:55,020 --> 00:03:58,840 >> そう-whil​​eループが実行されます ループの本体に少なくとも一回 75 00:03:58,840 --> 00:04:01,750 そしてそれがどうかをチェック それが実行すべきかどうか、 76 00:04:01,750 --> 00:04:05,310 whileループとは対照的に、 その状態をチェックします 77 00:04:05,310 --> 00:04:07,200 そしてその後、ボディを実行します。 78 00:04:07,200 --> 00:04:11,880 そう-whil​​eループで、私たちがかもしれません やる整数のためのユーザープロンプトで、 79 00:04:11,880 --> 00:04:14,450 そして、それは無効だかどうかを確認します。 80 00:04:14,450 --> 00:04:18,130 それが無効の場合は、我々はよ ユーザに尋ねるプロセスを繰り返します 81 00:04:18,130 --> 00:04:22,290 その後、私たちに別の整数を与える、とします その整数が有効である場合にのみ、 82 00:04:22,290 --> 00:04:25,060 我々は、に進みます 何でも、後で来ます。 83 00:04:25,060 --> 00:04:28,030 >> 今、あなたは、ことに気づくでしょう 整数nの宣言 84 00:04:28,030 --> 00:04:31,670 私たちに少し異なります 前の例では前にしました 85 00:04:31,670 --> 00:04:33,640 そしてこれは、範囲のものです。 86 00:04:33,640 --> 00:04:37,920 私たちは、内部の整数nを宣言していた場合 DO-whil​​eループの本体の、 87 00:04:37,920 --> 00:04:42,640 その後、我々はアクセスできません それらの巻き毛の外側のnの値 88 00:04:42,640 --> 00:04:45,050 ループの本体を示すブレース。 89 00:04:45,050 --> 00:04:51,080 しかし、我々は、実際にアクセスしたいです 私たちのプログラムで、後にnの値。 90 00:04:51,080 --> 00:04:55,730 >> [OK]を、ので、今の約話をしましょう この状態はどうあるべきか。 91 00:04:55,730 --> 00:05:00,400 私たちは求めるプロンプトを表示したいです ユーザー限り、nが無効であるとして。 92 00:05:00,400 --> 00:05:04,640 それでは、無効な自分自身に思います 整数値は次のようになります。 93 00:05:04,640 --> 00:05:08,060 そして、ブールを作成 それを表現する表現。 94 00:05:08,060 --> 00:05:13,070 >> 私たちは、ほとんど私たちのサブタスクが終了しています プロンプトおよびユーザー入力を検証します。 95 00:05:13,070 --> 00:05:16,010 それでは、この小さなを作ってみよう もう少しユーザーフレンドリー 96 00:05:16,010 --> 00:05:18,390 そして、ユーザーを少し与えます もう少し情報 97 00:05:18,390 --> 00:05:20,510 我々はのためにそれらを促すているものの。 98 00:05:20,510 --> 00:05:24,500 それではごとに、ユーザにプロンプ​​トを表示させます スペック、文字列の分と。 99 00:05:24,500 --> 00:05:28,935 だからあなたのprintf文を使用して、作ります あなたがこれを正確に一致することを確認してください。 100 00:05:28,935 --> 00:05:30,230 >> 大丈夫。 101 00:05:30,230 --> 00:05:33,840 だから今、私たちは、有効なユーザーを持っています 入力、正の整数 102 00:05:33,840 --> 00:05:37,400 何分の値 彼らはシャワーで過ごしました。 103 00:05:37,400 --> 00:05:41,300 それでは、次のは計算することです。 ボトルの同等の数。 104 00:05:41,300 --> 00:05:45,250 私たちがここでやろうとしていることかもしれません 最初はあなたに非常に明白です、 105 00:05:45,250 --> 00:05:46,640 それはOKです。 106 00:05:46,640 --> 00:05:49,320 私たちがやりたいことは、私たちです 練習を開始したいです 107 00:05:49,320 --> 00:05:53,810 検出パターンの考え方と 問題の数式を開発します。 108 00:05:53,810 --> 00:05:57,200 >> だから我々は、仕様ごとに語っています シャワーでその1分 109 00:05:57,200 --> 00:05:59,960 約に相当します 水の12ボトル。 110 00:05:59,960 --> 00:06:03,020 それでは、2分のでしょう 24に相当します、 111 00:06:03,020 --> 00:06:05,850 そして5分だろう 60に相当します。 112 00:06:05,850 --> 00:06:08,390 だから今あなたが考える場合 あなたはそれを持っているし、してみましょう 113 00:06:08,390 --> 00:06:10,390 あなたが出てくることができるかどうかを確認 パターンまたは式 114 00:06:10,390 --> 00:06:14,990 我々は、Nと答えている場合に表現するために 水の分、どのように多くのボトル 115 00:06:14,990 --> 00:06:17,930 そのは、nで表現されるのでしょうか? 116 00:06:17,930 --> 00:06:20,680 >> ここでも、たとえこの 最初は単純かもしれません、 117 00:06:20,680 --> 00:06:23,240 後で我々が得るときに より複雑な問題 118 00:06:23,240 --> 00:06:26,360 我々は中に取得したいとしています 特定の実践 119 00:06:26,360 --> 00:06:30,120 パターンと発展途上式 これらの事を把握します。 120 00:06:30,120 --> 00:06:33,450 >> Cでは、へのアクセス権を持っています 標準的な算術演算、 121 00:06:33,450 --> 00:06:36,520 加算、減算、 乗算、除算。 122 00:06:36,520 --> 00:06:38,420 だから私はそれを残しておきます 今、あなたを把握します 123 00:06:38,420 --> 00:06:41,300 表現するためにどのように ボトルの等価数 124 00:06:41,300 --> 00:06:43,990 ユーザーが消費されます 彼らのシャワー中。 125 00:06:43,990 --> 00:06:45,700 >> すべての権利、我々はほぼ完了です。 126 00:06:45,700 --> 00:06:50,650 私たちは、彼らのユーザに入力を求めるメッセージが表示しました、 我々はそれが有効な入力だことを確実にしました、 127 00:06:50,650 --> 00:06:53,330 し、我々は方法を考え出しました 等価を計算します 128 00:06:53,330 --> 00:06:55,480 彼らは消費ボトルの数。 129 00:06:55,480 --> 00:06:59,430 これを行うには最後のものは、出力にあります ボトルの等価数 130 00:06:59,430 --> 00:07:02,410 うまくいけば、奨励 それらいくつかの水を節約します。 131 00:07:02,410 --> 00:07:06,270 >> 値をします出力します printf文です。 132 00:07:06,270 --> 00:07:09,720 私はことをあなたに伝えたい場合 例えば、3ペットを持っています、 133 00:07:09,720 --> 00:07:13,090 私は、printf文を使用する場合があります それは次のようになります。 134 00:07:13,090 --> 00:07:15,880 私は、新しい3ペットを飼っていて、 素敵なフォーマットの行。 135 00:07:15,880 --> 00:07:17,880 >> 今、私たちはしたくありません 単にハードコードの事。 136 00:07:17,880 --> 00:07:20,740 私の数を言います ペットは時間の経過とともに変化します。 137 00:07:20,740 --> 00:07:25,080 それから私はを利用するつもりです 私のprintf文のプレースホルダ。 138 00:07:25,080 --> 00:07:27,350 だからここに私の電話番号は整数です。 139 00:07:27,350 --> 00:07:31,480 だから私は、プレースホルダを作成するつもりです %の私を使用して整数のため。 140 00:07:31,480 --> 00:07:33,930 私は、文字列を記述するつもりです、 そして、次に文字列の後に 141 00:07:33,930 --> 00:07:38,000 私はコンマを書き、その後、 私は印刷したい変数。 142 00:07:38,000 --> 00:07:42,730 だから、その値が出力されます そのプレースホルダの代わりに、%I。 143 00:07:42,730 --> 00:07:47,630 >> あなたはのように、プレースホルダを使用することができます よく、%fの山車のため。 144 00:07:47,630 --> 00:07:50,420 また、複数持つことができます 文字列内のプレースホルダ。 145 00:07:50,420 --> 00:07:53,950 例えば、私はいくつかの番号を持っている場合 犬や猫のいくつかの数の、 146 00:07:53,950 --> 00:07:59,210 私はここで、その後、2つのプレースホルダを置きます それぞれの順序で私の二つの変数。 147 00:07:59,210 --> 00:08:03,130 >> だから今我々は印刷する方法を知っていること 変数に格納された値、 148 00:08:03,130 --> 00:08:06,030 と非常に最後の事 行うには、我々を確保することです 149 00:08:06,030 --> 00:08:10,920 正確なフォーマットで値を印刷 仕様で示されています。 150 00:08:10,920 --> 00:08:14,990 そのことを、我々はプロンプトが表示されました ユーザーとは、その入力を検証しました。 151 00:08:14,990 --> 00:08:17,920 私たちは、その後、同等のを計算しました 水のボトルの数 152 00:08:17,920 --> 00:08:22,100 彼らはシャワー中に消費していること、 私たちは彼らにその値を出力しました。 153 00:08:22,100 --> 00:08:24,440 だから、私たちは水を完了しました。 154 00:08:24,440 --> 00:08:28,730 >> 私の名前は [? Zamila、?] これはCS50です。 155 00:08:28,730 --> 00:08:29,909