Вядучыя 1. Давайце пагаворым пра ваду.
У гэтай задачы, мы просім карыстальніка паведаміць нам, як доўга на працягу некалькіх хвілін іх душ
а затым вылічыць эквівалент колькасць бутэлек вады
якія выкарыстоўвалі іх душ.
>> Дык што ж наша да рабіць, для гэтай праблемы?
Па-першае, мы будзем хацець запытваць і затым пацвердзіць
ўваход, які карыстальнік дае нам.
Пасля таго, як мы гарантуем, што мы мець сапраўдны карыстацкі ўвод,
мы будзем вылічаць эквівалентнае колькасць бутэлек вады
што карыстач меў на працягу іх душ, а потым мы
збіраецца распавесці іх вывад на друк гэты нумар.
>> Так што давайце вырашаць наш першы Задача, падахвочваючы і праверкі
карыстацкі ўвод.
Для гэтага мы напісалі Функцыя для вас называецца
get_int знаходзіцца ў Бібліятэцы CS50.
get_int гарантуе, што ўваходы карыстальнікаў цэлы лік, так што любыя станоўчыя колькасці,
адмоўныя лікі, або нуль ўсё.
Але калі карыстальнік ўводзіць што-небудзь яшчэ, так што любая камбінацыя літар або лічбаў
або дзесятковых лікаў, то карыстальніку будзе прапанавана паўтарыць спробу
і функцыя нічога не прымае да таго часу, пакуль карыстальнік не дае ім цэлы лік.
>> Дык як жа мы выкарыстоўваем get_int?
Калі вы адкрыеце сваё працоўнае прастору і стварыць файл з імем integer.c давайце
увядзіце наступную каманду.
Хэштэгу ўключаюць cs50.h.
Гэта неабходна таму, што get_int з'яўляецца функцыяй бібліятэкі CS50,
таму мы павінны ўключаць хэштэгу яго заяву ў парадку
каб выкарыстоўваць гэтую функцыю.
А потым у маёй асноўнай функцыянаваць Я проста
каб проста выклікаць функцыю get_int.
>> Так што давайце запусцім і паглядзім, як гэта працуе.
Я ўжо склаў яго, так што давайце проста ісці наперад і запусціць гэтую праграму,
./integer.
Тут у мяне ёсць запрашэнне і вось дзе ўваход я значэнне.
Скажам, я ўставіў толькі некаторы цэлы лік, 50, праграма і квіты лічыць дзейнасці
і што гэта такое.
>> Але сказаць, што я запусціць яго зноў і Я ўводжу нешта іншае.
Можа быць, прывітанне свет.
Гэта не з'яўляецца цэлым лікам, так што праграма прапануе мне паўтарыць.
Давайце паспрабуем яшчэ раз з магчыма, дзесятковую на гэты раз.
0,5, зноў жа, не з'яўляецца цэлым лікам, так праграма не прыме
і ён скажа мне, каб паўтарыць спробу.
Так давайце дамо яму яшчэ адзін нумар.
Праграма прымае яго, завяршае працу, і мы зрабілі.
>> Так што цяпер у нас ёсць функцыя што дазваляе нам і забяспечвае
што карыстач уводзіць цэлы лік, але як мы можам
на самай справе сачыць з цэлы лік, уведзенай карыстальнікам?
Ну, усё, што мы зробім, гэта крама гэта значэнне ў зменнай, скажам, п.
Так што, калі я абвяшчаю цэлы лік п, і я ўсталяваў, што значэнне get_int,
то п будзе захоўваць усе, карыстальнікам значэнне уведзеную.
>> Добра, так што зараз мы забяспечылі, што карыстальнік дасць нам цэлы лік
і мы ведаем, як сачыць цэлага ліку, але памятайце,
цэлыя лікі, як станоўчыя, так і адмоўныя.
Так што гэта на самай справе не мае сэнсу У кантэксце гэтай праблемы
што карыстальнік прымае душ , Скажам, негатыўныя 12 хвілін.
Такім чынам, мы павінны пераканацца, што карыстальнік на самай справе дае нам станоўчае цэлы лік.
Цяпер у нас няма проста адна функцыя для гэтага,
такім чынам, мы будзем мець каб стварыць гэта самі.
>> Таму мы хочам, каб пастаянна прапануе карыстачу
пакуль яны не даюць нам станоўчае цэлы лік.
Калі я раблю нешта пастаянна, то што падобна пятлі, паўтор.
Такім чынам, адной з канструкцый, якія мы выкарыстоўваем ў C для выканання паўтарэння і завесы
пятля ў той час.
Такім чынам, у той час як контур, як і паказаны тут, будзе выконвацца
усё, што знаходзіцца ў целе цыклу, як Пакуль дадзеных ўмова прымае значэнне
да ісціны.
Як толькі гэта ўмова ацэньваецца як ілжывае, то
праграма пяройдзе да таго, што прыходзіць пасля таго, як цела цыклу.
>> Такім чынам, у той час як завесы збіраюцца быць вельмі карысным у CS50.
Але ў дадзеным канкрэтным выпадак, мы ведаем, што мы
збіраецца прапанаваць карыстачу па меншай меры, адзін раз і затым толькі контур, калі гэта неабходна.
Такім чынам, тут мы прыходзім да Спецыяльная канструкцыя і гэта
вельмі падобна на некаторы час пятля называецца петляў зрабі час.
>> Такім чынам, цыкл Do-то час выконвае цела цыклу па меншай меры адзін раз
а затым ён правярае ці павінен ён выканаць,
у адрозненне ад цыклу у той час як, якая будзе правяраць стан
а затым выканаць цела.
Такім чынам, у цыкле рабіць-а тое, што мы маглі б зрабіць, гэта прапанаваць карыстачу цэлы лік,
а затым праверыць, калі гэта інвалід ці не.
Калі гэта ня дзейнічае, то мы будзем паўторыце працэс, якое прапануе карыстачу
каб даць нам яшчэ адно цэлае лік, а затым толькі тады, калі, што цэлы лік з'яўляецца сапраўдным,
мы працягнем усё, што прыходзіць пасля гэтага.
>> Цяпер вы заўважыце, што дэкларацыя цэлага ліку п
трохі адрозніваецца ад таго, што мы гэта рабілі раней у папярэднім прыкладзе
і гэта з-за аб'ёму.
Калі б мы абвясцілі лік п ўнутры у целе цыклу Do-у той час як,
то мы не змаглі б атрымаць доступ што значэнне п за межамі гэтых кучаравых
расчалок з указаннем цела цыклу.
Але мы на самай справе хочам, каб атрымаць доступ да значэнне п ў далейшым у нашай праграме.
>> ОК, так што зараз давайце пагаворым пра тое тое, што гэта ўмова павінна быць.
Мы хочам толькі reprompt Карыстальнік, пакуль п з'яўляецца несапраўдным.
Так што думайце самі, што для інваліда цэлае значэнне будзе выглядаць
а затым стварыць лагічны значэнне выраз, каб выказаць гэта.
>> Мы амаль скончылі з нашым подзадачи падказак і праверкі карыстацкага ўводу.
Дык давайце гэта трохі зрабіць трохі больш дружалюбным да карыстача
і даць карыстальніку трохі крыху больш інфармацыі
пра тое, што мы падахвочваючы іх.
Так што давайце падкажа карыстачу, згодна з спецыфікацыі, са радком хвілін.
Такім чынам, выкарыстоўваючы вашыя PRINTF заявы, зрабіць Пераканайцеся, што вы падыходзіце гэта дакладна.
>> Добра.
Так што цяпер у нас ёсць сапраўдны карыстальнік ўваход, станоўчае цэлы лік
значэнне колькі хвілін яны правялі ў душы.
Дык што ж далей, каб разлічыць эквівалентнае колькасць бутэлек.
Што мы будзем рабіць тут, магчыма, быць вельмі відавочна для вас, па-першае,
і гэта нармальна.
Тое, што мы хочам зрабіць, гэта мы хочуць, каб пачаць практыкаваць
ідэя выяўлення заканамернасцяў і распрацоўцы формулы для задачы.
>> Такім чынам, мы сказалі ў спецыфікацыі што адна хвіліна ў душы
Гэта эквівалентна прыблізна 12 бутэлек вады.
Такім чынам дзве хвіліны будзе быць эквівалентна 24,
і праз пяць хвілін будзе эквівалентна 60.
Так што цяпер, калі вы думаеце, ў вас ёсць гэта, то давайце
убачыць, калі вы можаце прыдумаць з малюнкам або формулы
каб выказаць, калі мы сказаць, п хвілін, колькі бутэлек вады
б, што выяўляецца праз п?
>> Зноў жа, нават калі гэта можа быць проста на першы погляд,
пазней, калі мы атрымліваем больш складаныя задачы
мы будзем хацець, каб патрапіць у практыка выяўлення
ўзоры і развіваюцца формулы каб зразумець гэтыя рэчы.
>> У C вы маеце доступ да стандартныя арыфметычныя аперацыі,
складанне, адніманне, множанне і дзяленне.
Так што я пакіну яго цяпер, каб высветліць,
як выказаць эквівалентнае колькасць бутэлек
што карыстальнік спажывацца падчас іх душ.
>> Добра, мы амаль скончылі.
Мы заахвоцілі карыстальніка для іх ўводу, мы забяспечылі, што яна дзейнічае на ўваход,
а потым мы высветлілі, як вылічыць эквівалентнае
колькасць бутэлек, якія яны спажывалі.
Такім чынам, апошняе, што трэба зрабіць, гэта выхад эквівалентнае колькасць бутэлек
і, мы спадзяемся заахвочваць іх эканоміі вады.
>> Вывядзенне значэнне будзе быць Printf заяву.
Калі б я хацеў сказаць вам, што я ёсць тры хатніх жывёл, напрыклад,
Я мог бы выкарыстаць PRINTF заяву што выглядае прыкладна так.
У мяне ёсць тры хатніх жывёл, і новы лінія для прыемнага фарматавання.
>> Цяпер мы не хочам проста жорсткі код рэчы.
Скажам, лік маіх хатнія жывёлы змяняюцца з цягам часу.
Тады я буду выкарыстоўваць запаўняльнікі ў маім PRINTF заяве.
Дык вось маё лік цэлае.
Так што я збіраюся зрабіць запаўняльнік для цэлага, выкарыстоўваючы% I.
Я збіраюся напісаць радок, а затым пасля радка
Я пішу коску і затым зменная, якую я хачу надрукаваць.
Такім чынам, гэта значэнне будзе надрукавана замест гэтага запаўняльнік,% I.
>> Вы можаце выкарыстоўваць запаўняльнікі, як і ну, для паплаўкоў з% F.
Вы таксама можаце мець некалькі запаўняльнікі ў радку.
Напрыклад, калі ў мяне ёсць некаторая колькасць сабак і некаторы колькасць котак,
Я паклаў два запаўняльнікі тут, а затым мае дзве зменныя ў адпаведным парадку.
>> Так што цяпер мы ведаем, як друкаваць значэння, якія захоўваюцца ў зменных,
самая апошняя рэч зрабіць, гэта пераканацца, што мы
надрукаваць значэнне ў дакладнай фармаце паказана ў спецыфікацыі.
З гэтымі словамі, мы заахвоціла карыстальніка і пацверджана іх уклад.
Мы тады разлічылі эквівалент колькасць бутэлек вады
што яны спажываюць падчас іх душ, і мы выводны, што для іх значэння.
Такім чынам, мы завяршылі ваду.
>> Мяне завуць [? Zamila ,?] і гэта CS50.