[Мусиц плаиинг] Давид Малан: Здраво свима. Ово је ЦС50 је суперсецтион. Ассигнед Секције неће старт за још једну недељу. И тако данас, овде сам се-- МАРИЈА: Марија. Давид Малан: --то ствари Погледајмо проблема сет једну, курс је Прве недеље материјала, да те оријентисан са ЦС50 ИДЕ, мало Линук оперативни систем који је ради на ИДЕ, као и Погледајмо неке од транзиције од нуле до Ц водећих до проблема поставити један. Дакле, без даљег одлагања, у проблему сет један, ти ћеш бити представио ЦС50 ИДЕ, која ово програмирање веб-басед окружење које користимо како да пишу програме. То је дизајниран да изгледају веома подсећа типичног рачунара Систем ради функционалног Систем се зове Линук. Али то је у тзв облак, што значи да сви у разреду стварно има његов или њен властити рачун и користе га, као добро. Дакле, већина вас вероватно никада није користило Линук окружење пре или можда чак и командна линија окружење. И командна линија окружење је другачије. То је све текстуалне. То је све команде на тастатури. И то није Прелаз мишем, без иконе, нема дијалога прозори, нема менија. То је чисто текста. Дакле, прво, некако од осећа као корак уназад у смислу софистицираност. Али завршила се као много моћнији, свакако, за компјутерску научника, на крају. Дакле, хајде да погледамо. Овде сам у ЦС50.ио, преко којег можете пријавити на ЦС50 ИДЕ. И као много Сцратцх, ту је три основне области на овај екран. Дакле, на левој страни, имамо шта ће бити прегледач датотека. И ту је ова фасцикла у врх, који је сада празна јер сам се ослободила свих мојих датотеке пре суперсецтион. И то је место где ћемо саве Ц датотеке које пишемо. На горњем десном углу, имамо место где све наше кода ће да се написано. И заиста, ако кликнете на ово плус, ово ће ме пустити да изабере нову датотеку. И овде сам да почнем да пишем Ц кода или, Заиста, било који број других језика. А онда на дну, где је каже јхарвард @ иде50-- и твоја воља кажу нешто мало дифферент-- шта је ово зове? Прозор терминала. Да. Дакле прозор терминала је тзв командне линије интерфејс преко којих можете комуницирати са основном оперативним системом. А за сада, идемо у да врло мало користи ово-- само да састави, да погледате поруке о грешкама које видимо, и да водимо програме. Али на крају, идемо да то учини много више, као добро. А можете чак и инсталирати софтвер и управља ваш радни простор у ЦС50 ИДЕ, као добро. Али више о том неком другом времену. Дакле, идемо напред и пишем врло једноставан програм само проћи кроз загревање у хелло.ц, што је можда најједноставнији програму можемо писати. Већ сам отворио нову картицу. Ја идем напред и кажу укључују стандардну ио.х. Затим инт маин (воид). А онда принтф ("Хелло, Ворлд" обрнута коса црта н близак цитат, блиски заграде, и зарез. U redu. Тако да сада приметити мој прозор је Унтитлед. Зато сам врло брзо ће да иду до Филе, Саве. И важно је да Ја то не зовем "здраво". Дакле, врло честа грешка, посебно у проблему сет једна, је случајно да позовем своје Програм "вода" или "похлепни" или "Марио" или "кредит" или слично. Али ви заправо желите да се да ли имате екстензију јер је то једини начин на који преводилац и уредник и код зна да си ти заправо писање Ц кода. Па нека ми само напред и кликните на Саве. А сада, такође, шта ЦС50 ИДЕ учинила за нас је то такође синтакса је истакао све. Тако је направљена све врло живописна. А цијела сврха то није функционалан. То је само да скрене очи до концептуално различитих комада овог програма. Дакле, идемо напред и саставити ово. И могу саставити ово у неколико начина. И у Веек Оне, стара школа начин на који смо радили буквално био на команде лине-- "цланг хелло.ц." А онда сам притисните Ентер. И ништа не изгледа да се деси у терминал прозору. Али, шта је промену у ИДЕ? Где, опет, САТА само значи Integrisano razvojno okruženje. То је фенси начин да се каже ово интегрисано развојно окружење за развој софтвера. Дакле, шта је променити у УИ? Шта сте приметили то је другачије, Марија? МАРИЈА: Приметио сам нешто под ИДЕ50 фолдер овде. Давид Малан: Да. Дакле овде, не само имамо "хелло.ц." Такође имамо "а.оут", који је врста глупо име за програм. Али заиста, то је подразумевано име за Програм кад само саставити свој код и не кажем преводилац шта фајл на излаз. Дакле, ако желим да тече, ја треба да кажете цомпилер-- односно, морам да реци радни простор који сам желите да покренете програм под називом "а.оут." Ентер. А ту је и "здраво, свет. "сада" ./ ". је заиста битно. Иако обично имамо само пишу имена команди, када је програм си написан, не желим да кажем "./" јер то експлицитно говори Линук да желите да покренете програм под називом "а.оут" да је у овом, где тачка значи овај директоријум да сам тренутно у, који се дешава да буде зове радни простор ", а.оут. Јер ако сам рекао "а.оут," Ентер, Идем да се "а.оут команде не фоунд "јер је цомпутер-- јер сам измислио "а.оут;" није дошао са цомпутер-- не знам где да траже, иако је у праву носа, да се тако изразим. OK. Дакле, могли бисмо да променимо ово бити "цланг -о здраво хелло.ц." И ако сам погодио Ентер, који програм ће то излаз за мене? Како се зове датотеке? Да, позади. Tako je. "Zdravo." Дакле, "здраво" ће бити назив програма јер смо користили такозвани командна линија аргумент који је само начин мијењања понашања преводилац да заправо излаз специфичан назив датотеке. И заиста, ако зоом напоље и погледај овде, Сада имам не само "а.оут" и "хелло.ц", али и "здраво", као. Тако да сада могу да урадим "./хелло," Ентер. А ту је и "Хелло, Ворлд". Али ластли-- и ово ће сада бити конвенција користимо током цијеле семестар, типицалли-- је можете само рећи "да здраво." И заиста, каже да је до до сада зато што већ постоји. Пусти ме само напред и скинути са команда РМ, и "а.оут" - и реци "ремове редовну слику а.оут?" То само значи, ти си сигурни да желите да га обришете? Ја ћу да кажем да. И онда ћу уклонити "здраво" али не и "хелло.ц." Ја ћу да кажем "да" експлицитно, али "и" је довољна, такође. А сад приметио да сам тип лс-- који, опозив, значи лист-- све наводе од фајлова у мом фолдеру. И заиста, ако зоом напоље и погледај у горњем левом углу, потврђује да оно што је у овој фасцикли, чак и Иако је означен као ИДЕ50 овде а не радни простор, то је само "хелло.ц." И сада овде, ако И не "чине здраво", Ентер, сада видим много дуже него команду софистициранији команда која ће да буде користан у недељама које долазе. И сада могу да кажем "./хелло." Дакле, хајде да на брзину обилазак неки други Линук команде. Зашто онда не бисмо корак назад и заправо погледате Ц више генерално, транзиције од нуле на Ц, и закључују погледом на првој проблем постављена у Ц. У реду. Зато ћу ићи напред и само чист до мог радног простора са Цонтрол-Л само да би екран уредан. Али то нема функционалне утичу другачије. Подсетимо се да смо видели неколико команди сада. Тако смо видели Цланг, која генерално ви неће морати да ручно изврши више. Уместо тога ћемо користити марке. Али ми такође видели лс, што показује списак фајлова у мом директоријуму. А сада зашто је тамо-- Постоје две фајловима, "здраво" и "хелло.ц." Зашто је звезда или Астериск после "здраво"? Шта је то значи, на на оно што смо видели у једној недељи? Šta misliš? Шта је звезда значи? МАРИЈА: за-- програма "Здраво"? Давид Малан: "Здраво *". Да. Oh da? О, извршна. Tako je. То значи да "здраво" је извршна. И заиста, зато Ја могу да урадим "./хелло." U redu. Дакле, шта још могу да урадим овде? Па, испоставило се да могу такође стварају директоријуме. Па нека ми само напред и стварају, на пример, "псет1" директоријум. И проблем сет спецификација ће вас управо то урадили, тако да не морате да памтите данас. Али "мкдир псет1" изгледа да нема утицаја. Али опет, нема порука о грешци је генерално добра ствар. Дакле, ако сам тип "ЛС" сада-- Ах, сада Имам извршну датотеку под називом "здраво" и Ц фајл под називом "хелло.ц." А онда траилинг сласх, тако да Говорим, значи да је ово директоријум. И заиста, сада желим да га отворим. И не двоструко кликнути на њу као у ГУИ, графичко окружење. Ја кажете уместо тога "ЦД псет1." Ентер. Ништа занимљиво изгледа има догодило осим мог малог линији овдје-- ово је Линука начин подсјећајући ми где сам, па шта фасцикла је отворен. То ме само говори експлицитно насупрот графички. И ако откуцате "лс", зашто не видим други питати одмах, мислите, када сам листу садржај псет1? МАРИЈА: Вероватно не имао ништа унутра. Давид Малан: Да. Дакле немамо очигледно створена ништа тамо јер сам створио директоријум. Сада, ако сам желео да створи филе-- за пример, могао бих да креирате нову датотеку. И онда да одем у Саве и сачувајте га као, као, "марио.ц" ако радите стандардни издање псет једног. И онда, као и сваки Мац или ПЦ, само изаберите фолдер "псет1, Саве. И сада је датотека је празна. Али хајде да зоом ин поново за секунду. Хајде да урадимо лс овде. Сада видимо "марио.ц". Дакле, постоји неколико других команди које вреде имајући у виду преко времена-- готово јасно, или Контрола-Л је оно што сам био ударање; мкдир смо видели; РМ смо видели, као и, што је за уклањање или брисање фајла. Пазите можете алсо-- и, ако се осврнемо на онлине туторијала ћете рм рф је врло чест начин да се каже обрисати фолдер који има ствари у њој. Само будите супер, супер опрезни. рф рекурсивно значи делете шта год да је покушавате да избришете и насилно га избрисати. Дакле, рекурзиван значи да ако је фасцикла са фолдер са фолдер са неком фолдеру, брисање свих њих. И силом значи чак и не аск ме да или не, ја сам сигуран? Дакле, то је супер опасна начин брисање пуно ствари брзо. Али беваре-- пречесто Да ли постоји Интрепид Студент случајно брисање, рецимо, псет један, на пример. МАРИЈА: А ако они само раде -р, иду да их питам о свакој датотеци. Давид Малан: Који је умерено досадан. МАРИЈА: Да. Давид Малан: Зато тако да многи од нас, само укључена, сам у навику коришћења рф. Али то је опасно. Дакле, купац чувајте. А онда МВ је некако занимљиво по имену. Дакле, ово је потез команде, која се осећа мало чудно зато што заиста можете га користити за преместите датотеке са једног места на друго. На пример, претпоставимо да сам забрљао. Претпоставимо да сам створио нови фајл за псет. И то сачувати као "грееди.ц." Али претпостављам да је случајно да га сачувате у ИДЕ50-- тако да је у мом радном простору самој а не у псет1. Можете видети колико у горњем левом углу. Ту је "грееди.ц." А ту је и неколико решења. Дакле, једна, могу користити Супер разумљив начин да само превлачењем и испуштањем. И то би стварно решили овај проблем. Али данас, ми покушавамо да погледате што више волшебни али моћне начини да се то уради. Дакле, дозволите ми да "ЛС" у псет1. И видим само "марио.ц." Пусти ме само напред и уради "цд ..". Дакле, ЦД-поново је промена директоријум. ".." Значи шта, иако? Последњи пут када сам рекао "ЦД псет1 "да иде у псет1. Дакле, када кажем "цд ..", шта ја то радим? Уназад. Да. Тако да ће тзв родитеља. Иди један ниво горе, као и излазак из фолдера. Тако Ентер. И заиста, види шта је урадио. То ме преселио само у радни простор уместо од у псет1, који је у радном простору. И сада, ако сам тип "ЛС", постоји гомила ствари. У постоји "грееди.ц". Дакле, сада пусти ме да користим МВ дословно мове "грееди.ц" у псет1. И тако много Линук команде раде баш овако. Они узимају никакве аргументе или иду један аргумент или они узимају два командна линија аргументи и тако даље. И у овом случају, то је дословно ради оно што каже, иако суццинцтли-- мове грееди.ц у псет1. Ентер. Ништа изгледа да се деси. Али ако то урадим а лс опет, похлепни је нестао. А ако ја "ЦД псет1", Ентер, а затим Да ли поново, сада је на правом месту. Као на страну, ако за неки разлога-- посебно ако имате испрекидан умрежавања или да ходају кампус са својим лаптоп поклопцем затворен а затим га отвори опет и ваш радни простор Изгледа помало оут оф синц, није велика ствар. Само релоад иоур бровсер прозор, и то треба Ресинц тако да је леви Филе Бровсер изгледа исто као прозор терминала. Bez brige. Када сте у недоумици, поново страницу, тако док сте сачували већ датотеке. OK. Дакле, МВ такође може да се користи за преименовање фајлова. И хајде да погледамо ово коначна команда овде. Значи суппосе-- а ово је Супер заједничка, такодје, рано. Неки ученици повремено направите датотеку зове, хајде да говоре-- шта је још један? Као "ВАТЕР.Ц." Дакле, ја ћу викати, за нема разлога, у свим капе. Али ово није исправно име за датотеку ако само зато што сет наш проблем спецификација није рекао да сачувате датотеку као АЛЛ ЦАПС "ВАТЕР.Ц." Уместо тога, очекујемо "ватер.ц" малим словима. А, у ствари, ово је проблематично јер цхецк50, програм идеш састаће се у проблему сет онај који аутоматски тестира исправност кода ће викати на тебе ако се не може пронаћи "ватер.ц" у свим малим словима. Зато морам да поправим ово. Толико различити начини да се урадили, од којих је прва био би да контролише-клик или десни клик име датотеке и само променити Ренаме. Потпуно у реду да то уради. Али опет, данас, хајдемо урадите то мало одгајивача. Хајде да искористимо МВ за промену "ВАТЕР.Ц" да "ватер.ц." Дакле, можете користити први аргумент да га преименовали у други аргумент ако је други аргумент није, у Чињеница, фолдер или име директоријума. U redu. И на крају, мало трицк-- па сам у мој радни простор директоријум у овом тренутку. Ако желим да уђем у псет једну, Ја свакако можете да упишете "цд псет1." Али то је тако досадан да куцате "псет1" или више имена датотека или имена директоријума jos uvek. Дакле, врло често у Линук, оно можете да урадите је почните да куцате "псе" и само досади, хит Таб, па нека компјутер цифра је за тебе. Супер помоћи да дођу у ту навику. Једини проблем је ако имате више датотека или фасцикли стартинг са словом "П" или "ПС", можда ћете имати да куцате још неколико пре компјутер зна шта да ради. МАРИЈА: Волимо пречице. Давид Малан: Ово ће саве иоу толико времена. Такође, као што смо рекли у предавању, ви се померати нагоре у историји, горе и доле, да пронађе недавно погубљен команде, такође. U redu. Дакле, сада, хајде да обратимо пажњу назад једноставном програму, здраво свет. Зато смо саставили ово тачно. А сада зашто не узмемо поглед на типове података а затим прелазак из неких одговара Греб блокове да Ц. МАРИЈА: Супер. Дакле, сада када сте почели писање програма у Ц, ћемо да проговори о типовима података и променљивих. Тако неке врсте података које сте бих волео да знам од сада су они који су истакнуте плавом бојом. Тако имамо Инт прво, која се залаже за цео број. И који држи целе бројеве, као и ти можда има гуессед-- толико 1, 2, 3, и било који други природни бројеви да можете да замислити. Давид Малан: И такође негативно. МАРИЈА: И такође негативне, да. И 0. Онда имамо плута, који плутају бројеве тачака. Дакле, то је све реалне бројеве који имају децимале. Дакле 5.0, 5.2, и још цифара после децималног зареза, као и, као и негативне. Онда имамо символ што је лик. Дакле, мислим да смо разговарали о ово предавање данас. Али ми имамо писма, за екампле-- А, Б, ц-- која се може чувати као цхар. Али онда имамо много више симбола које се могу чувати као цхар. И они се чувају као АСЦИИ. И онда имамо боол, који су Боолеанс. А они оцењују Труе или Нетачне или 1 и 0, респективно. Давид Малан: И Подсетимо се да инт долази из ЦС50 библиотеке. Дакле, то није уграђено у Ц, али то је супер корисно да појам истина и лаж. И иако вас Можда мислим-- забава чињеницу. Инт технички потребан колико бита, заиста, да представљају Тачно у односу Нетачно? Колико бита мислиш ти би требао, максимално? Да, само један. Тако испада да је Ц Не могу вам дати само један мало. Најмања јединица мере можете добити је осам. Тако да је мало расипнички да сте користећи читав бајт, или осам битова, да представљају Труе или Фалсе. Али то је само начин на који је имплементиран у Ц по ЦС50 библиотеке. Мариа: И онда они да смо ми неће да говоре о толикој мери Право сада-- дупло, то је за веће сплавова. Дуго дуг и кратак су за целих бројева. Давид Малан: Заиста. У хакерске издању псет једне, Ми заправо користимо дуго дуго. Али за Стандард Едитион, не би требало бити потребно. МАРИЈА: Кул. OK. Дакле, требало би да операторс-- вероватно упознати са већином од њих. Додавање +; одузимање, -. За множења, имамо *. Дакле, не Кс да обично користе. Дивизија, имамо обрнуту косу црту. И модулу је наша задња оператер који ћемо говорити о сада. То је оператор који нам омогућава да се остатак подели. Дакле, ако имамо 4% 2, 4 подељена би 2 је 2 са остатком 0. Дакле, 4% 2 ис 0. 4% 3 је 1. 4% 5 је 4, као што сте могли да претпостави. И запамтите када се користе сви ови оператерима да користе правила ПЕМДАС. Давид Малан: Дакле, да буде јасно, ако вас до 4% 2, зашто је то 0, тачно? МАРИЈА: Због подељено са 4 2 је 2 са остатком 0. Дакле, по модулу нам даје ту остатак као за разлику од последица поделе. Давид Малан: И заиста, шта ћемо наћи ово било корисно јер је да у неке проблеме то није нужно један, ако желите да имате ефекат ограничавање себе на низ бројева као 0 кроз нешто, можете користити по модулу да обавије око раније него као 2 милијарде или 4 милијарде вредност која смо говорили у предавању. МАРИЈА: Да. Па чак и у "похлепни" ми би. Давид Малан: Да, у проблем поставити један, такође. МАРИЈА: Да, лепо. Давид Малан: Добро наговештај. МАРИЈА: Извињавам се. Булова екпрессионс-- тако за Булових оператора, ћемо да причамо о свему од ових који видите овде. Тако сада имамо два једнаке знаци листи за једнакима. Дакле, то су за поређење. До сада смо само видели један једнако знак. Тада смо доделили вредност променљивој. Дакле, ако смо видели инт = 5, онда смо доделили 5 до променљиве н. Али, ако желимо да користимо за == Поређења ради, можемо проверити да ли н == 5. А ако н == 5, онда је то истина. Дакле, Логички оператори дозволите нам, у суштини, да се процени Боолеан изрази то тачно или нетачно. Дакле, не екуалс-- имамо знак узвика и једнаки. Тако да смо такође може провјерити ако је н није исто 5-- тако да је н! = 5. Мање од, мање од или једнак, већи од, већи или једнак, и онда имамо логично И и логично ИЛИ. А они нам омогућавају да се процени више Боолеан изрази заједно да у основи долазе заједно, као цео један Булова израз. Дакле, ако желимо да пронађемо број, рецимо, која је већа од 5, али мање од 15 Истовремено, бисмо користимо логично и оператору да види да ли је н већи од 5 && н мање од 15. Давид Малан: И овде, такође, то је стварно лако рано да случајно користите само једну амперсанд или једна вертикална трака. И надам се компајлер ће викати на тебе, јер они заправо имају веома другачије значење. За оне радознали, они су користи за БИТВИСЕ операције, ради о појединачним бита. Али ти желиш да пар њих овде. И Супер важно је да Први, знак једнакости, који је оператер равноправност као за разлику од оператора доделе. МАРИЈА: А вертикална бар налази између Делете и повратак. Давид Малан: Да. На типичном америчком тастатури. МАРИЈА: Да. Дакле, хајде да скочи право у условне исказе. У Сцратцх, ти си већ видели, вероватно, ако изјаве које вам омогућавају да проверите да ли је нешто истина, онда уради нешто друго. Тако сте можда желели да проверите да ли је спрајт додирује неку другу спрајт или граница екрана. А онда сте можда желели да завршити игру или уради нешто друго. Дакле, синтаксе за то је "иф (услов)." Дакле, ако ваш дух додирује нешто, онда немој је унутар заграда. Онда имамо иф-елсе изјаве. Друго нам омогућава да урадимо нешто ако је услов да проверите да ли на почетку није истина. Дакле, ако је спрајт се додирује граница ово, друго радити нешто друго. Дакле, иначе радимо нешто друго. Онда имамо кратак пример за то. Дакле, ако (милитари_тиме <12), ми Желим да принтф "Добро јутро!" Друго ћемо иф "Добро вече!" Основни пример. Давид Малан: Добро. МАРИЈА: Кул. Тако да сада имамо прекидач изјаве. Свитцх изјаве уопште могу дозвољавају нам да урадимо много исте ствари да смо разговарали о са изјавама да. На пример, сада имамо Општи облик изјаве свитцх који нам омогућава да се променљива под називом н и упоредите га много различите вредности, који овде су позвали цонстант1, цонстант2. Можда имамо много више. И они се називају случајеве. Дакле, ако имамо прекидач статемент-- и ово ради само за интегерс-- имамо променљива у овом случају то је бр. Уколико променљива н једнак цонстант1, ми ће извршити неке фрагмент кода или нешто што желимо да радимо. И онда бисмо сломити. Дакле, пауза значи да изјава прекидач ће се зауставља ако н је једнак цонстант1, а затим ваш програм ће се наставити. То ће изаћи из од прекидач изјаву и да ће наставити да ради нешто друго. Уколико, међутим, н није једнако цонстант1, затим случај цонстант2 ће бити проверени. Дакле, ако је н једнако цонстант2, та друга фрагмент кода ће бити погубљени. И онда ће сломити ако је то једнако томе. А онда можемо да имамо алсо-- не нужно, тхоугх-- подразумевани случај, што ће се десити ако је н није једнако неки од случајева који сте навели. А у случају подразумевани, такође смо Не нужно не треба пауза јер изјава прекидач ће знати да мора да заврши после подразумевано случај ако је то случај. Давид Малан: Али стилски, увек га ставили тамо. МАРИЈА: Да. Давид Малан: Да. Дакле, посебно у почетку, нарочито ако међу онима који су мање удобно, ја лично бих Само препоручују стицк са ИФС и ИФС-Елсес а ако-друго-ако-Елсес и тако даље само ако јер су мало много једноставније. Ово је леп оптимизација, или понекад ни естетски чини код више читљив. И, у ствари, вероватно средином семестра видећемо проблем сет где само изгледа боље и лакше за читање за људе помоћу прекидача изјаву. Али не брини прерано везаност за ово. МАРИЈА: Да. Ако имате доста тога ако изјава, можда само не би било читљив. То не би било врло брзо за вас да прође кроз њега. Тако свитцх изјаве могу бити веома корисно, као добро. Такође, не запамти не заборави да стави паузе унутра. Давид Малан: Не сећам се тога. МАРИЈА: Зато што онда може да падне кроз од случаја до случаја. Рецимо да је предмет цонстант1 није имао бреак изјаву у њој. Онда бисмо могли пасти преко у случају цонстант2. И не желим то да урадим ако већ смо достигли случаја цонстант1 и то је једнако н. Тако, на пример, ако имамо променљиву Н који садржи број класе, и ми желимо да видимо шта је то класа је- ако је н једнако 50, ћемо то принт "ЦС50 је Увод у компјутерских наука И. " Онда идемо да се пробије. I to je to. Ако је, међутим, н је једнако до 51, идемо то принт "цс51 је Увод да компјутерских наука ИИ. " Затим, опет, идемо да се пробије. Међутим, ако онда ставимо 124, 61, било други број који можда мислите, или програм не иде да се препозна да. Дакле, то ће рећи: "Жао ми је, ја сам није упознат са тим класе. " И то ће сломити. Давид Малан: Тако да стварно можете видети иф, иф, друго идеја овде. То је само другачији Синтакса за изражавајући потпуно исту идеју. МАРИЈА: Тачно. Сада имамо наше тернарни оператере. Дакле, Тернарну оператери имају три партс-- услов, нешто да урадите ако тај услов је истина, и онда нешто да уради ако је услов је неистинит. Па видиш, у основи, синтакса овде. Имамо упитник, и онда који-- шта зовемо ово? Давид Малан: дебелог црева. МАРИЈА: Колон. Hvala vam. Извините. Дакле, хајде да погледамо наш пример видимо да ли можемо да схватимо ово-- цласс_нум == 50. Дакле овде видимо нашу Боолеан оператор == који пореди променљиве цласс_нум до 50. Дакле, цласс_нум продавнице цео број. А ако те цео број једнако 50, онда смо да складишти "Дејвид Малан" унутар професор стринг. Ако класа број не једнаке 50, "Давид се Малан" ће бити професор. Давид Малан: Хвала. И тако то изгледа еквивалент Шта, да ли бисте рекли, на први поглед? МАРИЈА: Мени се чини као иф-елсе изјаве. Давид Малан: Да. И у ствари, ово је некако од лепог Оне линер, да тако кажем, за реализацију управо логика иф-елсе али ради све у једном кораку. МАРИЈА: Тачно. Да. Дакле, ако-елсе изјаве могао заузимају много простора. Они могу бити превише дуго нешто тако једноставно као ово. Дакле, ово може бити веома језгровит и врло лепо. Дакле, сада ћемо у лоокинг ат изнова и изнова извршавање нешто, тако да проверавате условљавају више пута а затим наставља да уради нешто док тај услов није истина. Дакле, ово нас доводи лепо се док петље. Са леве стране, имамо наш први вхиле петље. Дакле, док је нешто истина, опет и опет нешто. Дакле, уверите се да приметити да је наш Услов је овде потврдио на врху. Док са нашим другом лооп-- зовемо да до-а лооп-- радимо нешто, онда проверите стања. А ако том стању наставља да буде истина, да се вратимо и опет ствар. Дакле, главна разлика је где услов се проверава на. И код никада не може бити извршити ако услов није истина са вхиле петље. Док са до-време петља, имамо код да се увек извршава најмање једном. А онда, док је услов наставља да буде истина, можемо да се вратимо и поновити опет унутра. Зашто мислиш да би користили а до-вхиле петље преко вхиле петље? Jel tako. Дакле, ако желимо да подстакне корисник за неку врсту улаза, ако желимо да их питамо да унесете своје име, желимо да их барем једном питати. А ако они не улазе то име, ми нисмо да их поново питати јер смо то већ знамо. Али, ако они не улазе њихово име, или ако унесите нешто што је Очигледно није име, и даље желимо да наставимо тражећи од њих да замени своје име. Давид Малан: И у предавању смо имали један овако са позитивним добити инт пример, где нема шта да проверите на први поглед, јер ниси ни добила инт. Зато желимо да радимо ово-- добити инт од усер-- онда проверите, можда, опет и опет и опет. МАРИЈА: Тачно. За лоопс-- ОК. За петље могу нам омогућити да радимо готово исту ствар, као добро. То је заправо је иста ствар. Дакле, не постоји ништа што можете да урадите са петље за да не би могао у вези са вхиле петље. Али за петље може изгледати помало мало компликованије синтактички јер имају три дела унутар шта је било пре само стање са док петљи. Дакле, први део који сте море, лево-највише имамо "Инт патуљци = 0." Дакле, ово је место где смо иницијализујемо наше променљиве. Онда имамо зарез и "патуљци <7." Дакле, ово је место где се Услов је заправо. Дакле, то је оно што би морали стави само у време лооп-- "док патуљци <7." Ево, да иде у средини наш фор петље. Дакле, "двавес <7." А онда наш последњи део "патуљци ++" где смо ажурирали наше променљиве. Дакле, важна ствар да схвате да је ово ће проћи кроз ово петљу седам пута и изврши седам пута. Дакле, имамо седам патуљци, и сви су ће рећи: "Ја сам овде да ти помогнем, Снежана " јер су спремне да помогне Снежану. Са вхиле петље, ми бисмо урадили иницијализација и ажурирање не налази унутар стању, једном, али пре или унутар вхиле петље да се уверите да ми-- јер увек треба те делове. Тако да се уверите да имамо их, ми би и даље смо додали их , само не унутар заграда. Давид Малан: И тако изгледа као-- у предавању, на пример, Скоро увек користи, као што сам и н и прилично досадне променљиве. Изгледа да можете да користите више паметно имену варијабле, превише. МАРИЈА: Да, то је у ствари јако лепо користити мало више описне варијабле јер поготово ако је неко други читајући ваше цоде-- можда си грејдер или ако сарађују са нешто-- желите да се уверите да су разумем шта радите. OK. Дакле, ово је нешто веома функи-- за петљу унутар за петљу. Ја не знам да ли смо видели раније. Verovatno ne. Али ми заправо може имати ово-- тако петље уместо петљи. Дакле, да ли неко жели да можда хода ми кроз шта се овде дешава? Давид Малан: Узећу убод. МАРИЈА: Кул. Давид Малан: У реду. Дакле, споилер-- желимо да одштампате ствари да је у доњем десном углу тамо. МАРИЈА: Тако је. Da da. Давид Малан: Тако смо само ставио тамо тог узорка излаз. Дакле, може се закључити из Највиши петља да си итератинг преко редова у спољни петље, да се тако изразим. А ти итератинг преко колоне са најужег петље. И интуитивно, ово треба надамо смисла јер по природи сваки програм смо видели пре, принтф, која је Функција ми користимо, у крајњој линији, има способност да штампа ствари од суштини ред по ред. Као, када сте имати излаз нова линија, ту је Не удвостручење назад и штампање нешто виши у екрану, барем не користи принтф овако. И тако у том смислу, чини осећање да спољни петља треба односи на редовима јер за сваки дат ред, ћеш желети да одштампати КСКСКСКСКС, а затим пређете на следећи ред, ккккк. Дакле, редови на првом месту. А онда унутар сваке ред, да одштампате колоне. Ако сте покушали да га се уради напротив, вероватно не би изаћи као намеравате. МАРИЈА: Да. Нисмо могли да се вратимо у претходни ред са принтф. Давид Малан: А шта је занимљиво по данашњем разговор о обиму, заправо, јесте да је ред инт која је проглашена у највишем петљи. Али приметити да је и даље унутар, такорећи, великих заграда да одмах следе, иако то није технички у оквиру тих заграда. Дакле, ред је у оквиру за целовитост фрагмент кода, унутар вањског за петљу и унутар унутрашњег за петљу. Али с друге стране, гдје је колона у оквиру? Променљива колона? Да, само у унутрашњем петље. И то је у реду зато што не приступате је изван својих заграда. Све што радимо је одштампани нова линија на самом крају. Тако да, у ствари је ОК. Дакле, ово има ефекат, личи, да ради три реда и четири колоне. МАРИЈА: Тако је. Дакле, прво идемо преко нашег првог реда. И само у нашем првом реду, урадимо четири колоне унутар првог реда. Тако смо одштампате четири нечија. И онда можемо да изадјете фор петље, јер већ смо штампати четири нечија. И ми смо штампали нову линију. И онда идемо кроз Исти процес за још два реда да укупно три. Давид Малан: И то је напоменути да је само артефакт фонта, чињеница да се узорак излаз изгледа тако много виши, као да има више редови од стубова. Али то је само зато што Кс је виши него што је широк. То је све што се тамо дешава, плус бели простор између редова. МАРИЈА: Тако је. Кул. Давид Малан: У реду. Дакле, бацимо поглед на проблем поставити један, узети било каква питања, а онда паузу? U redu. Дакле, у Проблем поставити један, ту је три Примарни изазов, на крају. Али прво, наћи ћете да је проблем сет спецификација, као и са многима псетс ове јесени, ће те ходати Кроз неколико загревање вежбе, указати вам на неколико ресурсе да могу или нисам видио вец. На пример, ЦС50 има пакет шорц, који су кратки видео, не као, али тај су веома тему специфиц-- можда пет минута, 10 минута у дужини на петљи или о условима или алгоритама или касније више напредне теме, као и. И ми генерално ембед они у проблему сетови тако да студенти има извор са којима да прегледа материјал који може имати већ дошао у предавању или дела. Али на овај начин је више фокусиран и на дохват руке. Ми такође имају тенденцију да уградити у проблему поставља ствари које се зову ВАЛКТХРОУГХ. Дакле, скоро сви примери радим у предавању, на бини, такође пуцали на камеру у Адванце А још спорије, интимнију Валктхроугх од мене на мој лаптоп тог закона, ред по ред тако да је у класи, често ћу ским путем нечега или некога ће убацити са неким одговорити на питање. Али то не мора потонути у за све у публици. Тако ћете пронаћи код Валктхроугхс за већину примера да радимо овде у предавању, тако да може да прође кроз њега у својим темпом и уназад или брзо унапред или скип потпуно, ако желите. Често постоји неколико топло-уп питања која да вас замолим да те некако ојачају овај материјал и уверите се да сте удобно пре што наставите са остатком псет. И онда, наравно, ту је сама псет. А једна од ствари смо врло намерно раде у ЦС50 је скоро сваки незанимљив или интелектуално незанимљив механички корак који можда ћете морати да урадите је готово увек веома добро документована. Током мандата, ми ћемо почети да тражи више реторичка питања као сетим како да урадите ово или оно? Али генерално, наћи ћете да су вам проблем поставе се кроз механике нечега тако да су занимљиви, интелектуални изазови су на крају напустили вама студента. Уз то, рекао је, Замила, коме смо Стално се односи данас у предавању, је један од наших дугогодишњи особља члан који такође има Валктхроугхс на специфичне проблеме, као што су псет марио и похлепан, иако није вода ове године. И то је у онима плаи јуст то је често нуди неке савете и трикове за како да поступе, никад ти шта да радим, али ратхер-- попут стања, ако вилл-- дајући вам најмање Неколико идеја, тако да је на вама, на крају, да одлучи како им прићи. МАРИЈА: Нешто као на високом нивоу разумевање логике шта молимо вас да урадите. Давид Малан: Управо тако. И, у ствари, Замила је ВАЛКТХРОУГХ су намењене да одговори на често постављано питање гдје уради сам почео, посебно када ове дуге спецификације су мало застрашујуће дати цео текст и слике које имају у њима. Тако ватер.ц, наћи ћете након што сте га завршили, је заправо релативно једноставан. Апсолутно су гомила од вас ће банг Ваши главом у зид покушавају да схватим зашто није састављање или зашто то не ради исправно. Али када завршите са њим и када сте провео неко време бори са било од бугова које сте можда, видећете да је веома кратак програм. То може бити учињено у само неколико линија кода, од којих је већина ми смо овде видели у предавању већ, ако ви саставите праве блокова за изградњу. И као што предлажемо овде, то ће питати да одредите колико минута неко туширања на кампусу. Ми навести у проблему одредили курс протока воде у, рецимо, туш малим протоком глава, слично као Сеинфелд цлип смо видели јуче или супротно томе. И онда само да уради мало математике, стварно-- аритметика користећи Ц реци УС колико, отприлике, флаше воде је да еквивалентна ако смо узимање Н-минутни туш. Сада, у марио.ц, ово иде да буде мало дуже програм. То још увек неће бити тако дуго. Само неколико редова дуже од ватер.ц. Али то ће бити прилика да поново стару школу Марио пирамида од Супер Марио Браћа или неки наставак на. Неће изгледати као лепше или као шарене као онај тамо. Ми ћемо користити мале ознаке хеша Као имамо овде на екрану коришћењем АСЦИИ текст. Али то ће приближити исту идеју. И то ће бити остварују који на први поглед изгледа прилично једноставно симпле-- принт једноставан пирамиду. Али постоји неколико карактеристика Овде који су занимљиви. Обратите пажњу да је крајње десне ивице пирамида заиста има ширину два. Дакле, има два једнака висина колоне, које чини се захтевају мало Мало мисли да да ли сте добили да потпуно тачно, као за разлику од само савршено под углом линија. Дакле, то је помало углу случаја али одговара стварну игру. И то је такође нису очигледна на први поглед поглед како да одштампате бели простор. Тако да када погледам на Узорак излаз овде-- и такође је у спец-- се врста изгледа као правоугаоник, али дијагонале од правоугаоник је одсекао, и то је само бели простори, да се тако изразим. И тако често постављано питање је увек, добро, како да померају ознаке хеша мало удесно? Или како да одштампате празне просторе? И то је заправо лакше него већина ученика мисли. Jel tako? Можете га приближно визуелно само ударање размак једном или двапут или три пута. И тако, иако са принтф смо скоро Увек одштампате стринг или инт или реч као "здраво, свет "или низ речи, можете једноставно штампати цитат, простор, под знацима навода. И то ће заправо дати ти бели простор тамо. Дакле, имајте то на уму и не овертхинк ово. Стварно треба да одлучити ред по ред по ред, Не разлику од твог пример Малопре, колико од оних Колоне треба да буду беле простори и колико њих би требало да буде Хасхтагс. Требаће мало времена, али је на крају логика слагалица нека врста. МАРИЈА: Да. Али логика иде ред по ред ће бити веома корисно овде. Давид Малан: Да. Мислим да је код узорка чак гаве-- иако то није био комплетан програм. Ви и даље треба Инт и главни и неважећим и #инцлуде стдио.х, доста ствари из предавања. Али градивни блокови Чини се да постоји. И онда на крају је нешто мало више алгоритамска. Тако испада да сваки пут када иду у ЦВС или било продавнице и вас неко руке у благајник рачуни или ковани новац као промена, Испоставља се да су, људи, без обзира да ли они то знају или не, Вероватно се користи оно што је назива похлепни алгоритам, при чему ако дугује, рецимо, $ 21 у променама јер из неког разлога сте купили нешто веома јефтин са веома великим рачун у ЦВС, било би заиста досадан ако благајник ти је дао 21 синглова, или још горе ипак, много кованица. Уместо тога, шта је разумна особа је Вероватно ћеш да урадиш је да идеш да попијемо $ 20- а затим $ 1 рачун, и преда вам само два рачуне у том случају. МАРИЈА: Дакле, они желе да минимизирају промена која се вратити теби. Давид Малан: Управо тако. А исто се баве кованог новца, као добро. Ако сте дуговали, рецимо, $ 0.50, надам се да не желиш 50 пенија. Ви уместо желе два четвртине, на пример. Дакле, ово не преузима да благајник има Довољно сваке деноминације која он или она можда желите да вам дам. Али ми не дозвољавају да преузме колико у проблему. А циљ, на крају, да имплементирати у Ц код похлепан алгоритам. Дакле, корисник је дозвољено да укуцате колико промените он или она дугује са доларима и центи, нека покретним зарезом вредност вероватно. А онда морате да урадите математику и схватим алгоритмички, добро, колико кованице могу да дам ви минимално да ти дам управо то износ промене. Али, то ће бити Неколико Трицки делови овде, зар не? Као да је цела непрецизност питање. МАРИЈА: Тачно. Тако Флоатинг Поинт вредности имају непрецизности. Да ли говоримо о томе у предавању данас? Давид Малан: Ми смо урадили Последњи пут у предавању. Разговарали смо о непрецизности. А ви не желите да превари корисника колико промена он или она се дугује. И тако проход, у проблем сет спецификација, размислити, у крајњој линији, како би се Како можете ублажити оне непрецизност грешке, потенцијално. То се може избећи, свакако, за улазне Говоримо о. И, у ствари, пенниес-- можда ћемо одложити на Замила, Мислим, за трикове тамо. Дакле, на крају ћете наћи прогресија проблема ове недеље, је прва од којих је прилично мали, онда медиј, онда мало већи. Али сви они користе зграду блокови овог протекле недеље, из овог суперсецтион, Проблем сет спецификација ставља се на безброј ресурса. Али, ако уопште још увек бори, посебно међу онима мање удобна без претходног позадини, доћи до радног времена у понедељак и уторак и У среду и четвртак. Иди на ЦС50 Разговарајте преко Курс аутора, преко којих можете разговарати са особљем и друговима из разреда. Али на крају, мислим да је Најбољи савет је само почетак рано. То није врста класе која вас треба почевши псетс у среду ноћ, или још горе у четвртак увече. МАРИЈА: Мој најбољи савет је да су почели у понедељак. Давид Малан: понедељак. Дакле, ако сте почели да алреади-- бр. Али чак и ако не у понедељак, онда у уторак. Што се раније то боље. И то је разлог зашто Наравно има толико касне дана је да вам мало психолошки притисак да почне раније, али и даље нека измичу када ствари потрајати дуже него што сте очекивали. МАРИЈА: И ви желите да искористите Радно време колико можете, такође. Давид Малан: Има ли питања? U redu. Па, зашто не прекинемо овде?