LUCAS FREITAS: Добро, претпоставувам сега сме живи. Добредојдени да CS50 Supersection. Ние сме помалку удобно. Моето име е Лукас Freitas. Јас сум еден CS50 Раководител TFS. Ова е Лорен. Лорен КАРВАЉО: Здраво, јас сум Лорен. Јас сум исто така Раководител ТФ CS50. LUCAS FREITAS: денес ние сме само ќе да даде преглед на она што сите вие момци го научиле во една недела, се надевам да ви даде момци добар смисла на она што треба да знаете за проблемот постави еден. Само неколку пораки. Прво на сите, на работното време. Работно време се случува од понеделник до четврток во различни куќи во Аненберг секој ден. Тие се многу добар ресурс за вас момци да дојдат и да поставуваат прашања, а разговара со TFS, па дури и размена на идеи со други студенти. Па не заборавајте да го користат ресурс во ваша корист. Втората работа е CS50 апарати. За последните [нечујни] вие момци не мора да всушност имаат апаратот. Што го направија се што е во вашиот персонален компјутер. Но, за овој проблем, вие всушност имаат да имаат виртуелна машина, па бидете сигурни да ја преземете CS50 Апаратот и го постави. И третата работа е да бидете сигурни да започне проблемот постави побрзо само затоа што тоа е многу полесно да се најде помогне кога сте во почетокот на неделава. Бидејќи луѓето имаат тенденција да се почека до последната секунда за да започне проблем во собата, а потоа ќе одат на работното време, и има голем број на луѓе. Каде што ако одите во понеделникот, си оди да се види дека можете да разговарате со TFS доста за цела ноќ, и тие ќе бидат повеќе од среќни да ви помогнат. Лорен КАРВАЉО: Може ли само да престане вас за само една секунда? Има секој е во можност да ја преземете на CS50 апарати? Се луѓе се обидоа? LUCAS FREITAS: Да преземете, од страна на начин, можете да добиете инструкции на cs50.net/appliance. Лорен КАРВАЉО: Право. И тоа го прави потрае малку повеќе време за нашата SYS администраторите да ви се добие лиценца копче, така се регистрирате за бесплатен пробен период во прв план. На тој начин ќе го имаат за 30 дена, а потоа чекаат за вашиот лиценцен клуч кој треба да го даде да ви за една година. LUCAS FREITAS: Прво на сите, ајде да разговараме малку за CS50 апарати. На CS50 апарати е всушност еден виртуелен машина која си оди за да работи во вашиот сопствен компјутер кој е во основа работи на друг компјутер во внатрешноста на вашиот сопствен компјутер. Што е прилично кул. А всушност се користи насекаде. Луѓе кои со техничка би знаеле дека ова се користи цело време. вас? Може да има повеќе компјутери во еден уред. Ајде да всушност ги погледне на апаратот. Кога одите на апаратот по регистрирање, ти си ќе треба да стави го вашето име и влезете во Харвард за да можеме да ги добиете сите сте се регистрирале. Ви се случува да се види во основа, само една позадина, а потоа дома и ѓубрето, а потоа овие мали икони. Ова три икони се всушност најмногу важни работи кои можете да ги имаат во Вашиот Уред. Првиот е gedit, која е текст уредник, исто како Notepad или како било каков вид на текст едитор. Тоа е само нешто што ние ги користиме за да се напише кодот и потоа го работи со него. Втората работа што ние имаме тука е Хром. Па ако ви треба да го користат интернетот во апаратот, тоа е она што можете да го користите. И третата работа е терминалот, кој е, всушност, многу слатки. Луѓето обично се вид на исплашени од на терминалот бидејќи тоа е ова многу старомодни апликација во која ќе само во основа тип сè со вашата тастатура. Таму не е многу на интеракција со вашиот глушец. Но всушност на терминалот не многу добри нешта. Прво на сите, ајде да одиме преку некои команди кои сте можете да го користите во терминал. Лорен КАРВАЉО: И се чувствуваат слободни да го запре ни ако имате било какви прашања. LUCAS FREITAS: Да. Значи првата команда дека имаме за терминал е ls. ЛС во основа значи листа сè, сите датотеки и сите директори, дека имам на местото што сум во. Значи, ако го направам ли тука, јас ќе одам да ја видите дека имам некои директориуми. Имам десктоп, преземања, логови, и VHOSTs. Оние кои се во сина боја, бидејќи тие сите директориуми. Тогаш имаш некои други датотеки. Имате како здраво и hello.c, која се само датотеки, и тие се во различни бои. Значи ова е многу важен команда само можете да видите што се датотеки и директориуми кои што треба во директориумот кој ги ти си во во терминалот. Кога ќе го видите jharvard @ апаратот и тогаш малку симбол таму, тилда, тоа само значи дека тоа е директориум дека сте во моментов. Лорен КАРВАЉО: Значи со внесување на ls е речиси како кликнување на папката која е наведена во право, таму, во него емисии сите на содржините кои сте во таа папка. Публика: Дали има текст по hello.c? Лорен КАРВАЉО: О, не можете да види дека, бидејќи тоа е сино. LUCAS FREITAS: Таа вели дека трупци и VHOSTs. Лорен КАРВАЉО: Оние кои се само други папки. Жал ми е, тоа е навистина тешко да се види. Можеби ако ние ги исклучи светлата? Колтон, дали сакате да се обиде и најдете на прекинувачот за светлата? Жал ми е за тоа. Јас не мислам за тоа. LUCAS FREITAS: Но, тоа е во основа - Да, ако може - Лорен КАРВАЉО: Зголеми вашиот екран. LUCAS FREITAS: Не таа карактеристика. Лорен КАРВАЉО: [нечујни]. OK. Па, има само многу природни светло во оваа соба, како и. LUCAS FREITAS: Ајде само да се претпостави дека постојат два други директориуми таму. Лорен КАРВАЉО: Само имајте со нас. Ова е само дел кој ти ќе се гледа во терминал. LUCAS FREITAS: Следниот команда е во основа, можеби сакате да се организира Вашите датотеки - на пример, на сите ваши C датотеки во една Директориум-но вие немате директориум само за C фајлови уште. Вие во основа може да се креира директориум користење на терминалот, како и, што е истото како десен клик и велејќи нова папка. Командата се направи директориум, која е mkdir, значи, во основа "направи" и "Директориум." А потоа може да се стави на името на директориумот. Да речеме дека сакам да се нарече, Не знам, да речеме pset1 Вршење ова, јас само создаде директориум. Ајде да се провери дека е таму. Значи, ако го направам ls, сега гледам логови, и тогаш pset1, а потоа VHOSTs. Па имам нов директориум таму. А потоа, откако ќе имаат нов директориум, можеби сакате да се движите во неа, па следната команда овој CD, кои само основа значи се оди на специфични директориум. Значи, ако јас сакам да одам на pset1, Јас само може да направи ЦД pset1. Лорен КАРВАЉО: cd се залага за промена директориумот, [нечујни] во можност да сеќавам на тоа. LUCAS FREITAS: И сега ќе видите дека Наместо да има само jharvard апаратот, имам jharvard апаратот, а потоа pset1, бидејќи тоа се покажува мене каде што сум во овој компјутер. Сега ако сакам да се вратиме на директориумот, која беше пред оваа, јас може да направи ЦД точка точка, која едноставно значи одат до директориумот што бев порано, како родител на овој директориумот, во основа. И сега гледам дека сум назад кон jharvard. Следното нешто што можам да го направам тоа е РМ, која е да се отстрани датотеката. На пример, ајде прво направи ls за да го видиш она што го имам тука. Имам здраво и hello.c. Да речеме дека сакам да ги отстрани. Што можам да направам РМ здраво. Тоа се случува да се каже "ги отстрани регуларна датотека здраво? "И јас велам:" Да. "И сега, ако јас направи ЛС, гледам дека тоа е не постои веќе. Ако јас се обидувам да го користите РМ за директориумот, сепак, тоа не се случува за да те направи нешто. Тоа се случува да се каже, еј, ти не може да се отстрани директориумот. Значи имаме овој други доаѓаат наречен rmdir, кои само основа значи отстрани директориумот. Јас може, на пример, отстранете pset1. И ако го направам ls, јас не имаат тоа повеќе. Било какви прашања во врска со овој? Не? Да? Публика: Важно е дека те оставам празно место по - кога почнете да пишувате нешто во? LUCAS FREITAS: Да. Ако го направам како CD и директориум, Јас треба да се стави празно место. Што просторот зборуваш? Лорен КАРВАЉО: На просторот меѓу CD и [нечујни]. LUCAS FREITAS: Да, ќе треба да се стави простори, бидејќи ЦД е команда, а потоа следниот стринг кој Можете да напишете во основа директориумот. Па тоа е како аргумент. Да? Публика: Кога ви листа, сите оние се различни директориуми, нели? LUCAS FREITAS: Да, тие се во директориумот. Публика: Што е разликата меѓу директориуми? LUCAS FREITAS: Тие се само различни директориуми. Директориум е директориумот во вашиот компјутер. Публика: Отвори папка. LUCAS FREITAS: Да, тоа е само ја отворам папката. Лорен КАРВАЉО: Над тука, оние кои се во сина боја се вистински директориуми кои можете да добиете во и потоа да видиме еден куп на работи кои се во рамките на тоа, што е жално затоа што всушност не можат да го прочитате оние во сина боја. И оние во бели се само датотеки кои се во рамките на тековниот директориум. LUCAS FREITAS: Значи директориуми се папки. Останатите се датотеки. Публика: Што е команда да го ресетирате или да го расчисти? LUCAS FREITAS: За да ја избришете? Лорен КАРВАЉО: За да ја избришете? LUCAS FREITAS: Мислам дека тоа е "јасна". Да. Така да само напишете јасно дали вашиот екран е премногу неуредна. Било какви други прашања? И ќе дознаете еден куп други команди само природно за време на семестар, бидејќи тие се многу корисни. Па сега ајде да зборуваме за составувањето. Ние разговаравме за pseudocode и изворниот код и објектниот код. И има многу на кодови, а можеби вие сте збунети околу тоа. Ајде да разговараме малку за она што што се случува кога сте пишување програма, и ќе го собере, и станува извршна датотека. Тоа се сите зборови кои вие момци веројатно слушнале, а можеби и не сте сосема сигурни што се случува. Да речеме, на пример, дека сакам да се напише програма која се вели "здраво". На првото нешто што доаѓа во твојот ум е можете вид на пробајте да мислите на тоа како сте ќе го направи тоа во твојот ум, и ти си најверојатно мислејќи на англиски или некој друг јазик, како природни јазик, веројатно. И тогаш што мислите, добро, ако сакам да, на пример, напишете програма која вели "здраво", јас би ја стартувате програмата, Јас ќе се печати здраво, а потоа јас ќе ја завршите програмата. Ова е pseudocode. Ова е само основа што се обидуваш да излезе со низа на настани дека си оди за да направите за да бидете можност да се напише програма. Тогаш го имате на изворниот код, и изворниот код не треба да конкретно да биде во Ц Зборуваме за изворен код во C затоа што тоа е јазикот кој го учите, но се разбира код може да биде доста било програмски јазик што го имате. Подоцна во текот на семестарот, си оди да учат други јазици. Тоа е, исто така, изворниот код. На пример, тука, ова е мојот извор кодот, и тогаш јас сум вклучувајќи библиотека, а потоа да почнам Главната, а потоа печати. И Лора се случува да се зборува малку малку за сето ова. Значи ова е изворниот код. И она што е предмет код? Објектот е еден куп на нули и оние, во основа. Што се случува е дека на почетокот треба pseudocode, кој е на англиски јазик. И мислам, да не го разбереш. Веројатно вашите пријатели се разбере неа, и повеќето луѓе би се разбере идејата. Но компјутерите се навистина неми, и тие не го разбираат англиски, па можете се преведе дека во нешто, обично преведено на некои програмски јазик. И можете да мислам на програмирање јазик како вид на како јазик кои ви кажам вашиот компјутер како да се зборува и да се разбере. Ти си во основа пишувате нешто во јазик што и двете од вас и вашите компјутерски разбере. Тоа е изворниот код. Така одат форма pseudocode да извор код, тоа е до вас. Тоа е во основа правиш вашата програма. Но, проблемот е во тоа што компјутер дури и не се разбере програмскиот јазик. Тоа не разбирам изворниот код на сите. Тоа, всушност, само го разбира нулите и. Значи имаме овој многу магија нешто што се нарекува компајлер, кој во основа е ќе го добиете изворниот вика дека сте напиша на јазик и вие на и вашиот компјутер се зборува, а сега сте ќе се трансформира дека во нулите и. Значи, во основа она што на компајлерот не е тоа добива изворниот код, во овој случај C, тоа се случува да го трансформираат во нули и оние кои компјутерот разбира и може да се направи извршна датотека од неа. Дали тоа има смисла? Можете само да се мисли на компајлерот како некој вид на преведувач, кој е помагајќи ти да се објасни со компјутер токму она што би требало да се направи. Но, како можам компајлирате. Да се ​​вратиме на апаратот, и да речеме дека јас го правам таа програма. Прво, ќе одам да се создаде директориум тука, а јас ќе одам да го наречеме "Пракса". Сега ќе одам да се движите во директориумот, па CD пракса. Сега сум во пракса. Сега сакам да почнам gedit, па како да го направам тоа? Јас или може да кликнете овде, или јас може само буквално тип "gedit", и тоа се случува да се отвори за мене. Сега ќе одам да напишеш мојата програма, па токму она што јас го напишав во слајд. Јас сум прогласување на библиотеката. Јас го правам int главната, неважечки. И сега јас го правам printf, здраво. Сега ќе одам да се спаси ова. Дозволете ми да го стави во пракса, и Одам да се јавите оваа hello.c. Па сега таа е зачувана. Ако сакам да го компајлирате, јас всушност да го стори тоа во две различни места. Јас или може да го стори во терминален прозорец, па ова голема, или можете да користете gedit кои, всушност, има терминален прозорец во право тука. Па можете да многу погодно само го прават вашиот код, а потоа можете да се впишат само она што тука, и се обиде да го компајлирате. Па како можам да ги собере код? Најлесен начин што го имаме е со користење на направи, што е функција која е во основа ќе компајлирате вашиот код. Вие само треба да се каже направи здраво, па "Прават" и името на програмата. Упс. Ова е непријатно. Лорен КАРВАЉО: Можете ли да [нечујни]? LUCAS FREITAS: Извини. Јас не го зачувате во правото директориум. Ајде да се практикуваат, а сега зачувате како hello.c. Жал ми е. Сега таа е зачувана. Дозволете ми да го направи ЛС и да бидат сигурни дека тоа е тука. Добро, сега тоа е тука. Па сега ако јас го прават здраво, тоа плука на многу нешта, но тогаш тоа само дава мене друга линија за терминал, кој значи дека тоа е успешна. Па сега ако јас се направи една ли повторно, јас всушност види оваа датотека во зелена, која е извршна датотека. А потоа, ако сакам да го извршите, сето тоа Јас треба да направите е точка црта здраво. Тоа се случува да се каже здраво, токму тука, па тоа е токму она што јас сум го прашува да. Постои уште еден начин на собирање, која се користи ѕвекот. Ѕвекот е само компајлер што ги имаме, и тоа е малку повеќе опширниот да компајлирате. Но таа работи само како добро. Значи, ако го направам ѕвекот, а потоа-о, а потоа името што сакам да им даде на извршна датотека, па да речеме "Здраво". А потоа на датотеката што сакате да ги собере, hello.c. Тоа е, исто така, ќе ги собере. И имаш датотека тука, и Јас само може да го изврши, како и. Па и двете од нив работат. Дали тоа има смисла? Било какви прашања? ПУБЛИКАТА: Можете ли да зумирате во малку? LUCAS FREITAS: Молам? ПУБЛИКАТА: Зголеми? Лорен КАРВАЉО: Јас мислите само може да команда плус. LUCAS FREITAS: Команда што? Лорен КАРВАЉО: Команда плус. LUCAS FREITAS: Не Лорен КАРВАЉО: О, тоа не е оди на работа затоа што - тоа е затоа што ние во собата на резолуција за оваа работа. LUCAS FREITAS: Не дека можеме да зумирате внатре Да, не можеме да зумирате. Дали имате едно друго прашање? Жал. Публика: Можете да го повторите ѕвекот? LUCAS FREITAS: На ѕвекот? Ѕвекот е истото како направи, но Разликата е во тоа прво ќе одам да се напише ѕвекот, што е команда, тогаш јас ќе одам да направите -0, сите, што е само она што ние ќе треба да научат подоцна како знаме. Па само да мислиш дека си секогаш мора да се стави на-о. А потоа, прво, си оди за да се стави името на извршната датотека, основа на датотеката која сте ќе се создаде. Па можам да кажам, на пример, hello2 и тогаш датотеката што сакате да го состави, што е. в датотека. Па тоа е hello.c. Дали тоа има смисла? ПУБЛИКАТА: Здраво што? Што е тоа? LUCAS FREITAS: Hello.c. И ако ја собере, и ако Јас ли, јас исто така имаат hello2 дека јас само состави. И ако јас се обидувам да се кандидира, тоа ќе го прават токму истото што и здраво, само печати здраво. Публика: Како дојде за марка може да се стави hello.c по? LUCAS FREITAS: Во направи, можете не мора да се стави на. в. Во се направи, само велат дека името на програмата. Вие не треба да се каже. В. Но, за ѕвекот, ви треба. Публика: Со ѕвекот правиш, исто така, треба да додадете [нечујни] Лорен КАРВАЉО: Да. Така што исто така треба да Библиотеката. LUCAS FREITAS: Да, тоа е нешто ние ќе ги користи подоцна. Тоа се вика поврзува, и мислам дека сме ќе зборуваме за тоа подоцна. Друго прашање? ПУБЛИКАТА: Дали ќе се стави точка црта ѕвекот? LUCAS FREITAS: Не Точка црта е само да се отвори извршна датотека. Па ѕвекот, вие само напишете "ѕвекот," и тогаш ако сакате да го отворите извршна датотека која што ја состави, а потоа можете да точка црта и името. Дали тоа има смисла? Публика: Ако сте биле да само промена [Нечујни] Здраво светот, дали мора да го прекомпајлирате? LUCAS FREITAS: Да. ако сакам да се каже, на пример, "Здраво таму ", можам да само да го зачувате сега, и јас само повторно да го компајлирате. Па да ми направи направи здраво. И ако го направам здраво, тоа се случува да каже "Здраво". Има смисла? Било какви други прашања? Публика: Дали имате да го вклучите стандард I / O да ја координира работата? LUCAS FREITAS: Да. Стандардот I / O е во основа библиотека која има имплементација за printf. Така што нешто право на врвот вклучува stdio. Дека е вклучувајќи библиотека која во основа има еден куп на различни алатки кои можете да го користите. еден? Од нив е printf дека е во функција , која во основа отпечатоци пораки на екранот. Било какви други прашања? Не? OK. Па сега ајде да зборуваме за тоа - Лорен КАРВАЉО: Ајде само оди на стил водич. Дали сакате да само да го најдете тука? LUCAS FREITAS: Така ние ќе да се зборува за стил. Лорен КАРВАЉО: О, Дејвид не заврши. OK. Зошто не можеме да се врати на стил на самиот крај? Тоа е всушност е ажурирана како што ние зборуваме. LUCAS FREITAS: Да. Ајде начин за Дејвид да заврши тоа. Лорен КАРВАЉО: Може ние го вклучите всушност? Па се надевам дека сите е се уживање на гребење. За жал, тоа е време да се се движат подалеку од ова - за жал, тоа е време да се движат подалеку од тие убави програмирање блокови за да се C. Но, за среќа, сите на програмски конструкции дека сте работи со во Скреч се директно преведување на C, и ние сме ќе почнат да се запознаат со некои од нив, токму сега. Ајде прво да зборуваме за условите во Булова изрази. Ова работи на резерва енергија од батеријата. LUCAS FREITAS: Како е кои не работат? OK. Да одите таму, јас ќе одам да се добие - Лорен КАРВАЉО: Значи услови важни, бидејќи тие ни овозможи да воведе логика во нашите програми. Еве еден пример на една состојба во C програмата. Ајде да се забележи како ова - Па оваа состојба блок токму тука, овој printf изјава не ќе го изврши ако состојба во загради, n е поголем од 0, точен. Сега, сите услови во рамките ѓ извештаи се Булова изрази, што значи дека има се само две опции. Тие или може да се оцени на true, или тие може да се оцени на false. Значи тука, па тоа го прави смисла, нели? n поголема од 0, значи дека е позитивен број, што значи дека ќе печати надвор "што сте го одбрале позитивен број." Постојат многу Булова изрази дека може да се формира на состојба со init изјава. Имаме помалку од. Ова е помалку од или еднаков на. Ова е само смешна [нечујни]. Ако сакате printf да се случи, ако тоа е поголема од или еднакво на 0, а потоа би ја одбрале ова. Па еднакви само додава право по поголема од знак. Еднаква еднаква, која е различна од само еден знак за еднаквост, еднаква еднакви всушност значи дека сé што е на левата страна на оваа е иста како она што е на десната страна на оваа каде што една знак за еднаквост е она? Што е само еден знак за еднаквост? Задача. LUCAS FREITAS: Кој го рекол тоа? Е дека бонбони? О, не. Жал. Жал. И двајцата се слатки. Ох, ОК! Три лица се бонбони! Лорен КАРВАЉО: Значи ова токму тука е тресне оператор претходната знак за еднаквост, па тоа е не еднакви да. Така да ако ова е во рамките на мојата состојба, телото на состојбата би изврши само ако сé што е во лево не е иста како и она што е на ред. Јас, исто така може да има само фантастичен точка. Всушност ќе видиме во функција слајд како ова ќе се користи. LUCAS FREITAS: Било какви прашања? Не? Лорен КАРВАЉО: Можеме да ги комбинирате овие Булова изрази за да се изгради повеќе сложена условен извештаи. Па еве, ако сé што е на левата страна на двојно барови или она што е на десната страна на двојно барови точен, тогаш ние ќе испечатите неважечки. А потоа долу тука, ако сé што е на левата страна на две ampersands и што е на десната страна на две ampersands точен, тогаш ние ќе испечатите валидни. Двојно барови се нарекува логички ИЛИ оператор двојно ampersands се наречен логички и оператор. Да? Публика: Дали оние кои само мали букви на l? Лорен КАРВАЉО: Не Тие се всушност - знаете реакции, како над вашата Враќање клуч? Дали ви се види тоа? LUCAS FREITAS: Тоа е всушност еден бар. Лорен КАРВАЉО: Тоа е, всушност, само два такта. Публика: можете да го користите еднакви еднакви за жици? LUCAS FREITAS: Не Ние ќе научат подоцна нешто во врска со тоа. Лорен КАРВАЉО: Има функција дека можете да го користите. Но, вие не мора да се се загрижени дека само уште. Што ако давам на оваа програма бројот 5? Што ќе испечатите? ПУБЛИКАТА: [нечујни] валидни. Лорен КАРВАЉО: Важи? Да. Не знам кој доби тоа. [Смеа] Лорен КАРВАЉО: Тоа е вид страшно [нечујни]. ПУБЛИКАТА: Значи двокреветни и, тоа само значи и? Лорен КАРВАЉО: Да. Значи број 5 е и поголема од 0 и помалку од 100. ПУБЛИКАТА: Зошто тоа ќе биде една? Лорен КАРВАЉО: Еден симболот е всушност нешто различно, а тоа е на bitwise оператор, кој ќе учат за подоцна. Но тоа е нешто што всушност работи со делови од дадениот број. LUCAS FREITAS: Само помислете тие не мора да се грижите за тоа за сега. Лорен КАРВАЉО: Мислам дека тоа е веројатно доаѓа следната недела. LUCAS FREITAS: Сите други прашања? Не? Лорен КАРВАЉО: Значи видовме дека го блокираат може да издржи сам, но тоа може да исто така да биде поврзан со и друго блок. Значи во овој случај, ако n е поголема од 0, ние ќе треба да испечатите "Ти скинале позитивен број. "друг, што значи ако тоа е 0 или ако тоа е помалку од 0, ние ќе треба да испечатите, "Ти зедов негативен број." На интересна работа тука е дека овие се без едни со други. Таму никогаш не се случува да биде случај во која ова и ова и двете може да испечатите. Сигурен сум дека сте работеле со ако / друго кутија во нула, па ова треба да биде прилично познато. Да? Публика: Дали ни е потребна во просторот помеѓу int n еднаква GetInt тогаш простор во ако изјава? Како ние ги користиме на линија [нечујни] Лорен КАРВАЉО: О, просторот овде? Публика: како тоа, но сте двојно простор. Не, одат нагоре. Одат нагоре. LUCAS FREITAS: Само на линија? Публика: Да. LUCAS FREITAS: Само празни линија? Публика: Да. Лорен КАРВАЉО: Слепа линија? Бр. Тоа е само стилска работа. LUCAS FREITAS: Тоа е исто како некогаш можете само прескокнете некои линии, така дека кодот не изгледа како огромен блок од текст. Лорен КАРВАЉО: Мислам дека она што се случи беше дека моравме коментар тука, но јас го повлекоа, така што вие момци ќе има да се размислува за код прилично отколку само прочитате мојот коментар. Во принцип, проред не навистина ќе се влијае на начинот на вашата програма работи. Тоа е повеќе од стилски работа. И кога имаме стил водич нема и се подготвени да одат до крајот на supersection, ние ќе разговараме за тоа повеќе. Има нешто во ред со оваа програма, нели? Затоа 0 не е навистина негативен број. Да видиме дали можеме да го поправите тоа. Што веројатно може да се замисли со ова вели, нели? Ако n е поголема од 0, ние печати, "Ти скинале позитивен број. "Тогаш друг ако n е помал од 0, "Ти скинале негативен број. "друго", што сте го одбрале 0. " Сега интересна работа е дека ова може да трае вечно. Можете да имаат, ако блок, на друго, ако блок, друг друго, ако блок, друго ако, друго, ако, друго ако, друго, во основа како долго колку што сакаш. И кога изграден како оваа, тие се сите нема да биде со исклучок на едни со други. Да? Публика: Па зошто да не само користење друг ако наместо [нечујни]? Лорен КАРВАЉО: Во овој случај, да јас може да се користи друг ако, и тоа ќе биде апсолутно чисто затоа што услови и самите се со исклучок на едни со други. Но ако условите не беа ексклузивни еден од друг, тоа би ги принудуваат да никогаш двете оцени, ако тоа го прави смисла. Публика: Во тој случај, би можеле да гнездо вториот ако во прво, ако? Лорен КАРВАЉО: Ако - Што сакаш да кажеш? Публика: Ако два услови не се взаемно исклучиви? Лорен КАРВАЉО: Доколку условите не се взаемно исклучиви? Но сакате само еден од нив да се кандидира? ПУБЛИКАТА: Сакате само ако наместо друг. Лорен КАРВАЉО: Да. Има секогаш ќе биде многу на начини на кои можете да го направите тоа. Можете дефинитивно гнездо нив. И ќе видите во иднина слајд дека може да имаат повеќе IFS, само еден по друг. Но, ова е начин на логично организирање на протокот на вашата програма. LUCAS FREITAS: И таму е уште еден работа, е дека те праша за ставање ако, а потоа уште ако. Дека ќе работи совршено, но тоа е лоша дизајнот, бидејќи во основа, ако провери прво дали, и ќе забележите дека број е поголем од 0, што само да ја завршат програмата. Вие не треба да се провери дали тоа е помалку од 0, нели? Но ако не, ако ако, тоа се случува да се провери и двете, додека ако го направам, ако друг, тоа се случува да се провери дали е поголем од 0. Ако е така, тоа не се случува да се погледне на други линии на код. Па ти си во основа тоа проверка како двапати непотребно, па тоа е причината зошто ние направам, ако друго, ако. Било какви други прашања? ПУБЛИКАТА: Значи функционалност на друго, ако е иста како и ако тоа беше само ако? Лорен КАРВАЉО: Не Ти си, всушност ќе се види во мојата следна слајд пример во кој може да биде различен. Во овој случај, тоа е речиси иста. Па еве, имаме пример на повеќе ако извештаи и функционалност не е исто како да сум само рече дека ако друго, ако на друго место, ако на друго место. Ајде да се размислува за она што ќе се печати дали можам да го внесете бројот 95 во оваа програма. ПУБЛИКАТА: [нечујни] Лорен КАРВАЉО: А потоа? ПУБЛИКАТА: [нечујни] Лорен КАРВАЉО: Да. Значи во овој случај, овие услови се не меѓусебно се исклучуваат од едни на други. И затоа што нема ништо запирање оваа состојба од оценување ако овој еден веќе има, тие се само сите ќе испечатите. Па, како би можел да го надминете овој? Публика: друго IFS? Лорен КАРВАЉО: Можете да ги користите друг IFS. Јас би можеле да го промените редоследот од овие, нели? Ако сум го правела ова првиот? Па, всушност, бр. Кои не би сакал да работиш за 95. LUCAS FREITAS: Не, само друг IFS. Лорен КАРВАЉО: На друго IFS ќе средеа тоа. Дали тоа го расчисти конфузија помеѓу IFS и друго IFS? Публика: Јас само сакав да ве прашам, ако ќе го употреби друг ако, тоа ќе престане? Лорен КАРВАЉО: Право. Па само тоа првиот. Ако влегов бројот 95, само што овој ќе се печатени надвор, и таа никогаш не ќе имаат напредувале до друго. LUCAS FREITAS: Само вид на мисли на како ако тоа се случи, го направите тоа. На друго место е како ако не, чек за ова, а потоа направи тоа. Значи како сите тие се меѓусебно ексклузивни. Не можете да добиете во две над нив. Публика: Може да ви користи логичен И за таа ситуација? Лорен КАРВАЉО: Да. Тоа е уште еден начин што би можеле да имаат фиксни на овој проблем. Ние сме можеле да имаат дефинирано се движи, нели? Па можев да се рече, ако n е поголем од 90 и помалку од - Па, претпоставувам дека ова не се навистина важно, но тука јас би можел да рече дека ако n е поголема од 80 и помал од 90. Поголема од 70, помалку од 80. Тоа би, исто така, работел. [Смеа] LUCAS FREITAS: Таа е исплашена. Лорен КАРВАЉО: Не плашете се. LUCAS FREITAS: Тоа не е дека тоа ќе биде во ред. Тоа е само дека тоа е непотребно опширниот. Како и во компјутерската наука, еден треба да да биде едноставно како е можно додека имате функционалност. Дали сакате бонбони? ПУБЛИКАТА: Не треба. Лорен КАРВАЉО: Ти си одбивајќи сите, Лукас. LUCAS FREITAS: Извини. Лорен КАРВАЉО: Дејвид исто така споменува овие се префрлат изјава во класата. Во суштина она што се случува е прекинувачот изјава зема променлива. Во овој случај, ние сме земајќи цел број. Ако целиот број е 1, ние ќе испечатите, "Ти зедов еден мал број. "Ако целиот број е 1," Ти скинале медиум број. "Ако цел број е 3, "Ти зедов високо број. "И јас, исто така, имаше стандардно случај овде, но тоа не се покажува нагоре, што е премногу лошо. Во суштина, ова е само друг синтакса. Ние би можеле да имаат имплементиран овој Точната истото со ако и друго, ако извештаи. Но, кога постојат многу различни услови и многу различни варијации на она што сакате да го направите за секој влез, ова е опција. Па тоа е само добра синтакса да знаеш. Да? ПУБЛИКАТА: Зошто е таму не обратна коса црта n во првиот? Лорен КАРВАЉО: За таму горе? Нема обратна коса црта n таму горе бидејќи GetInt - ако се обидете ова, тоа ќе ви даде прашува. Ми даде цел број помеѓу 1 и 3. И ако го ставам реакциите n, што би да ме до следната линија, но јас само сакаше да ги напишете број веднаш по дебелото црево. Вие би можеле да се стави на реакција n. Тоа не е голема работа. Да? ПУБЛИКАТА: За овој код, дали е ова случај еден, е дека поради тоа е првиот случај? Затоа што - Лорен КАРВАЉО: Не, не, не. Значи ова е ми даде целобројна помеѓу 1 и 3. Ако n е 1, јас печати ја оваа. Ако имав праша за писма, би можел да има рече дај ми едно писмо меѓу А и C. Потоа ова ќе биде случај А ПУБЛИКАТА: [нечујни]. Случајот ќе само [нечујни] Лорен КАРВАЉО: Да, секако. Да? Публика: Што ако си сакал да има повеќе од релациона изразување? Па наместо да се каже n е еднаква на 1, [нечујни] n е поголема од 1 во првиот случај? Лорен КАРВАЉО: Всушност, ако не го правам се дефинираат некои од овие случаи, тоа би да се носат надолу. Така всушност, можеби ова не е она што го бараме. LUCAS FREITAS: Мислам дека таа прашува дали случајот е n поголема од 0, случај помалку од 0. Лорен КАРВАЉО: Можеби го прекинувачот изјава не е навистина она што го сакате да се користи во тој случај. LUCAS FREITAS: Прекинувачот изјава е само за вредност, па ти си проверка на вредноста е како ова или она. Па не можете да всушност стави услови. Публика: Што ако лицето типови со [нечујни]? Лорен КАРВАЉО: Тоа би биле мојата стандардна случај, кој за жал не можете да видите. LUCAS FREITAS: [нечујни] да ги видат. Лорен КАРВАЉО: Всушност, знаеш што? Ајде да одиме да учат 50, и јас ќе само зумирате на слајдови на студија 50, бидејќи ова е само досадни. Па да ми всушност, оди на состојба. Ова е само ќе потрае малку повеќе време. Во ред е. Значи, Жал ми е. Барем сега ќе биде во можност да ја видите сè што без неа отсекување. Во ред е. Значи, ако тие се стави во 10, ние би стандардно тука за да ми стандардно случај, и јас само ќе се печати валиден, бидејќи јас побара од нив да внесете број помеѓу 1 и 3. Било какви други прашања? Да? Публика: Да речеме, на случај еден, случај три, велат дека сакав да биде на сите истото, така да подигнат голем број тоа не е медиум број. Во тој случај, тоа ќе биде непотребен? Ќе ви само промена на текстот во двете од нив, или би да има некои вишок? Постои ли некој начин да се комбинираат [Нечујни]? Лорен КАРВАЉО: Постојат начини да се да ги комбинирате, но верувам дека може да се само се комбинираат соседните општини. Значи, ако јас не ја дефинирала ништо за случај два, тоа би се однесуваат на двата случаи. Ох, ако јас не се става ништо за случајот еден, ова ќе се применуваат и на случај еден и два. Ако тоа го прави смисла. ПУБЛИКАТА: Можете ли да повторам дека еден? LUCAS FREITAS: OK. Ако не во основа, како, имате истото, но не се стави нешто тука, ќе биде или за доколку еден или два случаи, го прават тоа. Нели? И оваа пауза значи ако добиете во овој случај, само остави. Значи тоа е она што на сопирачката значи. Значи, ако јас само го направи ова, ќе се погледне, тоа е случај еден, а вие само ќе го направите тоа. Ако тоа беше случај два, тоа исто така, би само да дојде тука и да го направите тоа. Публика: Но, можете да го направам тоа? Ако има нешто за случај два [нечујни] Лорен КАРВАЉО: Не верувам можете да го направите тоа. Јас не мислам дека можете да го прескокнете наоколу. Можете да го направите тоа, Роб? Јас не мислам така. ПУБЛИКАТА: Значи само еден број може да оди по случај, нели? Не може да има случај еден, запирка, две? LUCAS FREITAS: Не, дека не можеш. Ти дефинитивно не може. Лорен КАРВАЉО: Мислам, поентата е ова е опција, и тоа не би можел одговара на вашите употреба случај, па тогаш ќе ќе го користи ако услови. ПУБЛИКАТА: Значи зошто би го направил тоа? Прекинувачот? Лорен КАРВАЉО: Јас би го користите овој Ако имате многу дефинирана - всушност, Лукас, е ти си блокирање. LUCAS FREITAS: Ох, извинете. Лорен КАРВАЉО: Ако имате многу дефинирани однесувања кои ги сакате за секој влез, ова може да биде малку повеќе концизни отколку пишување надвор на ако изјава за секоја една. Публика: Што значи пауза значи повторно? Лорен КАРВАЉО: На пауза значи запре. Запомни, ако јас не ја имаат оваа пауза тука, ние ќе имаат само паднати долу во следниот случај. LUCAS FREITAS: Пауза значи да се добие од прекинувачот изјава. Бидејќи ако тоа е 1, сакам да печати ја оваа и ќе замине. Не сакам да се провери нешто друго. Публика: Вие не сакате да се печати ништо друго. LUCAS FREITAS: Да. Затоа што тоа е меѓусебно се исклучуваат. Публика: А дали ова само продолжи на следниот случај кога првиот случај не е точно? Или не го тестираат сите случаи во исто време? LUCAS FREITAS: Не, тоа проверки секвенцијално. Секвенцијално, да. Уште едно прашање, тогаш ние мора да се движат за да можеме да ги покрие сè. Да? ПУБЛИКАТА: Значи за случајот, би можеле да имаат направи нешто, освен само на еден? Може да ви го даде опсег? LUCAS FREITAS: Не Лорен КАРВАЉО: Јас не мислам дека можете да го даде опсег. LUCAS FREITAS: Вие не може да ви не може да го даде опсег. ПУБЛИКАТА: Случајот е специфичен [Нечујни]. LUCAS FREITAS: Вклучете е вид на вредности. Правиш различни работи во зависност на вредност, одредена вредност. Не можете да направите опсег, може да не направи нешто друго. Тоа е само уште една алатка за да ја видите. Лорен КАРВАЉО: Повеќето луѓе не ги користат префрлате изјави многу во CS50, но тоа е таму. Во ред е. Па следниот нешто што ние ќе зборуваме за е троичен оператор. Ова е само уште еден тип на условна. Во суштина она што се случува овде е јас сум бара за цел број, и ако n е поголема од 100, јас ќе одам да се печати "Висока." Ако не е, ќе одам да се печатење "ниско". Значи она што го прави е состојбата е токму овде во загради, а вие вид на може да мислам на прашањето како Прашувам дали ова е вистина или не. Ако тоа е вистина, јас ќе одам да направите ова прво нешто, а ако тоа не е вистина, јас сум ќе го направите ова Втората работа. Било какви прашања во врска со троичен оператор? LUCAS FREITAS: Само сакам се забележи од Давид е дека секогаш кога имате состојба - Лорен КАРВАЉО: Претпоставувам дека Давид гледајќи преку живо поток. LUCAS FREITAS: Тој го прави живот поток во моментов. Значи секогаш кога имате состојба, ти си треба да се стави големи загради, исто како што ја имаме во прекинувачот изјава тука. Имаме големи загради тука. За она услови, ти си би требало исто така да се стави тоа. Лорен КАРВАЉО: Ќе видите ова во стилот водич. Ние не всушност имаат стил водич во моментов. Мислам дека Давид сеуште работи. LUCAS FREITAS: Тој рече дека тоа е само работи сега. Лорен КАРВАЉО: О, тоа е работа сега? OK. Па очигледно оваа година во стил води, дури и ако само има една линија, имаш за да се стави оние тркалезните загради внатре Вие не секогаш треба да се за функционалноста на програмата. А можеби ние само треба да се одмори по услови и одат директно на стилот водич за чистење некои од овие нешта? LUCAS FREITAS: Да. Дали имате прашање? ПУБЛИКАТА: Не, јас само ќе почека до стилот водич. Публика: Може ли да се вратиме на тројна оператор? Лорен КАРВАЉО: троичен, да. LUCAS FREITAS: троичен оператор е во основа, ако друг изјава, но наместо да имаат две линии на проверка на, ако и тогаш друго, само има една линија. Значи, во основа ако сакам да им даде на низа вредност на високи или ниски, и јас сакате да се направи висока ако n е поголема од 100 или ниски, ако тоа е помалку, она што можам да направам е овој [нечујни] низа ќе биде, а потоа побара од програмата е N поголема од 100? Па тоа е зошто имам овој израз во загради, а потоа прашалник. Прашувам дали е поголема од 100? Ако е така, тоа се случува да бидат високи. Ако тоа не е, тоа се случува да бидат ниски. Значи, во основа она што мислите дека е побара од вас прашање, па ќе ги ставите во загради на состојба. Потоа ќе се стави прашалник затоа што ти си го бара. И ако ова е вистина, тоа се случува да биде во првата вредност [нечујни] тука. Ако не е, ќе одам да се стави на вредност која е по на дебелото црево. Дали има смисла? Тоа е исто така нешто што е како алатка во C но вие не треба да се конкретно го користам. Но CS луѓето обично се допаѓа тоа бидејќи тоа само ги зачувува линии. Лорен КАРВАЉО: Тоа е многу елегантна. Тоа го прави многу во само една изјава. ПУБЛИКАТА: Значи проценти знак е само без оглед на резултатите на претходната линија? Лорен КАРВАЉО: О, се извинувам. Овој процент знак е всушност случаеви за ова е. Во printf изјава, имаш овој низа тука, што е она што се случува да се испечатите, но вие не само да стави ова е во таму. Инаку тоа ќе печати надвор од ОК буквално. Па ние се стави проценти тука за да се задржи ова место се чуваат за она што доаѓа по запирка. Така и за низа, имаш проценти s. За цел број, проценти i. За плови, проценти ѓ. Ќе ги видите тие како што види повеќе примери. Но можеби треба да зборуваме за стил водич за малку, сега дека тоа е до. LUCAS FREITAS: Ако одите на cs50.net/style, си оди за да се види стил водич. За проблемот сетови, вашиот резултат за Проблемот сетот се состои од опсегот, што во основа значи дека ако не сите делови на проблемот во собата или ако се обиде нешто. Втората работа е коректност, кои средства е вашата програма го прави она што го требаше да се прави, или прави тоа имаат багови, или е тоа не го прави она што што би требало да се направи. Третата работа е дизајн, што значи ви се имплементира ова добро, или се Дали користите непотребни изјави? Така на пример, ако сакате да се повторува голем број 10 пати, ви се пишува за телефонска линија или сте само прави 10 пати истата изјава, само си ја врши копирате и залепите. Па дизајн е за тоа. И конечно, ќе имаат стил. Стилот е исто како и судејќи ако вашиот код изгледа може да се чита и вид на убаво. Тоа само во основа значи е вашиот код се чита? Би некој друг кој е во потрага се вашиот код да биде во можност да се разбере она што таа го прави? Дали тоа има коментари и слично? Ајде да зборуваме за стил кој си требал да го користите. Првото нешто е коментари. Коментари се многу важни за вашиот код, бидејќи понекогаш правиш вашата програма, и ако знаете што точно дека сакате да го стори тоа само на проектот кодирање, само напишете еден куп на C. Но ако некој друг е во потрага се сте код, тие нема да бидат во можност да се разбере тоа, бидејќи тие не знаат работите кои се во вашата глава, како на pesudocode, па можеби и тие ќе имаат тешко време да се разбере она што го кодот прави. Па коментари се навистина корисни да се објасни за некој кој е во потрага по вашиот код што таа го прави, и всушност, дури и за вас, тие се многу корисни. Како ви одат да се потешко и тешко Psets, си оди за да се види дека кодот добива подолго, а потоа коментари се навистина важна информација и треба сетам што секоја дел од својата програма го прави тоа. Да се ​​стави коментар, можете само да направи намали коса црта и потоа напишете коментар. И целата линија е дел од коментар, и она што ќе се запишам, тоа нема да биде користи за вашиот код. Тоа е во основа како компајлерот се случува да го игнорираат тоа. Дали тоа има смисла? Публика: Што правите повторно за да напишете коментар? LUCAS FREITAS: ова? Црта Slash? Секогаш кога ќе внесете коса црта црта, без оглед на е во тоа што линија не се случува да се смета да се биде В Да? Публика: Значи по коментар, ти со само внесете и да се започне нова линија? LUCAS FREITAS: Да, точно. Лорен КАРВАЉО: црта црта е за една линија коментари. LUCAS FREITAS: На пример, тука имаме - дозволете ми да зумирате - На пример, тука јас сум прогласување плови, Но, можеби ако ти само стави ова во вашиот код, како тебе немаат идеја што е ова што прави, како всушност некој кој е во потрага на овој код ќе биде, како, што грижам се случува? Ако ги ставите коментар велејќи: "конвертирате Фаренхајтови да целзиусови, тоа го прави многу повеќе смисла. Ти си, како, во ред, ти си прави пренамена. Дали тоа има смисла? Па тоа е само нешто што им помага на луѓето подготвени вашиот код и исто така прават ќе бидете во можност да организира вашиот код и подобро. Втората работа е што можете да направите мулти-линија коментари, па да има една коментира за еден куп на линии. Наместо да се стави црта црта, на првата линија коментари, коса црта црта, втората линија, и така натаму, можете можете да го користите коса црта ѕвезда. На начин на кој вие го направите тоа е дека за првата линија на коментар, ти си случува да се направи коса црта ѕвезда ѕвезда, па само така. Исто како и тука имаме почетокот на програма, обично се стави кој сте се, она што оваа програма прави тоа, и работи како што. Тоа е вид на како насловот за програмата. Повторно, тоа не е нешто што компајлерот ќе се грижат за, но тоа е важно за вас да знаете што е ова Програмата го прави или за други луѓе да се знае што вашата програма го прави. Така ли го намали ѕвезда ѕвезда, а потоа последната линија ви се случува да го направите ѕвезда сека да биде во можност да се затвори тој коментар. Значи, во основа за сите други линии, можете само да се напише било што, и ова сите ќе бидат игнорирани. И, исто така, исто како стил, ќе видите дека секоја од линии има ѕвезда, и сите ѕвездите се подредени. Овие се важни работи кои треба да дека вашиот код изгледа убаво. Звучи добро? Сега, услови. Она што Давид беше велејќи дека ние треба всушност се стави во оние слајдови, е дека кога имате било каков вид на изјави АКО или било каков вид на услови, треба да го користите тркалезните загради за да покаже дека тоа е она што ќе се случи кога ќе имаат состојба. Технички, кога имате состојба а потоа следната линија е само еден линија, не технички имаат да се стави на големи загради. Основа на компајлерот ќе се разбере тоа во секој случај како имплицитна. Но, за CS50, бараме од вас момци да се стави на тркалезните загради само така што вашиот кодот е поорганизирани и повеќе може да се чита. Затоа што кодот добива подолго ако немаат големи загради и сл. Станува навистина неуредна. Лорен КАРВАЉО: Ова е токму она што Давид само посочи во моите претходни слајдови. Тоа е дефинитивно работи без кадрава загради, но за стилски причини ние ќе бараме ќе се стави оние внатре И кога ќе почнат да оперираат style50, кој е вид на проверка 50 за стил, тоа ќе ве потсетам да го направите тоа. LUCAS FREITAS: И уште нешто е не заборавајте да се стави на големи загради заедно во секоја линија. Така ли, на пример, на l. Оди до следната линија, отворете го кадрава заграда, тогаш одите на следната линија. Вовлекување, што е за четири места. Тогаш ќе напишам што и да, тогаш уште линија, и да го затворите кадрава голема заграда. Така бидете сигурни дека и оние кадрава загради се во различни линии. Публика: Значи, ако овој код имале како 10 друг IFS, ова треба да биде 10 комплети на загради? LUCAS FREITAS: Да, за секој од нив. Да. Значи, ако, друго ако, и така натаму. ПУБЛИКАТА: Можете ли да не го притиснете копчето Tab за да се вовлекува? LUCAS FREITAS: Ние сме те прашам момци да се користи четири празни места. Некои уредувачи на текст преведе табот како четири простори автоматски. gedit не се случи, па мора да се направи простор простор простор простор. Ова е исто така нешто што некои програмери само што јазичиња, некои програмери само што четири празни места, и некои други луѓе дури и да две или три простори. Тоа е само дека тука ние бараме вие момци да се направи четири празни места. Публика: Има речиси дефинитивно мора да биде начин за gedit да автоматски [нечујни]. Како ниеден [нечујни] прави тоа. LUCAS FREITAS: Да. Мислам дека може да оди на Settings. ПУБЛИКАТА: Тоа веќе не сето тоа. LUCAS FREITAS: Тоа веќе не? OK. Па само бидете сигурни дека имаат четири празни места. Публика: Дали ние треба да се стави на кадрава загради во за петелки, како? LUCAS FREITAS: Да. Лорен КАРВАЉО: Секогаш кога вашиот концизирајќи блок од код, само Ве молиме да користите големи загради. И пред да мислите дека ние сме само се sticklers за овој без добра причина, ако вие момци не одат за да се добие Техника практиканти во големите компании, тие ќе ви даде стил водич, и тие ќе ви кажат ова е она што вашите кодот треба да изгледа. И иако сте научиле да кодот, како ова, можеби во вашата пракса ќе мора да се направи нешто сосема поинаква. Тие не очекуваат да одговара да нивниот стил. LUCAS FREITAS: И уште една работа е кои не ќе забележите колку имам како X, простор, помалку, простор, 0? Секогаш кога ќе имаат оператор - тоа може да биде како плус, минус, време, помалку, поголема, без оглед на оператор - мора да се стави на просторот на левата и правото на операторот. Лорен КАРВАЉО: Оние кои се наречени бинарни операнди. Само бидете сигурни дека секогаш простор од вашиот бинарен операнди. LUCAS FREITAS: Ова е не е бинарен операнд. Лорен КАРВАЉО: Тоа е затоа што тоа се потребни двајца. LUCAS FREITAS: О, да. Добро, прекинувачи. Прво, мора да се види дека исто како и во или на друго место, ако изјава, имате да се стави на кадрава голема заграда на сопствената линија и под кадрава голема заграда тука. Забележите дека постои еден простор по прекинувач, исто како и во ако и друго имавме еден простор помеѓу дека и загради. Значи мора да се стави тоа. И нема простор веднаш по секоја на загради или пред крајот на голема заграда. Па ќе видите дека тоа е сите заедно, а исто така се допаѓа тука. Да? Лорен КАРВАЉО: Мислам дека ние треба да се движат натаму. LUCAS FREITAS: Значи ова е дел од стил водич кој имате за CS50. Бидете сигурни да одат на cs50.net/style и да погледнам во ова. Овие сите се многу важни за вашиот стил на бодови. Дозволете ми да се врати во изјавата. Лорен КАРВАЉО: Би а само користење style50. Ние сме само ќе одат директно на петелки. Во ред е. Па ајде стигнете назад кон содржината, сега дека ние сме поминале во текот на стил водич. Јамки, што сте ги виделе во нула, и ние ќе разговараме за нив во В Во за телефонска линија, постојат три делови на декларација на овој за телефонска линија. Имаш вашиот иницијализација во кој ќе го поставите вашиот променливи. Имаш вашата состојба, кои се проверка за да види дали нешто е вистински или лажни и дали јамка треба да продолжи. И имаш вашиот ажурирање, која е ажурирање на вашиот променливи. Ајде да се земе брз поглед на некои C код на овој за телефонска линија во акција. Што се случува е тука во иницијализација, ние сме поставување јас на 0. Во состојба сме проверка дали i е помала од 10. И во ажурирање ние сме зголемување, i. Па што ќе резултира од ова за телефонска линија? LUCAS FREITAS: Всушност, прв од сите, ви момци знаат што i + + е? Публика: се зголеми за 1. LUCAS FREITAS: се зголеми за 1, да. Значи ова е истото како прави i изнесува јас плус 1. И ќе забележите дека немаме простор помеѓу Јас и + +. Па вие момци знам што е ова ќе направите? Може ли некој да ми каже? А можеби се некои слатки поради тоа? ПУБЛИКАТА: [нечујни] LUCAS FREITAS: OK. [Нечујни] покаже сите подоцна [нечујни]. Да, тоа се случува да се покаже "Ова е CS50 "10 пати. Лорен КАРВАЉО: Претпоставувам дека тоа беше во насловот на слајдот. LUCAS FREITAS: О, да. [Смеа] LUCAS FREITAS: Тоа им помага. Лорен КАРВАЉО: Значи оние се за петелки. Ние ќе видите некои повеќе примери на за петелки подоцна. Но, ајде да всушност ги погледне на Вториот вид на јамка ќе се судрите во C, и се вика додека јамка. Подолго време јамка, сте само доби состојба. Состојбата се проверува во на почетокот, и ако таа состојба точен, а потоа го кодот во рамките на телото на време блок ќе се изврши. И кодот ќе продолжи да изврши толку долго како што состојба останува вистина. Еве еден пример на време јамка во C. Ние ќе се постави брои до 10 да се почне. Додека брои е поголема од 0, ние ќе се задржи печатење оваа променлива тука. Ние ќе Намалување брои и потоа да ги проверите состојбата повторно. Печатење, декриминирачките, чек состојбата повторно. Тука имаме пример кој се однесува на вашето прашање претходно. Имавме проценти е кога бевме печатење стринг, и сега дека ние сме печатење на int, имаме проценти јас како нашата случаеви наместо тоа. Писмата на целиот треба да биде прилично интуитивен, е за стринг, i за Инт. Значи, ако овој код се извршува, треба да одбројува 10-0, печатење секоја цел број. LUCAS FREITAS: И вие може да се мисли на проценти, како таа се чувствува како празно простор, а потоа ќе се стави ова променлива тука во таа празна простор. Така на пример, еве јас ќе имаат само празно, и тогаш јас сум ставање на смета во право, таму, на вредноста на пребројувањето на гласовите. Дали тоа има смисла? Може ли само го прават како printf а потоа цитира, смета? Кои ќе работат? ПУБЛИКАТА: Не LUCAS FREITAS: Не, затоа што тоа ќе всушност печати зборот "брои" наместо печатење на вредноста. Ова е како да се направи тоа се печати вредностите кон променлива наместо само името на променливата. Било какви прашања? ПУБЛИКАТА: Зошто го користите за како се противат на време? Лорен КАРВАЉО: Јас ќе го користи за јамка ако знам точно колку повторувања Сакам моите јамка за да се кандидира. Во овој случај, тоа не е важно, бидејќи, Мислам, јас бев само се обидува да мислам на навистина едноставен пример за овој слајд. Но, ајде да речеме дека сакате нешто да продолжувам да одам додека - LUCAS FREITAS: На пример, ти си прашува за влез додека лицето ти дава право влез. Па како додека на влезот не е Добро, да ги задржи прашуваат за тоа. Или како додека сте родители не даваат пари, да ги задржи прашуваат за тоа. [Смеа] Лорен КАРВАЉО: Ти не знаеш како многу пати ќе мора да го направи тоа. LUCAS FREITAS: затоа што не знам колку пати тоа е ќе продолжи да оди. Лорен КАРВАЉО: Но, во за телефонска линија, што треба да знаете колку пати. Да? Публика: Само да се разјаснат, на проценти вели дека ова е нешто за да се се случи, i е проект за цел број, и коса црта n - Лорен КАРВАЉО: значи? Кој знае што обратна коса црта n значи? Нова линија, да. Токму така. LUCAS FREITAS: Можеш да мислиш на n како нова линија. Лорен КАРВАЉО: Ница. Публика: Што е тоа брои цртичка цртичка [нечујни]? LUCAS FREITAS: Грофот минус минус е истото како плус плус, но наместо зголемување, тоа е намалување од 1. Лорен КАРВАЉО: Секое повеќе додека јамка прашања? Не? Ох, ние требаше да се се прескокнат тоа. Ова е се направи При јамка. Многу сличен на време јамка освен во овој случај ние се провери состојбата по го кодот во телото на јамка извршува еднаш. Па ние се изврши код прва без разлика што. Тогаш ние провери состојбата, извршување повторно ако условот е исполнет. Ќе се најдете со користење на овој кога ти си прашува за корисникот влез. Затоа што ти си секогаш ќе мора да побара еднаш, а потоа во зависност од она корисникот влез е, можеби ќе треба да reprompt и да побарате повторно и повторно, ако влезот не беше она што го се очекува тоа да биде. ПУБЛИКАТА: Значи тоа е како еден вид за луѓето да се пополни. Лорен КАРВАЉО: Да, точно. Ќе најдете, мислам, во вашиот прв Pset, ти си ќе треба да користете направи добро јамка за да се соберат влез од корисникот. Публика: Во зависност од ситуацијата, вашето време петелки ќе имаат тенденција да се кандидира повеќе Почесто отколку додека петелки, како од една или нешто? Лорен КАРВАЉО: Ако е точно - LUCAS FREITAS: Тие секогаш треба да се кандидира точниот износ на времињата што ти сакате да се кандидира. Како ние ги користиме направите додека затоа што навистина сакав да го добиете влез барем еднаш. Во време петелки, понекогаш не сакате да ја изврши на сите, ако тоа не е случај да се изврши. Па тоа зависи од дизајнот. Мислам, Можете да ги користите направите додека или додека додека вашиот код прави тоа што би требало да се направи. Лорен КАРВАЉО: Но, јас не дека одговорот на вашата Прашањето е веројатно да. Да речеме, на состојба е лажна. Во еден случај тоа ќе се кандидира еднаш, и друг случај тоа ќе се кандидира нула пати. Па, да. Повеќе прашања? Да? Публика: јамка состојба може да биде за телефонска линија во однос на променливата други од [нечујни]. Лорен КАРВАЉО: Да, тоа може да биде ништо. Веројатно за почетокот Psets, можете не ќе мора да се судрите со таков случај, но дефинитивно тоа може да биде ништо. LUCAS FREITAS: Мислам дека ние сме направиле тука. Лорен КАРВАЉО: Дали ние? Не? LUCAS FREITAS: петелки? Да. Лорен КАРВАЉО: Ние не треба да биде. Ох, ние се направи со петелки. OK. Всушност, затоа што ние сме биле зборува така многу, ајде всушност сите се движите во текот на study.cs50.net/conditions. И си оди да се движите надолу на проблемите графичка контрола. Па, всушност, додека луѓето се добива овој постави, CS50 Студијата е ќе биде алатка која вашиот TFS ќе го користите да се подготват за делови и дека вие момци да го користите ако ви недостасуваат делови. Тоа се случува да содржи еден куп на слајдови, некои совети и трикови за секоја тема, и некои пракса проблеми со решенија. Зошто не се сите само да погледнам на овој проблем тука. Жал ми е, јас треба да се потсети луѓето да се донесе лап-топ компјутери денес. Но ако немате лаптоп, тоа е во ред. Вие само може да ни трошка оваа надолу на парче хартија или се погледне во текот рамо вашиот сосед. Ајде да се обидеме и да напише програма која поттикнува на корисникот да се земе се погоди, просечен број на деца по семејство единица во САД. Тој број е 2, патем, како што може да се види од овие примери. Ние сакаме да се печати просечниот број на деца по семејство во САД, тогаш ние сакате да што? Ние сакаме да се соберат влез од корисникот. А потоа во зависност од она на корисникот влезот е, си оди за да испечатите или ова е точно или ова не е точно. И првиот нешто што ќе види, ако кликнете на малата стрелка на дното на елемент проблеми е место да ни трошка одредување на некои pseudocode. Па вие не сте сеуште програмирање. Сте само добивање на вашиот идеи во ред. Сака ли некој да им помогне на Лукас излезе со право pseudocode за овој проблем? LUCAS FREITAS: Што е првото нешто дека ние веројатно ќе треба да го направите тука? Што ви момци мислиш? ПУБЛИКАТА: [нечујни] LUCAS FREITAS: Да, во ред. Значи, печатење. Само велат дека печатените овој просек Бројот на луѓето? OK. Печати прашање, да речеме. Откако ќе се печати на ова прашање, она што треба да направам? ПУБЛИКАТА: Земете влез. LUCAS FREITAS: Земете влез. Нешто друго? Публика: Состојба. LUCAS FREITAS: Состојба. Лорен КАРВАЉО: Што е тоа состојба ќе биде? ПУБЛИКАТА: Бројот на [нечујни]. Лорен КАРВАЉО: Право. LUCAS FREITAS: Па што сум јас ќе да се провери во состојба? Публика: Ако изнесува 2. Лорен КАРВАЉО: Ако изнесува 2. Токму така. LUCAS FREITAS: Дали има нешто друго што треба да правам? Публика: грофот. LUCAS FREITAS: Значи, ако тоа е еднакво на 2, да речеме - дозволете ми само напиши ако влез еднаква на до 2, тогаш она што јас ќе одам да направите е да печати точно. А потоа друг, јас ќе одам да се печати неточни. Нешто друго? Не? Лорен КАРВАЉО: Значи вие да кликнете на - Дали сите имаат оваа долу? LUCAS FREITAS: Дали има смисла? Па сега ајде да се обидеме да кодот ова. Лорен КАРВАЉО: Ако кликнете на малку Arrow, тоа всушност го спасува вашиот pseudocode, што е навистина возбудливо. И можете да направите оние во коментари, ако сакате само да се потсетам на што да правам. LUCAS FREITAS: Така на пример, првиот Одам да се печати на прашањето, па колку сум јас ќе го направи тоа, всушност? printf. Па printf, а прашањето е просек број на деца по семејство во САД. Тогаш јас ќе одам да се добие влез од корисникот. Па како можам да направам тоа? ПУБЛИКАТА: Земете Инт. Лорен КАРВАЉО: GetInt. LUCAS FREITAS: OK. Значи прво да изјави, нели? int, ајде да го наречеме N еднаква GetInt. И сега состојба. Па дозволете ми да кажам дека одам да тука проверка одговор. Така што првиот, ако влез, кој е n, изнесува да - како сум јас ќе напишам тоа? ПУБЛИКАТА: Еднакви еднакви. LUCAS FREITAS: Совршена. Па n. И ќе забележите дека јас се направи простор, еднакво, е еднаква на, просторот, точно. И сега што да правам? Нешто многу важно за стил. На тркалезните загради. А потоа јас ќе одам да се печати. Како можам да ги испечатите? printf. Публика: Може да се капитализирани? LUCAS FREITAS: Не Тоа би требало да биде со мали букви. Па тоа е точно. Ова ќе биде доволно за printf изјава, или сум јас недостасува нешто? Публика: Нова линија. LUCAS FREITAS: Нова линија, да. И сега на друго место. Публика: Дали постои простор по printf, или не? Лорен КАРВАЉО: ние треба да провери стил водич. Публика: Тоа не треба да биде. LUCAS FREITAS: Не треба да биде, ОК. Па што друго, printf, "Тоа не е точно." Лорен КАРВАЉО: Упс, вашиот цитати. LUCAS FREITAS: OK. Нешто друго? Што изгледа добро? Лорен КАРВАЉО: Ќе се обидеме тоа? LUCAS FREITAS: Да, ајде да се кандидира. Па тоа е компајлирање, и тоа чини дека таа работи. Ајде да се обидеме две деца. Тоа е точно. И сега нека се кандидира повторно, но сега наместо на ставање две деца, да кажам дека јас одам да се стави како пет. Дека не е точно. Па се чини дека таа работи. Лорен КАРВАЉО: Зошто не им покажеме она што се случува ако се стави нешто чудни, како и некои букви. LUCAS FREITAS: О, да. Ајде исто така, проверете тоа. Што ако корисникот се обидува да се плеткаме со вашата програма, а тие само пишуваат, јас не знам два. Тоа се случува да се каже да се обидете повторно. Лорен КАРВАЉО: Значи GetInt е барајќи од нив да се обидете повторно. Ние не треба да се грижи тоа самите. LUCAS FREITAS: Да. Па ако јас всушност се стави број, тоа е случува да се задржи ме прашува да се обидете повторно. Публика: Како го извршите? LUCAS FREITAS: Само кликнете ова копче ѕвезда. Лорен КАРВАЉО: Треба да одат нагоре. Таму да одите. LUCAS FREITAS: Ѕвездата копчето во право таму. Да? Публика: Дали тоа го натера [нечујни] со децимални броеви премногу? Лорен КАРВАЉО: Верувам дека ќе. LUCAS FREITAS: Ако го прави тоа што? Лорен КАРВАЉО: Ако тие тип во децимален број, мислам дека тоа се случува да прашува. LUCAS FREITAS: Ајде да видиме. Лорен КАРВАЉО: Бидејќи тоа не е int. LUCAS FREITAS: Да. Лорен КАРВАЉО: Значи тоа не е int, Се Инт ќе побара од вас да се обидете повторно. ПУБЛИКАТА: Значи, каде во тој код ќе биде децимално место што го поттикнува на корисникот дека тие мора да влезе цел број конкретно? Лорен КАРВАЉО: GetInt е, всушност, тоа го прават за нас. Публика: Не, мислам ако сакаме да влезат [нечујни] LUCAS FREITAS: Може да се каже како просек број на деца во САД. Не знам. Можеме да кажеме, на пример, "Ве молам внесување на број. " Лорен КАРВАЉО: цел број еднаков на просечниот број. Мислам, тоа е само како ќе збор, нели? LUCAS FREITAS: Да. Ова не е дел од всушност кодирање. Тоа е повеќе од она што како ви се случува да сакаат да пишува во вашата програма. Публика: Како би го кандидира, ако тоа е всушност во gedit [нечујни]. Наместо притискање игра? LUCAS FREITAS: Ние ќе Првиот го компајлирате. Ние можеме да го направи тоа со правење марка и името на датотеката. А потоа да го извршите, ние ќе направиме точка црта и името на програмата. Публика: Претпоставувам дека она што јас мислев ако сакавме на програмата за да се одговори на нивниот неправилен, неправилен влез, вие не треба да се стави во - LUCAS FREITAS: Ние не ќе можат да го направите тоа затоа што кодот ова вели обидете повторно доаѓа од се Инт што е функција која е веќе имплементиран за нас преку CS50 библиотека, а од тоа е веќе имплементиран таму, ние не може само [нечујни]. Лорен КАРВАЉО: Ако не го користите GetInt, тогаш можете да го направите тоа. LUCAS FREITAS: Да. Но, ако сте со користење GetInt, дека не можеш. Било какви други прашања? ПУБЛИКАТА: Може ли да се качил со како GetFloat а потоа да биде во можност да се стави тоа во децимална? LUCAS FREITAS: Да. Публика: OK. Тогаш само може да влез плови еднаквите - Лорен КАРВАЉО: Да. Сосема истите, освен на плови наместо Инт. LUCAS FREITAS: Само да го стави тука и потоа GetFloat таму. Публика: како ќе види или го виделе - Лорен КАРВАЉО: имаме не стигнал уште. Публика: - прави нееднаквост со плови не [нечујни] Публика: Што прават semicolons значи? Лорен КАРВАЉО: На запирка само значи дека оваа изјава е завршена, и ние ќе одиме кон следниот слајд. ПУБЛИКАТА: Значи тоа е потребно секој пат? Лорен КАРВАЉО: Да. Па, добро, па не за овие услови, затоа што тие се концизирајќи нешто. Значи, во основа, ако нешто предизвикува можете да потоа се создаде кадрава голема заграда блок, не стави запирка на крајот. LUCAS FREITAS: Но, сè друго, да. Кога ќе завршите со изјава, стави запирка. И ако сте заборавиле semicolons, на компајлерот ќе му се налутил на вас, и ви се случува да имаат да се обиде да го поправам. Лорен КАРВАЉО: Ако го ставам точка-запирка тука, тоа ќе престане ова, и јас никогаш нема да се изврши што е внатре, патем. Па тоа е една од оние вообичаени грешки. ПУБЛИКАТА: Секогаш извршување. Лорен КАРВАЉО: Да. Во овој случај, ние секогаш би изврши она што е внатре. ПУБЛИКАТА: Вашиот стил [нечујни] прикачите тоа за вас, мислев. Лорен КАРВАЉО: О, тоа е вистина. ПУБЛИКАТА: [нечујни] единствен линија работа [нечујни] Публика: Да? ПУБЛИКАТА: Може имаш повеќе влезови во една линија? Па како може да ви побара на корисниците да се печати две работи? Лорен КАРВАЉО: Не користите - LUCAS FREITAS: Не Да речеме дека јас исто така, сакаат да се добие оваа цел м. Морам да го направи тоа во различни линија. Публика: Ако сте биле да се кандидира тоа, како [нечујни]? Тоа ќе се печати на брза таму [нечујни] и тогаш ќе влезат во една и - Лорен КАРВАЉО: Па, го работи. Мислам, нема ништо запирање на нас од само да го извршува и да види што ќе се случи. LUCAS FREITAS: Мислам дека тоа е ќе се жали во нас бидејќи ние не сме користење - Лорен КАРВАЉО: Упс. LUCAS FREITAS: Тоа се пожали на нас право сега, бидејќи ние не сме со користење на овој променлива, но ако сум го правела, на пример, n е еднакво на изнесува, и m е еднакво на изнесува, тогаш што ќе се случи во овој случај? Што би оваа програма се направи? Публика: Јас сум само се прашувам како тоа би - Лорен КАРВАЉО: Таа само сака да знаете како тоа изгледа како, мислам, нели? Па тоа беше еден од нив, а потоа таа застанала на втората. Мислам дека треба да се оди натаму, бидејќи имаме уште една слајд шоуто да оди пред - сакаш да се повлече до математика? LUCAS FREITAS: Да, математика. Лорен КАРВАЉО: Испрати мене само една секунда. Постојат неколку различни нумеричка променливи во В нумерички податоци во C може да се класифицираат во различни видови, и овие се оние што ќе види најчесто. И int е цел број. Вие не може да има било децимали. Во апаратот, потребно е 32 бита за чување на Инт. Носете може да има децимали. Тоа исто така ги зема 32 бита за да ја запази плови во апаратот. А двојно е број со децимален точка која трае 64 бита за негово складирање, што значи дека само може да имаат поголема прецизност, бидејќи може да има повеќе - она што вие го викате? LUCAS FREITAS: Да, тоа е многу повеќе. Лорен КАРВАЉО: Повеќе места по децималната точка. И долго долго е цел број кој ги зема 64 бита за да болно тоа во апаратот. LUCAS FREITAS: Значи тоа може да биде поголема од ints може да биде. Лорен КАРВАЉО: Она за податоци видови во C е дека тие ви кажам што вид на податоци може да се сместат во вашиот променлива. Тие ви кажам како можете да го користите овој променлива во вашата програма. Тоа е многу важно да се задржи само песна на она што тип на податок што го користите, и ако вие не треба да го дадат од тип на податоци на друг, бидете сигурни дека знаете токму она што се случува кога тој кастинг се одвива. И ќе видите пример подоцна на овие слајдови на грешка што може да се случи. Ајде да ги разгледаме во некои математика во C и дека навистина внимателно, претпоставувам, за она што се случува кога оваа математика се случува. Во првата линија, што е се случува кога Изјавувам X? ПУБЛИКАТА: Вие сте им овозможува на x да биде нешто? Лорен КАРВАЉО: Да. Па, јас сум навистина бара оперативниот систем за 32 делови од меморијата, нели? Во која може да се сместат на int, и Одам да се јавите дека int x. LUCAS FREITAS: Во суштина оди во меморијата и наоѓање на место, што е 32 парчиња и вели, еј, сакам овој простор, и тоа се случува да се нарече х. Па ти си само доста наод кутија во вашата меморија за да се продавница вредности за x. Лорен КАРВАЉО: И тогаш се иницијализира x, што значи дека јас само чување на вредноста на 2 во тоа место, што парче на меморија, дека ние праша оперативен систем за. И овде она што го правиме е ние сме всушност прогласување и иницијализацијата y во една линија, наместо на во две линии како што правевме до тука, кој исто така е совршено во ред, Ние сме додавање на 1 до X, и ние сме чување дека вредност во y. LUCAS FREITAS: Значи, во основа она што оваа линија се случи, смета сега кутија за y, а потоа нејзината вредност, нешто што ви се случува да се стави во внатрешноста на кутијата, е ќе биде вредноста на x плус 1. Така што има ова поле за y. Станува вредност на x, изгледа тука, и види дека тоа е 2. Го стави таму, плус 1, па го става 3 таму. Дали тоа има смисла? Па у ќе биде 2 во овој случај. Лорен КАРВАЉО: Добро, кул. Видовме некои тоа, па ајде сега мислам за поделба во C. Еве јас сум прогласување и иницијализацијата плови наречен одговор и делење 1 од 10, и тогаш јас сум печатење на одговор со две децимални места. И се напомене тука, во моето printf изјава, кога сакам да печати нешто на две децимални места,% 0,2 f е она што сакате да го користите. Значи поентата 2 е само велејќи Ми требаат две места по децимална печатени надвор. Сега, она што ќе се случи ако јас ја извршите оваа код? Дали некој има идеја? Што би испечатите? LUCAS FREITAS: Кои се ние очекуваме да се добие. Лорен КАРВАЉО: Што прават сакаме, прво на сите? LUCAS FREITAS: [нечујни] Лорен КАРВАЉО: 0,1, да. Но она што ќе испечатите? ПУБЛИКАТА: [нечујни] Лорен КАРВАЉО: Па, не, всушност. Ова е она што јас го зборувам за тоа зошто вие треба да се задржи многу внимателни пратите на вашата типови на податоци. Значи, она што тип на податок е ова? Е int, нели? Нема децимално место. 10 е исто така Инт. Нема децимално место. Ако Го делам со int од int, добивам int која не е 0,1, бидејќи ints не може да има децимални места, но само 0. Бидејќи int само truncates надвор од децимални места. LUCAS FREITAS: Значи секогаш кога ќе направи операции со ints, си оди за да добие int како одговор. Значи, во основа, она што на компјутерот прави, тоа е поделби 1 од 10, и станува 0.1. Но, тогаш тоа е како, чекај, ова е би требало да биде цел број, па можете едноставно игнорира 0,1, па тоа е сега само 0. Лорен КАРВАЉО: Значи, кога јас печати ја оваа надвор, да се добие 0,00 наместо 0,10. LUCAS FREITAS: Дали тоа има смисла? Лорен КАРВАЉО: Тоа е вид на несреќниот, нели? LUCAS FREITAS: Па како можеме да го надминете овој? Лорен КАРВАЉО: Да се обиде и да ја поправите тоа. Еве еден пример за тоа каде јас сум всушност кастинг на 1 и 10 да тече. Па сега, 1 повеќе не е int. 1 е плови. Патем, ова е само синтаксата за кога ќе сакате да го дадат од една тип на податок до друг. Вие само може да се стави на типот на податоци во загради и дека имаат само претходат вредноста што сте кастинг. Па еве, јас сум дели плови од плови да се добие плови одговор. И да, ова би во Всушност печати 0,10. Дали тоа има смисла? LUCAS FREITAS: Значи тип кастинг е само конвертирање од еден вид на друг. Па плови 1 е всушност 1.000. Не е точно ова, но тоа е нешто со децимални места што е всушност 1. Дали тоа има смисла? Да? Публика: Што ако си направил плови одговор еднаква на 1,0 поделено со 10? Лорен КАРВАЉО: Ти си всушност ќе да се види дека во следниот слајд. Тоа е всушност нашата следниот слајд. Ова е всушност поубав од тип кастинг, си мислам. Значи овие две се плови само со природата на фактот дека тие имаат децимални места. Да? Публика: Што ако си направил [нечујни] поделено со 10? Лорен КАРВАЉО: Всушност плови поделена со int всушност сте му дава плови, така што ќе работи добро. Чекај, не сите се разбере ова? Бидејќи ова ќе биде навистина голема работа во Pset1, всушност. Да? Публика: Може ли само брзо одиме во текот на црвениот дел? Лорен КАРВАЉО: На црвениот дел, да. Лукас, сакаш да? LUCAS FREITAS: OK. Па се сеќавам дека отсто е случаеви. Тоа е како празен простор. Па ајде да се обидеме да разбереме што што се случува овде. Проценти значи дека тоа е случаеви. Тогаш го имате ѓ, што значи дека овој случаеви за плови. Последното нешто што го имаме овде е 0,2, што значи сакам да имам две децимални места за плови. Ако јас само имаше% f, тие тоа ќе се стави еден куп на децимални места. Па јас само може да се стави 0,2 или 0,1 или 0,5, или што, и тоа се случува да се стави дека бројот на децимални места. Единственото нешто е дека ако се стави како 0,100 или .1,000, тоа не е всушност случува да се стави сите оние децимални места поради тоа што нема доволно меморија да го имаат тоа прецизност. Било какви други прашања? Да? ПУБЛИКАТА: Значи плови само им овозможува на да се оди подалеку од цели броеви? LUCAS FREITAS: Да. Лорен КАРВАЉО: Па, плови само ви овозможува да имате децимални места. LUCAS FREITAS: Тоа само значи дека сега може да има децимална броеви. ПУБЛИКАТА: Зошто би ние некогаш се користи броеви? LUCAS FREITAS: Зошто би го користите броеви? Можеби ако сте сметано од 0 до 10, сакате да го користите, всушност е цел број. Вие не треба да се користи плови. Во некои ситуации, вие не мора да всушност - Лорен КАРВАЉО: Можеби ќе не сакаат децимали. LUCAS FREITAS: Можеби не сакате да ја користите плови. Лорен КАРВАЉО: Од друга работа е, се сеќавам, и се стави плови и int земе 32 битови да ги чува, а можеби и вие не сакате да губите битови на децимални места. LUCAS FREITAS: Да. Па како, само мислам за ова. Имате 32 бита за двата на int и плови. За int, сите оние 32 бита оди на цел дел. Ако користите плови со 32 бита, што имаат дел од оваа меморија се користи за бројот, за целиот број, а другиот дел се користи за децимални места. Па тоа значи дека не можете да стигнете до многу големи броеви со плови бидејќи плови веќе со користење на многу меморија за децимални места. Да? Публика: Тоа Првиот одговор, што точно го прави тоа? Е тоа поставување на вредноста на плови еднакви на тоа случаеви на кои можете да потсетиме дека во следната линија? Таа вели дека се плови одговор. LUCAS FREITAS: Да. Значи, плови одговор значи дека сте добивање сега малку кофа во меморија што има плови, и што се случува да се нарече одговор. Значи тоа е она што плови одговор го прави тоа. А потоа ќе каже дека во внатрешноста на ова, си оди за да се стави резултат на ова. Па ви се случува да го направите 1,0 поделено со 10,0, ќе добиете 0,1, а потоа ќе се стави дека во внатрешноста на одговор. Лорен КАРВАЉО: Значи во една линија, ние сме прогласување и иницијализацијата оваа плови наречен одговор. LUCAS FREITAS: Интересно, иако ова е само една линија, тоа го прави повеќе операции. Тоа е само начин на C најмување ќе се користат помалку код. Тоа е истото како троичен оператор, како што само може да се направи една [Нечујни] во една линија. Тоа е всушност прави истото како прави плови одговор, запирка, а тогаш одговорот е еднаква на тоа, но наместо да те направи две линии за тоа, тоа е како кратенка. Да? Публика: Значи, ако сте трчаше ова, тоа ќе биде 0,10? LUCAS FREITAS: Да. Да? Публика: е одговор всушност код, или тоа е само за името? Лорен КАРВАЉО: Оваа е всушност код. Ова е она што ние ќе да го именува нашиот променлива. ПУБЛИКАТА: Значи тоа е само име [нечујни]. Лорен КАРВАЉО: Да. Можев да речам плови x е еднаква на 1,0. LUCAS FREITAS: Работата е дека името на променливата е нешто што ќе го користите. Тоа е важно за вас. За вистинските програма, единственото нешто што е важно е вредноста што имаат внатрешноста на корпата. Причината зошто треба променливи и имиња на променливи е да знаеш она што си имаш работа со, како каков вид на податоците што се пристапува во исто време. Но, за кодот себе, ако ти се јавам одговорете или прашање или ништо, доста, тоа не е важно. Тоа не е важно. Додека сте доследни во секој појава што и така да го наречеме нешто друго. Да? Публика: Дали променливи оди подалеку од функција? Како ако сте биле за да се создаде заграда [Нечујни], може да ви само [Нечујни] одговори повторно? Лорен КАРВАЉО: Не ПУБЛИКАТА: [нечујни] Лорен КАРВАЉО: Не Тоа би било надвор од опсегот на овој променлива. А всушност, тоа е вид на Интересно, затоа што кога имаме работи како јамки или овие ако услови, ако декларирате променлива во рамките на друг сет на тркалезните загради, тоа навистина постои само рамките на тие големи загради. Публика: Еден последен белешка за на [нечујни] плови. Зошто би Дали некогаш сте сакате да го користите ints? Ова е повеќе од од страна на белешка од ништо, но вашиот компјутер е значително подобар во справувањето со ints отколку што е во ракување плови. Тоа е како цел на големината побрзо. Значи, ако ние само се ракува само лебди, работите ќе бидат многу побавно. Лорен КАРВАЉО: Всушност, се чини дека да биде проблем со плови. LUCAS FREITAS: Вид на причината за тоа, може да се мисли, е како во бинарна можете да претставуваат цели броеви со ставање 0 и 1 е. Лорен КАРВАЉО: Тоа е следното нешто. LUCAS FREITAS: OK. Страшни. Лорен КАРВАЉО: Само се одржи таа мисла. LUCAS FREITAS: Добро, ќе ви кажам подоцна. Лорен КАРВАЉО: Пред да се дојде до она што Лукас беше само велејќи, оператор приоритет. Ова е здравиот разум. Вие момци имаат направено ова е доволно. Значи, само ако нешто е во загради, тоа ќе се случи во прв план. Тоа е множење има приоритет над тоа, одземање, такви работи. Па така всушност, само не секој сакаат да да ми кажете што број еден, всушност, евалуира? Публика: 27. Лорен КАРВАЉО: 27? Да. LUCAS FREITAS: Дозволете ми да даде бонбони на луѓето. Лорен КАРВАЉО: Во ред. Што е со број два? Што е со број два? Публика: 22. Лорен КАРВАЉО: 22, да. Не знам кој доби тоа. Број три? Публика: 10. Лорен КАРВАЉО: 10, да. Кул. Па modulo. Лукас, сакаш да се објасни modulo? LUCAS FREITAS: modulo е овој оператор што е всушност многу корисно за куп на проблеми. Ако го направам 55 modulo 10, она што го прави овој да речеме дека сакам да подели 55 од 10. Што можам да добијам? Таа се чувствува исто како ако јас сум всушност само прави поделба, што е прв пат добив број? ПУБЛИКАТА: 5. LUCAS FREITAS: 5. А потоа остатокот е 5, нели? Па тоа е како 5 пати 10 плус 5. Во суштина, она што modulo не, се обидува да поделам овој број со овој еден, а го гледа она што е остатокот на поделба. Лорен КАРВАЉО: Значи тоа само се враќа остатокот. Значи број еден е она? 5. Број два? ПУБЛИКАТА: 3. Лорен КАРВАЉО: 3. Број три? 0. И четири е 1. Токму така. LUCAS FREITAS: Едноставно, нели? Лорен КАРВАЉО: Зошто не го прескокнете овој само затоа што ние навистина не треба време, и луѓето се чини дека да се разбере. Значи тука е она што Лукас беше само зборува. LUCAS FREITAS: Друга причина зошто јас ќе го користи ints наместо плови е дека плови се многу непрецизни. И зошто се тие непрецизна? Давид му рече дека за да се претставуваат цел број, на пример, ние ги користиме 0 и 1, нели? А потоа вие во основа го прават множење, направи сите оние операции да се знае што децимален број имате, наместо на бинарни. Она што се случува сега, ако јас се обидувам да се стави децимална поени? Всушност, на пример, ако имам бројот како 3,33333? Се чувствува како 10 повеќе од 3. Како јас ќе ги чува сите 3 е дека имам после тоа? Тоа е навистина тешко, нели? Вие не може само да му кажете на компјутерот, еј, имам 3 и тогаш ќе го направите тоа засекогаш. Всушност компјутер не е доволно паметни за тоа. Значи, во основа сите на вашиот компјутер не е дека се обидува да се стави како многу цифри што тоа може да се до меморијата што го имате. Па да речеме дека тоа се случува да велат 3,3333, и тоа е тоа. Па тоа не е во можност да всушност го изразат токму она што плови е. Лорен КАРВАЉО: Имаме ограничен број на битови, што значи дека не секој децимален број ќе биде можност да бидат претставени токму. И така во овој пример, ако ние сме печатење 0,1, ние сме сега за печатење од 20 места. LUCAS FREITAS: Исто како и јас ја кажува вие момци, може да се стави било кој број. Но ако сте само направи две места, сакате да се добие 0,10, но ако се стави 20 места, тоа се случува да ви покаже еден куп на е затоа што тоа е она што може да се стави во меморијата, нели? Но токму тука, до 0, , а потоа е само да го стави куп на случајни броеви. Ова е вид на како некои - Лорен КАРВАЉО: Тоа е затоа што ние сме не се во можност да ја претставува оваа децимална токму со број на битови што го имаме. LUCAS FREITAS: И тогаш компјутер е во основа кои ви даваат голем број ѓубре. Ова не е всушност вредноста на број. ПУБЛИКАТА: Тоа е како блиски, како тоа може да се добие [нечујни] со користење на [нечујни]. Лорен КАРВАЉО: Значи импликација на ова е тоа што да речеме дека наместо се 0.100014, без разлика, што ако тоа беше 0,0999 - добро, во ред. Да се ​​преправам дека вистински одговор за ова беше 0,9999999. Тоа е многу блиску до 1, но тоа не е точно 1. Тоа е 0,99999. Тоа значи дека ако јас земам дека 0,999, и јас го фрли на int, да се добие 0. Јас не се 1. LUCAS FREITAS: Бидејќи се сеќавам, кастинг од плови кон int, вие само ги игнорира сите децимални места. Можете само да ги игнорираме. Нема такво нешто како заокружување или трчаат кога ќе typecast. Всушност, постои оваа функција што не заокружување, што е многу важни, но само мислам дека кога ќе го направите typecasting, тоа е само случува да ги избришете сè. Па дури и ако имате 0,99999, тоа се случува да му го даде 0 ако typecast [Нечујни] цел број. Лорен КАРВАЉО: Значи само да се биде навистина свесни на подвижна запирка во прецизноста, особено кога ќе почнете да да го користите лебди во Pset1. Но прошетка низ треба ве предупредам на тоа како добро. LUCAS FREITAS: И всушност тоа е навистина тешко, на пример, ако сум го правела плови одговор 1 еднаква на 1,0 текот 10, и потоа да ја пушти одговор 2 еднакво 10,0 над 100,0. Тие се исти број, нели? 0,1, нели? 1 повеќе од 10 или 10 повеќе од 100. Но сега ако јас се обидувам да го видиш еднаквост, како ако одговорот 1 е еднаков на одговори 2, Можеби тоа не е всушност ќе да биде истото. Па плови се вид на, како што. Тие се како прави еднаквост.