>> [Гуляе музыка]
Дэвід малая: Прывітанне, усім.
Гэта supersection CS50 ст.
Прызначаныя Раздзелы ня будзе пачаць яшчэ на тыдзень.
І таму сёння, я тут with--
>> МАРЫЯ: Марыя.
Дэвід малая: --to самай справе зірнуць на праблемы
ўсталяваць адзін, курс гадоў Першыя тыдні матэрыялу,
вам арыентавацца з CS50 IDE, трохі з Linux, аперацыйнай сістэмы, гэта
якія працуюць на IDE, а таксама зірнем на некаторыя з пераходу
з нуля да C вядучых да праблемы ўсталюйце адзін.
>> Так што без далейшых цырымоній, ў задачы ўсталяваць адзін,
Вы будзеце уведзены ў CS50 IDE, які
гэта вэб-праграмавання серада, якую мы выкарыстоўваем для таго,
пісаць праграмы.
Ён распрацаваны, каб выглядаць вельмі нагадвае тыповага кампутара
Сістэма працуе пад кіраваннем аперацыйнай Сістэма называецца Linux.
Але гэта ў так званым воблаку, што азначае кожны ў класе
можа на самай справе маюць яго ці яе ўласны кошт і выкарыстоўваць яго, як добра.
>> Так што большасць з вас, верагодна, ніколі не выкарыстоўвалі серада Linux, перш чым або, магчыма,
нават сераду каманднага радка.
І каманднага радка серада адрозніваецца.
Гэта ўсё тэкставыя.
Гэта ўсё клавіятурныя каманды.
І гэта не Mousing, ня іконы, няма дыялогу вокнаў, ні меню.
Гэта чыста тэкставы.
Таму спачатку, што гэта накшталт адчувае, як крок
таму ў плане складанасці.
Але ён апынуўся нашмат больш магутны, вядома,
для кампутарнай вучонага, у канчатковым рахунку ,.
>> Такім чынам, давайце зірнем.
Вось я ў CS50.io, праз які Вы можаце ўвайсці ў CS50 IDE.
І гэтак жа, як у пустым, ёсць тры асноўныя вобласці ў гэтым экране.
Так на левай баку, у нас ёсць што будзе файл-браўзэр.
І ёсць гэтая тэчка на зверху, што ў цяперашні час пусты права
так як я пазбавіўся ад усіх сваіх файлы да supersection.
І вось, калі мы будзем захаваць C файлы, якія мы пішам.
У правым верхнім куце, у нас ёсць месца, дзе увесь наш код збіраецца атрымаць пісьмовае.
І на самай справе, калі я націскаю гэта плюс, гэта будзе дазвольце мне выбраць новы файл.
І тут я магу пачаць пісаць код на Сі або сапраўды, любую колькасць іншых моў.
>> А потым на дно, дзе яго кажа jharvard @ ide50-- і ваш будзе
нешта сказаць трохі different-- Што гэта было называецца?
Акно тэрмінала.
Так.
Такім чынам, акно тэрмінала так званы каманднага радка
Інтэрфейс, праз які вы можаце ўзаемадзейнічаць з аперацыйнай сістэмай.
І зараз, мы збіраемся зрабіць вельмі мала выкарыстанне this--
скампіляваць, каб глядзець на Паведамленні пра памылкі, якія мы бачым,
і запусціць нашы праграмы.
Але ў канчатковым рахунку, мы збіраемся каб зрабіць значна больш, а таксама.
І вы нават можаце ўсталяваць праграмнае забеспячэнне і кіраваць працоўная прастора
у CS50 IDE, а таксама.
Але больш на гэта ў іншы раз.
>> Так што давайце ісці наперад і напісаць вельмі простая праграма проста
прайсці праз размінкі hello.c, якія, магчыма,
найпросты праграма, мы можам напісаць.
Я ўжо адкрыў новую ўкладку.
Я збіраюся ісці наперад і кажуць ўключаюць у сябе стандартныя io.h.
Тады Int асноўны (пустэчу).
І тады Е ("прывітанне, свет" Зваротная касая рыса н, недалёка цытата,
Зачыніць дужкі, і кропка з коскі.
>> Добра.
Так што цяпер мая заўважыць акно без назвы.
Так што я вельмі хутка збіраюся падняцца на файл, захаваць.
І важна, што Я называю гэта "не прывітанне."
Такім чынам, вельмі распаўсюджаная памылка, асабліва ў задачы на ​​адзін,
гэта выпадкова проста назваць сваю Праграма "вада" ці "прагным" ці "Марыё"
або "крэдыт" і да таго падобнае.
Але вы на самой справе хочаце, каб што ў вас ёсць пашырэнне файла
таму што гэта адзіны шлях, які кампілятар, а таксама рэдактар ​​кода
ведае, што ты на самай справе пісаць код C.
Такім чынам, дазвольце мне ісці наперад і націсніце кнопку Захаваць.
>> І цяпер таксама, тое, што CS50 IDE зрабіў для нас гэта таксама
Сінтаксіс падкрэсліў ўсё.
Так што гэта ўсё стала вельмі маляўнічыя.
І ўвесь сэнс што не працуе.
Гэта проста, каб прыцягнуць вочы на канцэптуальна розных частак
з гэтай праграмы.
Так што давайце ісці наперад і скампіляваць.
І я магу скампіляваць ў некалькіх адносінах.
І ў тыдзень адзін, то старой школы, як мы зрабілі
гэта было літаральна на камандавання line-- "ляск hello.c."
А потым я трапіў Enter.
І нічога не здаецца, адбылося у акне тэрмінала.
Але тое, што зрабіў змены ў IDE?
Дзе, зноў жа, проста азначае, што IDE Інтэграванае асяроддзе распрацоўкі.
Гэта мудрагелісты спосаб сказаць, гэта комплекснае развіццё
асяроддзе для распрацоўкі праграмнага забеспячэння.
Такім чынам, што ж зменіцца ў інтэрфейсе?
Што вы заўважылі гэта іншае, Марыя?
>> МАРЫЯ: Я заўважыў, што-то пад IDE50 тэчку тут.
>> Дэвід малая: Так.
Так тут не толькі у нас ёсць "hello.c."
У нас таксама ёсць "a.out", які з'яўляецца свайго роду нямы назва праграмы.
Але на самой справе, гэтае імя па змаўчанні для Праграма, калі вы проста скампіляваць код
і не кажаце кампілятар які файл для вываду.
Так што, калі я хачу, каб запусціць гэта, я трэба сказаць compiler--
ці, хутчэй, мне трэба расказаць працоўная прастора, што я
хачу, каб запусціць праграму пад назвай "a.out".
Enter.
І ёсць "прывітанне, Свет. "Зараз" ./ ".
на самай справе важна.
Нават хоць звычайна мы толькі напісаць імёны каманд,
калі гэта праграма ў Вас ёсць напісана, вы хочаце сказаць, "./"
таму што відавочна кажа Linux што вы хочаце, каб запусціць праграму пад назвай
"a.out", які ў гэтым, дзе кропка азначае гэты каталог, што я ў цяперашні час
у, які, здараецца, называецца працоўнае месца, "a.out.
Таму што, калі я толькі што сказаў "a.out", Enter, Я іду, каб атрымаць "a.out каманды не
знайшоў ", таму што computer-- таму што я прыдумаў "a.out";
ён не прыйшоў з computer-- не ведаю, дзе яго шукаць,
хоць гэта права у мяне пад носам, так бы мовіць.
ДОБРА.
Такім чынам, мы маглі б змяніць гэта быць "звон -o прывітанне hello.c."
І калі я ударыў Enter, якая праграма гэта адбываецца на выхад для мяне?
Што імя файла?
Так, у спіну.
Гэта дакладна. "Добры дзень."
Такім чынам, "прывітанне" будзе назва праграмы
таму што мы выкарыстоўвалі так званы параметр каманднага радка, які з'яўляецца толькі
спосаб змены паводзін кампілятар на самай справе выхад
канкрэтнае імя файла.
І на самай справе, калі я павялічыць , І паглядзець тут,
Цяпер у мяне ёсць не толькі "a.out" і "hello.c", але і "прывітанне", а таксама.
Так што цяпер я магу зрабіць "./hello," Enter.
І ёсць "прывітанне, свет."
Але і гэта lastly-- цяпер будзе канвенцыя
мы выкарыстоўваем на працягу ўсёй семестр, typically--
што вы можаце таксама проста сказаць "прывітанне зрабіць."
І на самай справе, гэта сказаць, што гэта да на сённяшні дзень, таму што ён ужо існуе.
Дазвольце мне ісці наперад і выдаліць з каманда RM, як "a.out" -
і сказаць "выдаліць рэгулярны файл a.out"?
Гэта проста азначае ,, вы ўпэўненыя, што жадаеце выдаліць яго?
Я хачу сказаць, так.
А потым я збіраюся выдаліць "прывітанне", але не "hello.c."
Я збіраюся сказаць "так" у відавочным выглядзе, але "ў" дастаткова, як добра.
>> А цяпер звярніце ўвагу, калі я увядзіце ls-- які, нагадаем,
азначае list-- гэта спіс усіх файлы ў маёй тэчцы.
І на самай справе, калі я павялічыць , І паглядзіце на левай верхняй,
гэта пацвярджае, што тое, што у гэтай тэчцы, нават
хоць гэта пазначаныя як IDE50 тут і не месца для працы, гэта проста "hello.c."
Так што цяпер тут, калі я у "зрабіць прывітанне", Enter,
Цяпер я бачу значна больш каманду, але больш складаныя каманды, што адбываецца
каб быць карысным у бліжэйшыя тыдні.
І цяпер я магу сказаць, "./hello."
>> Такім чынам, давайце зробім кароткі агляд каманды некаторыя іншыя Linux.
Тады чаму б нам не зрабіць крок таму і рэальна зірнуць на C больш
Як правіла, пераход ад нуля З, а затым скласці з выразам
у першай задачы у С. Добра.
Так што я збіраюся ісці наперад і толькі чысты да маёй працоўнай вобласці Control-L толькі
трымаць экран акуратна.
Але гэта не мае ніякага функцыянальнага паўплываць інакш.
>> Нагадаем, што мы ўжо бачылі некалькі каманд цяпер.
Такім чынам, мы бачылі ляск, якія, як правіла вы не прыйдзецца выконваць уручную больш.
Мы замест гэтага выкарыстоўваць марку.
Але мы таксама бачылі, Ls, які паказвае спіс файлаў у маім каталогу.
А цяпер чаму there-- ёсць два Файлы цяпер, "прывітанне" і "hello.c."
Чаму зорка або Зорачка пасля "прывітанне"?
Што гэта азначае на аснове на тое, што мы бачылі на тыдзень адзін?
Што думаеш?
Што азначаюць зоркі?
>> МАРЫЯ: For-- праграмы "прывітанне"?
Дэвід малая: "Прывітанне *".
Так.
О, так?
О, выкананым.
Гэта дакладна.
Дык гэта азначае, што "прывітанне" з'яўляецца выкананым.
Так на самой справе, вось чаму Я магу зрабіць "./hello."
Добра.
Так што яшчэ я магу зрабіць тут?
Ну, аказваецца, што я магу Таксама ствараць каталогі.
Такім чынам, дазвольце мне ісці наперад і ствараць, напрыклад, "pset1" Каталог.
І праблема ўсталяваць параметры будзе ў вас зрабіць менавіта гэта,
так што вам не трэба памятаць сёння.
Але "MkDir pset1" здаецца не маюць ніякага ўплыву.
Але зноў, паведамленне пра памылку як правіла, добра.
Так што, калі я тыпу "LS" now-- ах, цяпер У мяне ёсць выкананы файл з імем
"прывітанне," З файл з імем "hello.c."
І тады Слэш, так казаць, што гэта азначае, з'яўляецца каталогам.
>> Так на самой справе, цяпер я хачу, каб адкрыць яго.
І я не двойчы пстрыкніце на ім, як у GUI, графічным асяроддзі.
Я замест сказаць "CD pset1."
Enter.
Нічога цікавага не здаецца, адбылося, за выключэннем маёй маленькай радку
here-- гэта спосаб у Linux нагадваць мне, дзе я знаходжуся, так, што папка адкрыта.
Гэта проста кажа мне відавочна у адрозненне ад графічна.
І калі я набіраю "Ls", чаму я бачу іншае падкажыце адразу, як вы думаеце,
калі я пералічыць змесціва pset1?
МАРЫЯ: Вы, напэўна, не ёсць што-небудзь у там.
Дэвід малая: Так.
Такім чынам, мы маем, відавочна, не стварылі нічога там
таму што я проста стварыў каталог.
Цяпер, калі я хацеў, каб стварыць для file-- Я, напрыклад, мог бы стварыць новы файл.
І тады я мог пайсці ў Захаваць і захавайце яго як,
як, "mario.c", калі вы робіце стандартны выпуск PSET аднаго.
А потым, як і любы Mac або ПК, проста абраць тэчку "pset1, Захаваць.
А цяпер файл пусты.
Але давайце павялічваць разоў на працягу секунды.
Давайце зробім Ls тут.
Цяпер мы бачым, "mario.c".
>> Так што некалькі іншых каманд, якія варта маючы на ​​ўвазе, на працягу time--
ясна, ці Control-L з'яўляецца тое, што я было ўдару; MkDir мы бачылі;
ГТ мы бачылі, як добра, што для выдалення або выдаленне файла.
Сцеражыцеся вы можаце also-- і калі вы паглядзіце на электронныя падручнікі, вы ГТ-ВЧ
з'яўляецца вельмі распаўсюджаным спосабам сказаць выдаліць тэчку, у якой рэчы ў ім.
Проста супер, супер асцярожныя.
-rf азначае рэкурсіўна выдаліць усе гэта
Вы спрабуеце выдаліць і сілком выдаліць яго.
Так рэкурсіўны сродкі, калі гэта тэчка з тэчка з тэчкай з тэчкай,
выдаліць усе з іх.
І сілком азначае нават не спытаеце мяне, так ці не, я ўпэўнены, што?
Так што гэта супер небяспечны шлях выдаленне шмат рэчаў хутка.
Але beware-- занадта часта робіць бясстрашны студэнт выпадкова выдаліць, скажам, PSET
Адзін з іх, напрыклад.
>> МАРЫЯ: А калі яны проста зрабіць -r, яны збіраюцца
каб спытаць іх аб кожным файле.
>> Дэвід малая: Які умерана раздражняе.
>> МАРЫЯ: Так.
>> Дэвід малая: Дык вось чаму так многія з нас, самастойна ўваходзіць,
знаходжуся ў звычку выкарыстоўваць -rf.
Але гэта небяспечна.
Так пакупнік, сцеражыся.
А потым мв гэта свайго роду цікава імя.
Так што гэта каманда перамяшчэння, якая адчувае сябе крыху дзіўна
таму што вы сапраўды можаце выкарыстоўваць яго для перамяшчаць файлы з аднаго месца ў іншае.
Напрыклад, выкажам здагадку, што я сапсаваў.
Выкажам здагадку, што я стварыў новы файл для PSET.
І я захаваў яго як "greedy.c."
Але выкажам здагадку, я выпадкова захаваць яго у IDE50-- так і ў самой маёй працоўнай
а не ў pset1.
>> Вы можаце бачыць, як шмат у верхнім левым куце.
Там гэта "greedy.c."
І ёсць некалькі рашэнняў.
Такім чынам, адна, я магу выкарыстоўваць супер зручна спосаб
проста перацягнуўшы яго.
І што будзе на самой справе выправіць гэтую праблему.
Але сёння, мы спрабуем глядзець на больш таемныя, але эфектыўныя спосабы
рабіць гэта.
Такім чынам, дазвольце мне ўзяць "LS" у pset1.
І я бачу толькі "mario.c."
Дазвольце мне ісці наперад і рабіць "CD ..".
Так кампакт зноў змяніць каталог.
".." Ці азначае, што, хоць?
Апошні раз я сказаў "CD pset1 "ісці ў pset1.
Таму, калі я кажу "CD ..", што я раблю?
У адваротным кірунку.
Так.
>> Дык гэта будзе так званы бацькоў.
Перайсці на адзін узровень уверх, як выхаду з тэчкі.
Так Enter.
І на самай справе, паглядзіце, што ён зрабіў.
Гэта кранула мяне проста ў працоўным прасторы, а не з ў pset1, які знаходзіцца ў працоўнай вобласці.
І зараз, калі я друкую "LS", ёсць цэлая куча рэчаў.
У ёсць "greedy.c".
Так што цяпер дазвольце мне выкарыстоўваць мв літаральна рухацца "greedy.c" у pset1.
І так шмат каманд Linux працаваць так жа, як гэта.
Яны не прымаюць ніякіх аргументаў або яны прымаюць адзін Аргумент, або яны ўзяць два каманднага радка
Аргументы і гэтак далей.
І ў гэтым выпадку, гэта рабіць тое, што літаральна
ён кажа, хоць succinctly-- рухацца greedy.c ў pset1.
Enter.
Нішто, здаецца, не адбудзецца.
Але калі я раблю Ls зноў, прагны няма.
А калі я "CD" pset1, Enter, а затым Ls зноў, цяпер ён знаходзіцца ў патрэбным месцы.
Як у баку, калі для некаторыя reason-- асабліва
калі ў вас ёсць перарывісты падключэння да сеткі
ці вы хадзіць Кампус з вечкам ноўтбука
зачынены, а затым адкрыць яго зноў і ваша працоўная прастора
здаецца некалькі з сінхранізацыі, не склала вялікай працы.
Проста перазагрузіце ваш браўзэр вокны, і ён павінен
ресинхронизация так, што левая файлавы браўзэр выглядае дакладна
як у акне тэрмінала.
Не хвалюйцеся.
Калі вы сумняваецеся, перазагрузіце старонку, так Пакуль вы захавалі файлы ўжо.
ДОБРА.
Так мв таксама можа быць выкарыстаны для перайменавання файлаў.
І давайце зірнем на гэта апошняя каманда тут.
Так suppose-- і гэта супер агульнага, таксама рана.
Некаторыя студэнты часам ствараюць файл называецца, давайце say--, што яшчэ адзін?
Як "WATER.C."
Так што я проста крычаць, для няма падстаў, ва ўсіх накрывак.
Але гэта не Правільнае назва для файла
калі толькі таму, што наша задача ўсталяваць Спецыфікацыя не сказаць вам,
каб захаваць файл як усе загалоўныя "WATER.C."
Замест гэтага, мы чакаем, "water.c" у ніжнім рэгістры.
І, на самай справе, гэта праблематычна, паколькі check50,
праграма вы збіраецеся сустрэцца ў задачы
ўсталяваць адзін, які аўтаматычна правярае правільнасць кода
будзе крычаць на вас, калі ён не можа знайсці "water.c" у ніжнім рэгістры.
>> Таму мне трэба, каб выправіць гэта.
Так шмат розных спосабаў зрабіць гэта, першы з якіх
будзе кантраляваць клік або пстрыкніце правай кнопкай мышы імя файла і проста змяніць Перайменаваць.
Усяго ў парадку, каб зрабіць гэта.
Але, зноў жа, сёння, давайце зрабіць яго крыху аматар.
Давайце выкарыстоўваць мв змяніць "WATER.C", каб "water.c."
Такім чынам, вы таксама можаце выкарыстоўваць першы аргумент перайменаваць яго на другі аргумент
калі другі аргумент не ў Тое, тэчка або імя каталога.
>> Добра.
І, нарэшце, трохі trick-- так што я знаходжуся ў Мой сайт каталога на дадзены момант.
Калі я хачу, каб патрапіць у PSET адной, Я, вядома, можаце ўвесці "CD pset1."
Але гэта так стомна тыпу "pset1" ці больш назвы файлаў або каталогаў
яшчэ.
Так вельмі часта ў Linux, тое, што Вы можаце зрабіць, гэта пачаць, набраўшы "PSE"
і проста сумна, ударыў Tab, і хай кампутар паказчык яго для вас.
Супер карысна, каб патрапіць у гэтую звычку.
Адзіная загвоздка ў тым, калі ў вас ёсць некалькі файлаў або тэчак, якія пачынаюцца
з літарай "р" ці "PS", вы, магчыма,
ўвесці яшчэ некалькі, перш чым кампутар ведае, што рабіць.
>> МАРЫЯ: Мы хацелі цэтлікі.
>> Дэвід малая: гэта зэканоміць шмат часу.
А таксама, як мы ўжо казалі ў лекцыі, вы можна пракручваць у гісторыі, уверх і ўніз,
знайсці нядаўна выкананы каманды, а таксама.
Добра.
Так што цяпер, давайце звернем нашу ўвагу таму ў простай праграме, прывітанне свет.
Такім чынам, мы сабралі ў гэтым дакладна.
А цяпер, чаму б нам не ўзяць погляд на тыпы дадзеных
а затым пераход ад некаторых адпаведныя блокі Скрэтч З
МАРЫЯ: Высокі.
Так што цяпер вы пачалі напісанне праграм на З,
мы збіраемся, каб пачаць гаварыць пра тыпы і зменных дадзеных.
Такім чынам, некаторыя тыпы дадзеных, якія хацеў бы ведаць, пачынаючы з сённяшняга дня
з'яўляюцца тыя, якія вылучаныя сінім колерам.
Такім чынам, мы маем INT-першае, якая выступае за цэлае.
І, што мае цэлых, як вы можа мець guessed-- так 1, 2, 3,
і любыя іншыя цэлыя лікі што вы можаце думаць.
>> Дэвід малая: А таксама адмоўны.
>> МАРЫЯ: А таксама адмоўныя, так.
І 0.
Тады ў нас ёсць паплаўкі, якія плавае коскі.
Так вось усё рэальныя лічбы якія маюць дзесятковай кропкі.
Так 5,0, 5,2, і яшчэ больш лічбы пасля дзесятковай кропкі,
а таксама, а таксама адмоўныя.
Тады ў нас ёсць сімвал, які з'яўляецца сімвалам.
Таму я думаю, мы гаварылі пра гэта ў лекцыі сёння.
Але ў нас ёсць лісты, за example-- A, B, C--, якія могуць быць захаваны як сімвал.
Але тады ў нас ёсць значна больш сімвалаў якія могуць быць захаваны як сімвал.
А тыя, захоўваюцца ў выглядзе ASCII.
>> І тады ў нас ёсць лагічны, якія Булевы.
А тыя, ацаніць, Праўда ці Ілжывыя або 1 і 0, адпаведна.
Дэвід малая: І нагадаем, што BOOL прыходзіць з бібліятэкі CS50.
Так што гэта не убудаваны ў З, але гэта супер карысна
мець паняцце сапраўднае і ілжывае.
І нават калі вы можа think-- пацешны факт.
Лагічнае значэнне тэхнічна неабходны колькі бітаў, сапраўды, прадстаўляць Праўда супраць няправільна?
Колькі бітаў вы думаеце, Вы павінны былі б, максімальна?
Так, толькі адзін.
Так што атрымліваецца, што C не магу даць вам толькі адзін біт.
Найменшая адзінка вымярэння Вы можаце атрымаць восем.
Так што гэта крыху марнатраўна яны вы выкарыстоўваючы ўвесь байт, ці васьмі бітаў,
прадстаўляць Праўда ці Хлусня.
Але гэта толькі так, як гэта рэалізаваны ў C бібліятэкай CS50.
Марыя: А потым тыя, якія мы не буду казаць аб так шырока
Права now-- двойчы, гэта для вялікіх паплаўкоў.
Доўгія доўгія і кароткія Таксама для цэлых лікаў.
Дэвід малая: Сапраўды.
У хакерскай выдання PSET адной, мы на самай справе выкарыстаць доўгія доўга.
Але для стандартнай версіі, ён не павінен быць неабходным.
МАРЫЯ: Прахладны.
ДОБРА.
Так operators-- вы павінны быць верагодна, знаёмыя з большасцю з іх.
Даданне +; адніманне, -.
Для множання, мы маем *.
Так што не Х, што мы звычайна выкарыстоўваем.
Аддзел, у нас ёсць зваротны слэш.
І па модулю наш апошні аператар, мы будзем казаць аб прама цяпер.
Гэта аператар, які дазваляе ўзяць астатак ад дзялення.
Так што, калі ў нас ёсць 4% 2, 4 дзеліцца на 2, 2 з астаткам 0.
Так 4% 2 0.
4% 3 Студзень.
4% 4 Мая, як вы ўжо здагадаліся, можа.
І памятаць пры выкарыстанні ўсіх гэтых аператарам выкарыстоўваць правілы PEMDAS.
>> Дэвід малая: Так ясна, калі вы зрабіць 4% 2, чаму гэта 0, дакладна?
>> МАРЫЯ: Таму што 4 дзеліцца на 2 лютага з астаткам 0.
Так модулю дае нам, што рэшта як супрацьлегласць выніку падзелу.
Дэвід малая: І на самай справе, тое, што мы знойдзем гэта карысна
для, што ў некаторых праблем гэта не абавязкова адно,
калі вы хочаце мець Эфект абмяжоўваючы сябе
у дыяпазоне лікаў як 0 праз нешта,
Вы можаце выкарыстоўваць па модулю, каб абгарнуць вакол раней, чым як 2 млрд
або 4 млрд значэнне, мы казалі ў лекцыі.
>> МАРЫЯ: Так.
І нават у "прагныя" мы маглі б.
Дэвід малая: Так, у Праблема ўсталяваць адзін, а таксама.
МАРЫЯ: Так, прыемна.
Дэвід малая: Добра намёк.
МАРЫЯ: Выбачайце.
Лагічнае expressions-- так для лагічных аператараў,
мы будзем казаць пра ўсё з іх, якія вы бачыце тут.
Так што цяпер у нас ёсць два роўныя знакі пазначаны для роўных.
Так што тыя для параўнання.
Да гэтага часу мы бачылі толькі адзін складае знак.
Вось калі мы прызначаем значэнне зменнай.
Так што, калі мы бачылі Int N = 5, то мы прызначылі 5 да зменнай п.
Але калі мы хочам выкарыстоўваць == для параўнанне, мы можам праверыць, калі п == 5.
А калі н == 5, тое, што гэта праўда.
>> Так лагічныя аператары дазволіць нам, у асноўным,
ацаніць лагічнае выразы ў Праўда ці Хлусня.
Так што не equals-- ў нас ёсць клічнік, а роўна.
Такім чынам, мы маглі таксама праверыць, калі п ня роўнае 5-- так н! = 5.
Менш, менш або роўна, больш, больш або роўна,
а то ў нас лагічны І і лагічнае АБО.
А тыя, дазваляюць ацаніць некалькі лагічных выразаў разам
у асноўным сабрацца разам, як адно цэлае лагічны выраз.
Так што, калі мы хочам, каб знайсці нумар, кажуць, што больш, чым 5, але менш як 15
у той жа час, мы б выкарыстоўваць лагічны аператар, каб убачыць, калі п
больш, чым 5 && н менш за 15.
Дэвід малая: І вось, занадта, гэта сапраўды лёгка
рана, каб выпадкова выкарыстоўваць толькі адзін Ампэрсанд
або адзін вертыкальная паласа.
І, спадзяюся, кампілятар будзе крычаць на вас, таму што яны на самой справе
маюць вельмі рознае значэнне.
Для тых, каму цікава, яны для бітавых аперацый,
якія працуюць на асобных бітаў.
Але вы хочаце, пару з іх тут.
І супер важна, што Першы, знак роўнасці,
які з'яўляецца роўнасць аператар у у адрозненне ад аператара прысвойвання.
>> МАРЫЯ: А вертыкальная бар размешчаны паміж Выдаліць і вяртання.
Дэвід малая: Так.
На тыповай амерыканскай клавіятуры.
>> МАРЫЯ: Так.
Такім чынам, давайце скакаць прама ў ўмоўныя аператары.
У пустым, вы, ўжо бачылі, напэўна,
калі заявы, якія дазваляюць вам праверыць, калі нешта дакладна, то
зрабіць нешта яшчэ.
Такім чынам, вы, магчыма, хацелі каб праверыць, калі ваш спрайт
дакранаючыся некаторых іншых спрайт або мяжа экрана.
І тады вы, магчыма, хацелі, каб скончыць гульню ці зрабіць нешта яшчэ.
Так сінтаксісу, што «Калі (ўмова)."
Так што, калі ваш спрайт дакранаючыся нешта, то не знаходзіцца ўсярэдзіне фігурных дужак.
>> Тады мы мець, калі-інакш заявы.
Астатняе дазваляе нам рабіць нешта калі ўмова, што мы
праверыць у пачатку гэта не так.
Так што, калі спрайт дакранаючыся мяжы гэтага яшчэ рабіць нешта яшчэ.
Так у адваротным выпадку зрабіць што-то яшчэ.
Тады ў нас ёсць кароткі прыклад для гэтага.
Так што, калі (military_time <12), мы хачу PRINTF "Добрай раніцы!"
Інакш мы збіраемся Printf "Добры вечар!"
Просты прыклад.
>> Дэвід малая: Добра.
>> МАРЫЯ: Прахладны.
Так што цяпер у нас ёсць перамыкач заявы.
Перамыкач заявы наогул можа дазваляюць нам зрабіць шмат той жа самай рэчы
што мы толькі што гаварылі о, калі з заявамі.
Напрыклад, прама цяпер у нас ёсць Агульная форма перамыкача заяву
што дазваляе нам прымаць пераменная называецца п
і параўнаць яе з вялікай колькасцю розныя значэнні, якую мы тут
назваў constant1, constant2.
У нас можа быць шмат больш.
А тыя, якія называюць выпадкі.
>> Так што, калі ў нас ёсць перамыкач statement-- і гэта працуе
толькі для integers-- ў нас ёсць пераменная у дадзеным выпадку гэта п.
Калі зменная п роўна constant1, мы
будзе выконваць некаторыя фрагмент кода ці нешта, што мы хочам зрабіць.
І тады мы б зламаць.
Такім чынам, разрыў азначае, што перамыкач заяву
будзе спыніць выкананне калі п роўная constant1,
а затым ваша праграма будзе працягвацца.
Гэта будзе выхаду з перайсці заяву і яно будзе
працягваць рабіць нешта яшчэ.
>> Калі, аднак, п ня роўна constant1, то справа для constant2
будуць правераны.
Так, калі п роўна constant2, што іншыя фрагмент кода будзе выкананы.
А потым зламаю калі роўная ёй.
І тады мы можам мець also-- ня абавязкова, though-- варыянт па змаўчанні,
што адбудзецца, калі п ня роўна любы з выпадкаў, што вы пералічылі.
І ў выпадку, па змаўчанні, мы таксама не патрэбны перапынак абавязкова
таму што камутатар заява будзе ведаць, што неабходна спыніць пасля змаўчанні
выпадку, калі гэта так.
>> Дэвід малая: Але стылістычна, мы заўсёды ставім яго там.
>> МАРЫЯ: Так.
>> Дэвід малая: Так.
Так, асабліва калі пачыналі, асабліва калі сярод тых, хто менш
камфортна, я б асабіста проста рэкамендуем прытрымлівацца IFS
і вярнуліся на Радзіму IFS-і калі-інакш-калі-вярнуліся на Радзіму і г.д., калі толькі
таму што яны трохі больш простым.
Гэта добры аптымізацыя, або часам нават эстэтычна гэта
робіць код больш чытэльным.
І на самай справе, верагодна, сярэдзіне семестра мы ўбачым праблему
ўсталяваць, дзе ён проста выглядае лепш і лягчэй чытаць на чалавека
з дапамогай перамыкача заяву.
Але не турбуйцеся аб чапляючыся за гэта занадта рана.
>> МАРЫЯ: Так.
Калі ў вас ёсць шмат калі заявы, гэта можа быць проста не вельмі чытаны.
Гэта можа быць не вельмі хутка для вас, каб прайсці праз гэта.
Так справаздачнасць пераключэння можа быць вельмі карысна, як добра.
А таксама, ці не remember-- ня забудзьцеся паставіць перапынкі ў там.
>> Дэвід малая: Ці не памятаць пра гэта.
>> МАРЫЯ: Таму што тады вы можа зваліцца праз ад аднаго выпадку да іншага.
Такім чынам, давайце казаць, што выпадак constant1 не маюць аб брэйк ў ім.
Тады мы маглі б праваліцца ўнутры выпадак constant2.
І мы не хочам, каб гэта зрабіць, калі мы ўжо дасягнулі выпадак constant1
і ён роўны п.
>> Так, напрыклад, калі мы маем зменную п, які змяшчае нумар класа,
і мы хочам, каб паглядзець, што клас is-- калі п роўна 50,
мы збіраемся надрукаваць "CS50 з'яўляецца Ўвядзенне ў Computer Science I. "
Тады мы ідзем, каб зламацца.
І гэта ўсё.
Калі, аднак, п роўна 51, мы збіраемся
друкаваць "CS51 з'яўляецца ўкараненне інфарматыцы II ".
Затым, зноў жа, мы збіраемся зламаць.
Аднак, калі тое пакладзем 124, 61, любы іншы нумар, які вы маглі б думаць пра,
ці праграма не будзе прызнаць, што.
Так што збіраецца сказаць: «Прабачце, я не знаёмыя з гэтым класам ".
І гэта будзе перапынак.
Дэвід малая: Такім чынам, вы можаце рэальна ўбачыць ПЧ, інакш, калі яшчэ ідэя тут.
Гэта проста розныя сінтаксіс выказваючы тую ж самую ідэю.
>> МАРЫЯ: Точно.
Цяпер у нас ёсць патройныя аператараў.
Так патройныя аператары тры parts-- стан,
нешта рабіць, калі ўмова праўдзіва,
а затым нешта рабіць калі ўмова фальшыва.
Такім чынам, вы бачыце, у асноўным, сінтаксіс, што тут.
У нас ёсць знак пытання, і тое, што the-- мы называем гэта?
Дэвід малая: двукроп'е.
МАРЫЯ: Калон.
Дзякуй.
Выбачайце.
Такім чынам, давайце паглядзім на наш прыклад з убачыць, калі мы можам зразумець this--
class_num == 50.
Дык вось, мы бачым наш аператар лагічнае == які параўноўвае зменную class_num
50.
Так class_num захоўвае цэлы лік.
І калі гэтага ліку роўная 50, то мы
збіраецеся захоўваць "Дэвід малая" ўнутры радка прафесара.
Калі нумар класа не раўняцца 50, "Давід, ня малая"
будзе прафесар.
>> Дэвід малая: Дзякуй.
І так гэта, здаецца, адпавядае што, вы скажаце, на першы погляд?
>> МАРЫЯ: Мне здаецца, як калі-інакш заявы.
>> Дэвід малая: Так.
І на самай справе, гэта свайго роду прыгожая адзін лайнер,
так бы мовіць, для рэалізацыі менавіта логіка, калі-інакш
але рабіць усё, што ў адзін крок.
>> МАРЫЯ: Точно.
Так.
Так што, калі-інакш заявы могуць займаюць шмат месца.
Яны могуць быць занадта доўгім для што-то жа проста, як гэта.
Такім чынам, гэта можа быць вельмі лаканічным і вельмі прыемна.
Так што цяпер мы ідзем у гледзячы на выкананне нешта зноў і зноў,
таму праверка для стан некалькі разоў
а затым працягвае рабіць тое у той час як ўмова праўдзіва.
Такім чынам, гэта прыводзіць нас У той час як прыемна ў завесах.
>> Злева, у нас ёсць наш першы цыкл, а.
Такім чынам, хоць што-то дакладна, зрабіць што-то зноў і зноў.
Таму пераканайцеся, што заўважыце, што нашы стан тут правяраюцца на вяршыні.
У той час як з нашым другім loop-- мы называем што рабіць-то час loop-- мы робім нешта,
Затым мы правяраем, стан.
І калі гэтага ўмовы па-ранейшаму дакладна,
мы вернемся і зрабіць гэта зноў.
Такім чынам, галоўнае адрозненне, дзе ўмова правяраецца для.
І код ніколі не можа быць выконваецца, калі ўмова не
дакладна з той час цыклу.
У той час як з зрабі час цыкл, у нас ёсць код
што заўсёды выконваецца па меншай меры адзін раз.
А потым, пакуль ўмова па-ранейшаму дакладна,
мы можам вярнуцца назад і паўтараць зноў ўнутры.
Дык чаму ж вы думаеце, мы хацелі б выкарыстоўваць Зрабі той час як цыкл на працягу час цыкла?
Права.
Так што, калі мы хочам, каб заахвоціць Карыстальнік на працягу некаторага роду ўваход,
калі мы хочам, каб папрасіць іх ўвесці сваё імя,
мы хочам, каб, па меншай меры папрасіць іх адзін раз.
І калі яны увядзіце што імя, мы не
збіраецца прасіць іх зноў таму што мы ўжо ведаем гэта.
Але калі яны не ўваходзяць іх імя, або, калі яны
увядзіце што-небудзь відавочна, не імя,
мы ўсё яшчэ хочам, каб працягнуць з просьбай на працягу іх імя.
>> Дэвід малая: І ў лекцыі ў нас быў адзін як гэта з станоўчай атрымаць Int
Напрыклад, там, дзе няма нічога, каб праверыць спачатку, таму што ў вас няма нават
атрымаў ліст Int.
Такім чынам, мы хочам зрабіць this-- атрымаць Int ад user--
а затым праверыць яго, магчыма, зноў і зноў, і зноў.
>> МАРЫЯ: Точно.
Для loops-- OK.
Для завесы могуць дазволіць нам рабіць амаль дакладна такая ж рэч, як добра.
Гэта на самай справе сапраўды такі ж рэч.
Такім чынам, няма нічога, што вы можаце зрабіць з завес для
што вы не маглі б рабіць з у той час як завесы.
Але для завес можа здацца трохі трохі больш ўскладняецца сінтаксічна
таму што яны маюць тры часткі, што ўнутры
было да проста стан з у той час як завесы.
Такім чынам, першая частка, што вы мора, крайні злева, у нас ёсць "INT гномы = 0."
Так што гэта, дзе мы ініцыялізаваць зменную.
>> Тады ў нас ёсць коскі і "карлікі <7."
Так што гэта, дзе з стан на самай справе.
Так што тое, што мы б змясціць толькі ў той час loop--
"у той час як гномы <7."
Тут, які ідзе ў Сярэдзіна наш цыкл.
Такім чынам, "dwaves <7."
І тады наша апошняя частка "гномы ++," які з'яўляецца, дзе мы абнаўляем нашу зменную.
Так важнай рэчы каб зразумець, што гэта
будзе ісці праз гэта цыкл сем разоў і выканаць сем разоў.
Такім чынам, мы маем сем гномы, і ўсе яны
хачу сказаць, "Я тут, каб дапамагчы вам, Беласнежка "
таму што яны гатовыя каб дапамагчы Беласнежку.
>> З, а завесы, мы б зрабілі ініцыялізацыя і абнаўленне
не ўнутры стану, зноў, але альбо да, альбо ўнутры час цыклу
каб пераканацца, што з-за we-- мы заўсёды павінны тыя часткі.
Такім чынам, каб пераканацца, што ў нас ёсць ім, мы б да гэтага часу дадаў іх
, Проста не ў круглых дужках.
>> Дэвід малая: І так гэта выглядае like-- У лекцыі, напрыклад,
Я амаль заўсёды выкарыстоўваюць, як, я і п і даволі сумныя зменныя.
Падобна на тое, што вы можаце выкарыстоўваць больш спрытна імя зменных, занадта.
>> МАРЫЯ: Так, гэта на самай справе вельмі прыемна выкарыстоўваць трохі больш апісальныя зменныя
таму што, асабліва калі хто-то яшчэ чытаць вашу code-- можа быць, вы грэйдэр
або калі вы супрацоўнічае з somebody--
Вы хочаце, каб пераканацца, што яны зразумець, што вы робіце.
>> ДОБРА.
Так што гэта нешта вельмі funky-- цыкл ўнутры цыкла для.
Я не ведаю, калі мы бачылі гэта раней.
Напэўна, не.
Але мы можам на самай справе маюць this-- так завесы замест завес.
Дык хто-небудзь, можа быць, хочаце, каб хадзіць мне праз што тут адбываецца?
Дэвід малая: Я вазьму ўдар.
МАРЫЯ: Прахладны.
Дэвід малая: ОК.
Так, spoiler-- мы хочам надрукаваць матэрыял гэта ў ніжнім правым куце
ёсць.
>> МАРЫЯ: Дакладна.
Так так.
>> Дэвід малая: Такім чынам, мы проста пакласці, што прыклад вываду ёсць.
Так што я магу зрабіць выснову з верхні цыкл, які вы
перабору радкоў у знешні контур, так бы мовіць.
І вы перабору калоны з самага ўнутранага цыклу.
І інтуітыўна, гэты варта спадзявацца, мае сэнс
таму што па сваёй прыродзе кожная праграма, што мы бачылі
да, Printf, які з'яўляецца Функцыя мы выкарыстоўваем, у выніку,
мае магчымасць друкаваць матэрыял , Па сутнасці, радок за радком.
Маўляў, як толькі вы выводзіцца новая лінія, ёсць
няма падваення назад і нешта раздрукаваць вышэй на экране, па меншай меры,
не выкарыстоўваючы Printf, як гэта.
>> І так у гэтай сувязі, што робіць адчуванне, што знешні контур
варта мець на ўвазе радкоў бо для кожнага дадзеная радок,
Вы будзеце жадаць, каб раздрукаваць XXXXX, а затым
перайсці да наступнай радку, XXXXX.
Так радкоў у першую чаргу.
І затым на працягу кожнага шэраг, друку слупкоў.
Калі вы спрабавалі зрабіць гэта ў насупраць, ён, верагодна, не
такім, як вы маюць намер.
>> МАРЫЯ: Так.
Мы проста не маглі вярнуцца да папярэдняя радок з Printf.
>> Дэвід малая: І што цікава за сёння пагаварыць пра рамках,
на самай справе, тое, што шэраг з'яўляецца INT які абвешчаны ў верхняй завесы.
Але звярніце ўвагу, што да гэтага часу ўнутры, так бы мовіць,
фігурныя дужкі, што неадкладна варта,
хоць гэта тэхнічна не у гэтых фігурных дужках.
Так радок у прастору для Сукупнасць фрагменце кода,
як унутры вонкавай завесы для і ўнутры ўнутраны цыкл.
Але ў адрозненне ад, дзе гэта слупок ў рамках?
Пераменная калонка?
Так, толькі ў ўнутры завесы.
І гэта нармальна, таму што мы не адкрыць гэта за межамі яго ў фігурныя дужкі.
Усё, што мы робім гэта раздрукаваць новы лінія ў самым канцы там.
Так што на самай справе ўсё ў парадку.
>> Такім чынам, гэта мае эфект, як ён выглядае, рабіць тры шэрагу і чатыры калонкі.
>> МАРЫЯ: Дакладна.
Такім чынам, спачатку мы ідзем праз наш першы шэраг.
І толькі ў нашай першай радку, мы робім чатыры калоны ўнутры першага радка.
Такім чынам, мы раздрукаваць чатыры іксы.
І тады мы можам выйсці для цыклу, так як мы ўжо надрукаваныя чатыры іксы.
І мы друкуем новы радок.
І тады мы ідзем праз Той жа самы працэс на працягу яшчэ двух радкоў
каб у агульнай складанасці тры.
>> Дэвід малая: І варта адзначыць, што гэта проста артэфакт шрыфта, то
што выхад ўзору здаюцца значна вышэй,
як быццам там больш радкоў, чым слупкоў.
Але гэта толькі таму, што Х гэта вышэй, чым у шырыню.
Гэта ўсё, што там адбываецца, плюс прабел паміж радкамі.
>> МАРЫЯ: Дакладна.
Прахладны.
Дэвід малая: Добра.
Такім чынам, хуткі погляд на праблемы ўсталюйце адзін, прымаць якія-небудзь пытанні, а затым адкласці?
Добра.
Такім чынам, у адзін праблема ўсталяваць, ёсць тры Асноўнымі праблемамі, у канчатковым рахунку ,.
Але спачатку, вы знойдзеце што ўсталяваць праблема
Спецыфікацыя, як і многіх з іх psets гэтай восенню, будзе хадзіць вас
праз некалькі размінкавы практыкаванняў, пазначыць вам некалькі рэсурсаў
што вы можаце ці ня ўжо бачылі.
Напрыклад, CS50 мае набор шорты,
якія з'яўляюцца кароткія відэа, не ў адрозненне ад гэтага, але, што
вельмі тэма specific-- можа быць, пяць хвілін,
10 хвілін у даўжыню на завесах ці на ўмовах або на алгарытмах
ці пазней больш дадатковыя тэмы, а таксама.
І мы, як правіла ўстаўляць тыя, у задачы
наборы, так што студэнты ёсць рэсурс, з дапамогай якога
разгледзець матэрыял, які можа мець ўжо прыйшлі ў лекцыі або падзелу.
Але гэты шлях, гэта больш мэтанакіраванай і больш на кончыках пальцаў.
>> Мы таксама, як правіла, для ўбудавання ў задачы ўсталёўвае рэчы, званыя пакрокавыя.
Такім чынам, практычна ўсе прыклады, якія я раблю у лекцыі, на сцэне тут, мы таксама
расстралялі на камеру ў садзейнічаць больш павольней,
больш інтымны праходжанне мной на мой ноўтбук з гэтага кода, радок за радком
так што ў класе, мы будзем часта бегла тое ці кагосьці
будзе ўстаўляць з адказаць на пытанне.
Але гэта не абавязкова апускацца у для ўсіх у аўдыторыі.
Такім чынам, вы знойдзеце код пакрокавыя кіраўніцтва для большасці з прыкладаў
што мы робім тут, у лекцыі, так што вы можа прайсці праз гэта ў сваім уласным тэмпе
і перамоткі назад або наперад або прапусціць наогул, калі вы хацелі б.
>> Там часта некалькі размінка пытанні, якія
прашу вас разабрацца ў узмацніць гэты матэрыял
і пераканайцеся, што вы зручныя, перш чым Вы пераходзіце з астатняй PSET.
І тады, вядома, ёсць сама PSET.
І адна з рэчаў, мы цалкам свядома
зрабіць у CS50 амаль кожны нецікава або інтэлектуальна нецікавым
механічная крок, які Вы, магчыма, прыйдзецца зрабіць
амаль заўсёды вельмі добра дакументаваны.
На працягу тэрміну, мы будзем пачынаюць задаваць рытарычныя пытанні больш
як памятаю, як гэта зрабіць, ці што?
Але ў цэлым, вы знойдзеце што праблема наборы атрымаеце вас
праз механікі пра нешта, так што
цікавыя інтэлектуальныя выклікі, у канчатковым рахунку, застаецца вам студэнта.
>> З улікам сказанага, Zamyla, якім мы працягваў на ўвазе сёння ў лекцыі,
з'яўляецца адным з нашых даўніх супрацоўнікаў член, які таксама мае пакрокавыя кіраўніцтва
на канкрэтных праблемах, такіх як Марыё Pset і прагны, хоць і не паліваць ў гэтым годзе.
І гэта ў тыя пакрокавыя, што яна часта
прапануе некаторыя парады і рэкамендацыі для як паступіць, ніколі не кажу вам,
менавіта тое, што трэба рабіць, але rather-- як стан,
калі вы will-- дае вам па меншай меры, пара ідэй, так што да вас,
У канчатковым рахунку, каб вырашыць, як падысці да іх.
>> МАРЫЯ: накшталт як высокі ўзровень разуменне таго, што логіка
мы просім вас зрабіць.
>> Дэвід малая: Дакладна.
І на самай справе, Zamyla-х пакрокавыя прызначаныя
адказаць на часта задаюць пытанне пра тое, дзе
я пачаў, асабліва калі гэтыя доўгія тэхнічныя характарыстыкі
крыху складанай улічваючы ўвесь тэкст і вобразы, якія яны маюць у іх.
>> Так water.c, вы знойдзеце пасля таго як вы завяршылі яго,
на самай справе адносна простая.
Абсалютна куча з вас збіраецца стукнуць
Вашы галавой аб сцяну, спрабуючы каб высветліць, чаму гэта не кампіляцыі
або чаму ён не працуе правільна.
Але як толькі вы скончыце з ім і як толькі вы
правёў некаторы час змагаўся з любым з памылак, якія вы маглі б мець,
Вы знойдзеце, што гэта вельмі кароткая праграма.
Гэта можа быць зроблена на працягу некалькіх радкоў кода, большасць з якіх
мы бачылі тут, у лекцыі ўжо пры вы сабраць правільныя блокі.
>> І, як мы мяркуем, тут, гэта будзе спытаць
паказаць, колькі хвілін хтосьці прымае душ на тэрыторыі кампуса.
Мы паказваем на праблемы ўсталяваць хуткасць патоку вады
у, як, душам нізкага расходу галава, гэтак жа, як у кліпе Seinfeld
мы бачылі ўчора або наадварот іх.
І тады вы проста павінны каб зрабіць трохі матэматыкі,
really-- арыфметыку з дапамогай C сказаць нам, як многія, прыкладна, бутэлькі вады
што эквівалентна, калі мы прымаючы н-хвілінны душ.
>> Цяпер, у mario.c, гэта будзе быць трохі даўжэй праграмы.
Ён па-ранейшаму не будзе так доўга.
Усяго некалькі радкоў даўжэй water.c.
Але гэта будзе магчымасць узнавіць старую школу Марыё
Піраміда з Super Mario Браты ці некаторыя наступныя на.
Гэта не будзе выглядаць, як прыгажэй ці як маляўнічыя, як, што адзін там.
Мы проста збіраемся выкарыстоўваць маленькія хэштэг як у нас тут, на экране
выкарыстоўваючы тэкст ASCII.
Але гэта будзе прыблізна тую ж ідэю.
І гэта збіраецца быць ажыццяўляць якія на першы погляд
здаецца даволі проста simple-- надрукаваць просты піраміды.
Але ёсць пара характарыстыкі тут цікавыя.
Звярніце ўвагу, што ў крайнім правым краі піраміда на самай справе мае шырыню два.
Так што дзве роўныя вышыня калоны, якія
робіць яго запатрабуе трохі трохі думкі, каб зрабіць
што вы атрымаеце, што менавіта права, а у адрозненне ад проста выдатна вуглом
лінія.
Так што гэта крыху кутняга выпадку але адпавядае рэальнаму гульню.
>> І гэта таксама спачатку невідавочным погляд, як друкаваць прабелы.
Так што, калі я гляджу на Прыклад вываду here--
і гэта таксама ў spec-- гэта выгляд выглядае як прастакутнік,
а дыяганалі прастакутнік адсеклі,
і гэта толькі прабелы, так бы мовіць.
І так часта задаваных Пытанне тут заўсёды, добра,
як я перамясціць хэштэг на правы?
Або, як я раздрукаваць прабелы?
І гэта на самай справе прасцей чым большасць студэнтаў думаць.
Дакладна?
Вы можаце наблізіць яго візуальна, проста націснуўшы прабел адзін ці два разы
ці тры разы.
>> І нават тое, што з Printf мы амаль заўсёды раздрукаваць радок або Int
або слова, як "прывітанне, Свет "або серыя слоў,
Вы таксама можаце проста раздрукаваць цытата, прастору, канец цытаты.
І што будзе на самой справе даць Вы прабел існуе.
Так што майце гэта на ўвазе і ня overthink гэта.
Вы сапраўды павінны вырашыць, радок за радком па радку,
не ў адрозненне ад вашага Напрыклад, Хвіліну таму, як многія з тых,
Стоўбцы павінны прабелы і колькі з іх павінна быць Hashtags.
Гэта зойме трохі часу, але гэта у канчатковым рахунку, лагічная галаваломка ў духу.
>> МАРЫЯ: Так.
Але логіка збіраецца радок за радком будзе вельмі карысна тут.
Дэвід малая: Так.
Я думаю, што прыклад кода вы gave-- нават хоць гэта не было поўнай праграме.
Вы ўсё яшчэ павінны INT і асноўны сілы і #include stdio.h,
шмат матэрыялу з лекцыі.
Але будаўнічыя блокі здаецца, каб быць там.
І тады, нарэшце, нешта трохі больш алгарытмічны.
Так што атрымліваецца, што любы час перайсці ў CVS або любы зручны магазін
і хто-то ўручае вам на касір рахунку або манеты, як змяненне,
Аказваецца, што яны, людзі, ці не ведаюць, што яны гэта ці не,
Верагодна, вы карыстаецеся тое, што называецца прагны алгарытм,
у выніку чаго, калі вы запазычылі, скажам, $ 21 ў змене, таму што па некаторых прычынах
Вы купілі нешта вельмі недарагі з вельмі вялікі кошт у CVS,
гэта было б сапраўды раздражняе, калі касір даў вам 21 сінглаў, або, горш
Тым не менш, у цэлым шмат манет.
Хутчэй за ўсё, тое, што разумны чалавек верагодна, зрабіць гэта яны збіраюцца
каб захапіць $ 20, а затым $ 1-рахунак, і ўручыць вам усяго два рахунку ў гэтым выпадку.
МАРЫЯ: Так яны імкнуцца звесці да мінімуму змены, якія яны даюць вам назад.
Дэвід малая: Дакладна.
І тое ж самае справу з манетамі, а таксама.
Калі вы запазычылі, скажам, $ 0,50, спадзяюся, вы не хочаце 50 капейкі.
Вы замест гэтага хочаце два кварталы, напрыклад.
Цяпер, гэта робіць выказаць здагадку што касір
дастаткова кожнай дэнамінацыі, якія ён ці яна, магчыма, захочаце, каб даць вам.
Але мы дазваляюць выказаць здагадку, столькі ў задачы.
І мэта, у канчатковым рахунку, каб рэалізаваць у C код прагны алгарытм.
Такім чынам, карыстальнік можа ўвесці, колькі
змяніць ён ці яна абавязаны з доларамі і цэнтаў, свайго роду плавае кропкай
Значэнне мусіць.
І тады вы павінны зрабіць матэматыку і высветліць алгарытмічных, ну,
колькі манет я магу даць Вы мінімальна даць вам
менавіта такая колькасць зменаў.
Але там будзе Некалькі Хітрасць тут, праўда?
Як ёсць уся недакладнасць пытанне.
МАРЫЯ: Точно.
Так з якая плавае кропкай значэння маюць хібнасць.
Хіба мы гаворым пра гэта ў лекцыі сёння?
>> Дэвід малая: Мы зрабілі апошні раз у лекцыі.
Мы гаварылі аб недакладнасці.
І вы не хочаце, каб падмануць карыстальніка пра тое, як шмат змен ён ці яна павінен.
І таму мінанне ў праблема ўсталяваць параметры,
падумаць, у канчатковым рахунку, каб як вы можаце змякчыць тыя недакладнасць
Памылкі, патэнцыйна.
Гэта можна пазбегнуць, вядома, для ўваходы, мы гаворым пра.
І на самай справе, pennies-- можа быць, мы адкласці да Zamyla,
Я думаю, што для трукаў там.
Так у канчатковым рахунку, вы будзеце знайсці прагрэсаванне праблем на гэтым тыдні,
першы з якіх даволі невялікі, затым сярэдні, затым трохі больш.
Але ўсе яны выкарыстоўваюць будынка блокі з гэтага на мінулым тыдні,
з гэтага supersection, Праблема ўсталяваць параметры
ставіць вас на незлічоных рэсурсаў.
Але ўсё-ткі, калі наогул з усіх сіл, асабліва сярод тых, менш камфортна
без папярэдняга фоне, прыйсці да офіснай гадзін
у панядзелак і аўторак і Сераду і чацвер.
Перайсці да CS50 Абмеркаваць дапамогай Сайт Курсу,
праз які вы можаце мець зносіны з персаналам і аднакурснікаў.
>> Але ў канчатковым рахунку, я думаю, што Лепшы савет, проста рана.
Гэта не выгляд класе, што вы павінны пачынаць psets ў сераду
ноч, ці яшчэ горш у чацвер вечарам.
>> МАРЫЯ: Мой лепшы савет каб пачалі ў панядзелак.
Дэвід малая: панядзелак.
Так што, калі вы яшчэ не пачалі already-- няма.
Але нават калі не панядзелак, то ў аўторак.
Чым раней, тым лепш.
І гэта прычына, па якой Вядома ёсць так шмат пазнейшых дзён
каб даць вам крыху псіхалагічны ціск
каб пачаць раней, але да гэтага часу хай рэчы слізгацення, калі рэчы заняць больш часу,
чым вы чакаеце.
>> МАРЫЯ: А вы хочаце, каб зрабіць выкарыстанне Прыёмныя гадзіны столькі, колькі вы можаце таксама.
>> Дэвід малая: Ёсць пытанні?
Добра.
Ну, чаму б нам не адкласці тут?