>> ЈАСОН Hirschhorn: Добредојдовте до три недели, секој.
Имаме зафатен, но возбудливи делот пред нас.
Значи прво, затоа што сме го направиле некои напредок со текот, но ние се уште
имаат многу за учење што да се прави, јас сум ќе ви покаже момци некои ресурси
што треба да се докаже да биде неверојатно како корисни вие не само што им пријде на вашиот
Проблемот сетови, но, исто така, се вари сите материјалот ние да ви даде момци во
предавања и панталони и секција.
>> Тогаш ние ќе треба да поминат првите 20 до 25 минути од делот случува во текот
GDB, кои може или не може да има користи во овој момент, но тоа е
неверојатно корисна алатка што ќе да ви помогне да debug вашите програми.
Многу од вас може да се користат printf во средината на вашата програма да дознаам
од она што променлива изнесуваше.
GDB е дури и подобар од printf и не зафркнам вашиот код затоа што
стартувате на извршна датотека.
Па ние ќе одиме во текот на 10 најкорисен команди ви треба за gdb, и ние сме
ќе одат на вежба заедно, така во проблемот се утврдени три и пошироко, ќе
можете да го користите GDB да им помогне на дебагирање вашите програми.
И, конечно, ние ќе одиме над некои сортирање и пребарување алгоритми
што го виде во предавањето, и ние сме ќе всушност код, не само
pseudocode, но кодот бинарни пребарување, меур сортирање и селекција вид.
>> Значи прво, сакам да одам во текот на ресурси.
Ова е голема листа, и тоа е помал фонт бидејќи имав многу да
одговара на тука.
Но, овие не само што ќе ви помогне, повторно, со проблемот поставува и
варењето информации што го научиле, но дефинитивно, ајде квиз време, тие ќе
биде неверојатно корисна.
Значи прво, предавањето белешки.
Ако одите на cs50.net/lectures и дојдете до одредени недела и ден,
ќе видите дека постојат белешки за секој предавање, што не е едноставно
препис, но изменето верзија на она што беше покриена со предавање со код
фрагменти и други корисни tidbits.
Силно препорачувам случува во текот оние.
А потоа, како и, таму е изворниот код достапни од секоја лекција.
И повторно, овие слајдови, исто така, ќе биде достапна на интернет на cs50.net/sections
оваа вечер.
>> Па втората се шорцеви, секоја недела, кои покрие теми, обично 5-15
минути во должина.
И оние надевам дека ќе ви даде голем буквар на различни теми.
Трето -
и ова е сосема нов на овој година - е study.cs50.net.
Ако не сте го проверуваат надвор, јас Силно препорачувам да го стори тоа.
Можеш да одбереш некоја тема.
Имаме десетици теми таму.
Така на пример, кога се откинува функции.
Тоа ви дава некои слајдови и забележува на функции.
Тоа се, всушност, слајдови кои TFS се охрабруваат да ги користат во текот на нашето
презентации во секција.
Постои, исто така совети и трикови за справување со функции, и има
пракса проблеми кои им помагаат на ќе работат со функции.
Ние, исто така ви даде линкови до краток за функции и времињата што функции
доаѓаат во предавање.
Па study.cs50.net, сосема нови овој година, фантастичен ресурс.
>> Следно, имам човек, кој е во упатството команда која ќе може да се кандидира на
командната линија.
Значи, ако имате било какви прашања во врска со команда, на пример, ранд, која ние
сретнал минатата недела за време секција и, најверојатно, ќе се среќаваат во
вашиот проблем поставени кога минува низ генерира код, но ако го напишете човек
ранд, ќе добиете на страница, која сите што кажува за ранд.
Тоа ви дава она што е потребно, на параметри е потребно, како и враќање
видот и краток опис на таа функција.
>> Па проверете ранд.
Тоа може да биде малку разточен и збунувачки, па понекогаш сметам дека
едноставно Googling она што сакам да знам е најдобар начин да го најдете одговорот.
Па се практикуваат со Google.
Се добие добар во Google.
Тоа ќе стане вашиот најдобар пријател.
>> Како и на Google, ако не можете да го најдете на Google, cs50.net/discuss, тоа е
дискусијата на форумот.
Шансите се ако имате некое прашање, еден на вашиот 700 + врсници, исто така, вели дека
прашање и може да се побара веќе во дискутираат
форуми и да го имаат одговорено.
Значи, ако имате заеднички прашање или имате некое прашање, кој мислите дека
можеби другите луѓе може да се кандидира во, проверете cs50.net/discuss.
>> Конечно, во последните две, ако сакате да разговара со вистински човек, канцеларија
часа од понеделник до петок.
Таму е исто така на интернет на работното време за продолжување студенти.
И последно, но секако не и најмалку важно, мене, фантастичен точка.
Сите вас да ми контакт информации.
Ако ви треба нешто, Ве молиме да не двоумете се да ме контактирате.
Секогаш се чувствуваат слободни да го стори тоа.
Многу малку од вас ми додадени на Gchat, така што е разочарувачки,
но се надевам дека ќе се промени помеѓу оваа и следната секција.
Било какви прашања досега на ресурси?
Одлично.
>> Конечно, уште еден приклучок за повратни информации, sayat.me/cs50.
Може да ми даде анонимни повратни информации за тоа како јас го правам.
Тоа беше навистина од голема помош минатата недела.
Добив неколку коментари од вас момци веднаш по дел, плус од
другите ученици кои го гледав во текот на неделата, и тоа
беше неверојатно корисни.
Одам да се обиде и да го ограничат мојата употреба на зборот "слатка", но јас ќе се покаже мојот
ентузијазам и возбуда на други начини.
Но имаше и други дополнителни суштински повратните информации,
двете предности и делта.
Затоа ве молам, јас ви даде момци повратни информации на вашиот проблем комплети.
Се чувствуваат слободни да ми даде повратни информации на мојот настава.
Јас сум тука за вас момци.
>> Одлично.
Тоа е сè што имам за првиот дел.
Дали некој има било прашања досега?
И имам белешка за контролниот центар.
Продолжување на студентите ме messaged велејќи дека тие не се добива никакви аудио,
но тоа е надвор од мојата моќ да ги поправат.
Па се надевам дека добива наскоро решено.
Ако гледате онлајн, здраво, но вие не може да ме чуе.
>> Значи прво, ние ќе се обидеме да се оди преку gdb.
GDB, како што навести порано, е дебагирање алатка
многу подобро отколку printf.
Значи, за да започнете со GDB, момци, ако сакате да го отворите вашиот апарат
и да ги преземат датотеката која ја испратена до вас порано - оваа датотека, исто така, ќе биде
достапни на интернет во малку -
и да ја стартувате gdb. / име на датотека.
Прво, се разбира, треба да се состави поднесе, бидејќи GDB работи само за
извршна датотека.
>> Но ако некогаш сакате да започнете GDB, првото нешто што го правите,
ќе се кандидира gdb. / Цезар.
Значи тоа е името на програмата ние сме ќе одат со него во моментов.
Па ќе одам да се напише направи Цезар, кој ќе ми даде извршна датотека
тука е истакнато во зелена боја.
А потоа јас ќе одам да се кандидира gdb. / Цезар.
>> И таму да одите.
Гледаш имаме некој текст ми кажуваше за верзијата на GDB, ми даваат
некои гаранција информации, а потоа ние навремена БДП, кој изгледа вид
на како нашиот командната линија, Но, гледате е отворен
paren, GDB, во близина paren.
Пред да се продолжи и debug оваа датотека дека јас испратени до сите вас, ајде да погледнеме на
некои корисни команди па ние имаме чувство од она што се случува да се покрие.
>> Овие команди се наведени тука во редоследот по кој јас обично ги користите.
Па да почнам мојата програма од трчање GBD. / Име на програмата,
во овој случај, Цезар.
А потоа Првото нешто што правам 99,9% од времето е тип пауза значи.
Која поставува брејк на главната.
Во суштина, она што го правиш таму е програма се случува да се запре на
Главната па можете да почнете испитување го линија страна на линијата, отколку водење на сите
пат низ.
Може да се скрши на различни точки во вашиот код, но главната е генерално
Добро место за почеток.
>> Следната команда Трчам е рок.
Која започнува на програмата за трчање, и ако ви треба за да влезат во командната линија
аргументи, ќе го стартувате таа команда.
Работи со аргументи.
Така, бидејќи ние се случува во текот верзија на Ц, кој е на програмата вас момци
напиша за pset две -
ова, се разбира, има некои грешки во него кои се надевам дека ќе најдеме -
ние ќе се кандидира работи со некои команда линија аргументи, бидејќи Цезар,
како вие момци знаат за проблемот постави спецификации, зема некои
командната линија аргументи.
>> На следните неколку команди, следниот еден е всушност нарекува следната.
Дека еден зема ви линија по линија преку својата програма.
Па притискање n тогаш Внесете ве води до следната линија, извршување
претходната линија.
Чекор не само што ви е потребно да се следната линија, но тоа
ќе ве однесе внатре функции.
Значи, ако сте го напишале функција во вашиот код или ако сакате да се истражуваат
да Јас, на пример, може да удри, и наместо да оди на следното линија на
на датотеката која сте си минува низ право Сега, вие всушност ќе влезете во
оваа функција и да видиме нејзиниот код.
>> Листа ви покажува, во многу лесен формат, 10 или така линии околу
каде што во моментов се во вашиот код така што всушност може да се види на датотеката
наместо да се разменуваат назад и назад меѓу различни ставови.
Печатење е како printf, како што самото име имплицира.
Кој ви покажува она променлива еднакви.
>> Информации локалното население е навистина од голема помош.
Ова е специјална верзија на печатење.
Информации мештаните ви покажува сите на локалната променливи, отпечатоци сите нив за вас
кои се моментално достапни.
Па јас генерално, наместо да печатење на четири варијабли кои сум
љубопитни за ако јас сум во за телефонска линија, за пример, јас само напиши инфо локалното население,
и тоа ќе ми што ми контра јас покаже еднакво, како и низа што сум
работи на еднаквите.
>> Конечно, продолжи.
Паузата ви запира на брејк.
Можете да прошетка низ линија по согласност со следната и чекор.
Продолжи работи на програмата за вашиот следен брејк или до завршување ако
нема повеќе брејк поени.
Оневозможи ги отстранува пауза поени ако одлучи на пауза на главната беше
несоодветни, вие сакате да ставете ја некаде на друго место.
И конечно q, да престанам, излегува од gdb.
>> Значи оваа програма,. / Цезар, ние ќе се обидеме да се погледне преку право сега и ние
се случува да се користи GDB да се најде грешки во оваа програма.
Истрчав оваа програма порано со Проверете 50, и добив еден намуртено.
Сè што постои, тоа собрани, таа помина многу од тестовите, но за
некоја причина, тоа не помине на петтиот тест, претворајќи BARFOO, сите капи, во
Е-Д-У-I-Р-Р, сите капи, користење на три, како клучна.
Добив прилично блиску.
Јас се симна од едно писмо.
Значи има некои мали грешка тука.
Видено низ моите код.
Не можев да го дознаам.
Се надевам, вие момци може да ми помогне дознаам што овој баг е.
>> Значи тоа е грешка сме барате.
Ајде да се движат во gdb.
Повторно, јас сум се кандидира gdb. / Цезар, па сега ние сме во gdb.
И што е првото нешто што треба да направам?
Јас сум само влезе gdb.
Некој да ми даде добар командата за да влезат.
>> СТУДЕНТСКИ: Break главната.
>> ЈАСОН Hirschhorn: Break главната.
Фантастично.
Ајде да напишеш дека внатре
Вие момци може да се види тука или следете заедно на вашите компјутери.
Се скрши главна, и ќе видите брејк беше поставен во -
тоа ми дава некои чудни меморија адреса, и исто така ми дава бројот на линијата.
Ако јас да се погледне назад на оваа датотека, Јас ќе сфатат дека главната
се случи на линија 21.
Што треба да се кандидира следно?
Е мојата програмата за трчање?
Бр.
Значи она што треба да се кандидира следно?
>> СТУДЕНТСКИ: Стартувај.
>> ЈАСОН Hirschhorn: Стартувај.
Треба јас само се кандидира рок, или треба да Додадам некои други нешта во?
>> СТУДЕНТСКИ: Стартувај со аргумент.
>> ЈАСОН Hirschhorn: Стартувај со команда аргументи.
И бидејќи јас сум за дебагирање многу специфичен случај, јас треба да влезе во таа
командата.
Затоа јас ќе се кандидира три, кој е, пак, излез добив од Проверка 50.
Стартување на програмата.
Ние одиме преку неколку линии.
Сега ќе видите дека ние сме на линија 21.
Како да знам дека ние сме на линија 21?
Бидејќи ако се погледне на лево на мојот терминален прозорец, има
се вели линија 21.
И тоа ми дава, всушност, кодот кој е на линијата 21.
Па јас погрешно ја изговори порано.
Главната всушност и не е на линијата 21.
Главната е неколку линии над 21.
Но, во линија 21, тоа е каде што ние се прекрши.
Оваа линија код има уште не погубен.
Тоа е важно.
Линијата ќе видите не има уште не е извршена.
Тоа е следната линија на кодот вие сте за да се изврши.
>> Па следниот линија, како вие момци се веројатно запознаени со, дали е ова
состојба проверка за да види дали имам влезе во командата.
И да јас, што е втор дел од тоа го прават?
Што е на i?
>> Студент: менување на тоа да биде цел број.
>> ЈАСОН Hirschhorn: Молам?
>> СТУДЕНТСКИ: Тоа е промена на аргумент на цел број.
>> ЈАСОН Hirschhorn: Значи да се з менува ARG в1 од низа на цел број.
А потоа она што се проверува?
>> Студент: Ако постои и втор командата, настрана
од водење на програма.
>> ЈАСОН Hirschhorn: И, што е втората половина на овој
Булова израз проверка?
Овој дел овде, а да јас?
>> Студент: Ако е негативен.
>> ЈАСОН Hirschhorn: Изработка на сигурни дека она што?
>> СТУДЕНТСКИ: Изработка на сигурни дека тоа е, всушност, позитивни.
>> ЈАСОН Hirschhorn: Токму така.
Ова е проверка за да видат дали тоа е негативни, и ако тоа е негативна, јас
имаат чувство на следната линија може да да ме вика на корисникот.
Па ајде удри крајот да се изврши оваа линија.
Ние не ги гледаме таа линија дека вие момци можеби очекува да се види вика на
корисник, а потоа се враќаат, бидејќи оваа линија не се изврши.
Влегов 3.
Па јас не, всушност, влезе во две команда линија аргументи, и 3 е
поголема од нула.
Па видовме дека линија, ние погубен, но ние не се повлече
во внатрешноста на ако состојба.
>> Па сега, следната, гледам јас сум поставување int клучните еднаква на на i ARG в1.
Па тоа е мене создавање променлива клуч.
Значи, ако јас испечатите клучните токму сега, бидејќи кој ви овозможува да видите
вредност во внатрешноста на променлива, Клучот е еднаква на 47.
Тоа е чудно, но се разбира, тоа е затоа што не сум
извршува таа линија уште.
Па сега ако јас хит n, изврши таа линија, и го прават печати клуч, клучот ќе изнесува 3,
што е она што ние го очекуваме тоа да се изедначи.
>> Значи, повторно, во GDB, линијата ќе види сеуште не сте погубен.
Мора да го погоди n или s или повеќе на други команди за да всушност
изврши таа линија.
Копчето Print.
Клуч на 3.
Досега, толку добар.
Стринг е обичен текст.
Ајде да се изврши таа линија.
Јас сум добивање на стринг од корисникот.
>> Ајде да видиме во мојата Проверете 50, јас внесете BARFOO сите капи, па
тоа е она што јас ќе влезе.
Ако јас сега се печати на обичен текст.
Ќе видите изнесува стринг.
Тоа ми дава некои други чудни хексадецимален број, но тоа го прави во
Всушност кажам дека мојот стринг е BARFOO.
Ако сакав да видам што клучни изнесуваше на оваа точка, како би можел да се провери клуч?
>> Студент: Печати клуч.
>> ЈАСОН Hirschhorn: Печати клуч, точно.
И всушност, постои кратенка.
Ако ви се уморни од пишување на печатење, можете само да пишувате стр.
Па стр клучните прави истото точната нешто.
И повторно, гледам изнесува 3.
>> Ако сакав да дознаете што двете клучни и BARFOO изнесува во исто време
но јас бев уморен од пишување секоја еден од поединечно, јас
да напишете инфо локалното население.
Што ми дава клучните еднаквите 3.
Обичен текст еднаква BARFOO.
Исто така, ми дава овие две чудни работи на врвот, на оваа променлива i и
оваа променлива n.
>> Тие се всушност постоечките во мојот главната програма.
Ние не ги сретнал сеуште, но како преглед, оние
постојат во моите за телефонска линија.
Па токму сега, тие се изедначи некои чудни броеви, бидејќи тие не биле во
уште се иницијализира, но тие се уште постојат во меморијата, па тие се само во собата
некои ѓубре вредност.
Но ние ги гледаме клуч во обична текст право таму.
>> Па ќе одам да се изврши оваа линија, линија 34, за телефонска линија.
Ние ќе фрламе во за телефонска линија со притискање н.
И ние сме во внатрешноста на за телефонска линија.
Ние сме на нашето прво чек.
И повторно, овие вид на треба да се погледне запознаени за вас, бидејќи ова е
Цезар програма со која беше напишано, но повторно, има некој вид на бубачка.
>> И сега, ако го направам инфо локалното население, бидејќи јас сум внатре дека за јамка, ќе видите
дека јас еднаква на нула, како што очекуваме.
Тоа е она што ние го постави за да и се иницијализира тоа да во за телефонска линија.
n е еднакво на 6.
Кој исто така има смисла, бидејќи ние во собата до strlen на обичен текст.
Па сакам да направам инфо локалните жители или да ги печатите на променливите често да бидете сигурни дека
сè е секогаш она што Очекувам тоа да се изедначи.
Во овој случај, сè е она што го очекуваме тоа да се изедначи.
>> Значи, да почнеме движат низ ова за јамка.
Линијата јас сум на е линија 36, ако обичен текст i е поголема од и обичен
текст i е помала од или еднаква на z.
Знам дека мојот проблем не е со мојот прв писмо, тоа е со второто писмо.
Ако ги погледнеме назад во Проверете 50, Б оди на Е парична казна.
Јас сум преземање на А и оставајќи го како А, не го менува за да Д Значи
нешто не е во ред со Второто писмо.
Па ќе одам да се движат таму во една секунда.
>> Но, ако јас сакав да се провери што обичен текст што изнесуваше во овој конкретен
случај, мислам дека тоа треба да биде што?
Што треба обичен текст јас еднакви во оваа првиот круг преку за телефонска линија?
>> Студент: нула?
>> ЈАСОН Hirschhorn: Обичен текст на јас?
Така треба да биде главен град Б Јас, се разбира, е еднаква на нула, туку обичен текст
заградата нула затворени заградата еднаква Б бидејќи жиците, како што видовме минатата недела,
се низа, па ние сме добивање на првиот карактер од тоа.
Значи, повторно, ако јас отпечатени обичен текст на Јас, јас, всушност, го добиете карактер
Б И тоа е уредни, нели?
Јас не, всушност треба обичен текст I. Тоа не е една од варијаблите јас во собата
или иницирана, но можете да печатите надвор цела низа на работи
ако сакате да.
>> Но, ајде да се движат низ.
Ако обичен текст I е поголема од А и обичен текст I е помала од или еднаква на
Z, кои јасно е точно, бидејќи имаме капитал Б Одам да се кандидира
некои команда на неа.
Видовме дека математика минатата недела, па ние ќе земе здраво за готово дека тоа функционира
право според Проверете 50.
>> Овие големи загради, првиот покажа дека сум бил излегување на ако
состојба, на вториот се појавил дека сум излегување на за телефонска линија.
Па сега кога ќе се погоди Следно, ќе видиме ние сме назад во за телефонска линија повторно.
Ние сме минува низ за јамка повторно.
Ајде всушност чекор во втората повторување на за телефонска линија и видот
инфо локалното население.
>> Па ние сме во втората итерација на нашите за телефонска линија.
Јас еднакво на 1, кој се очекува.
N еднаква 6, кој се очекува.
Клучни еднаква 3, кој се очекува.
И обичен текст, ќе видите, е еднаква на EARFOO сега, не BARFOO повеќе бидејќи
во нашите претходни повторување, Б беше изменета на капитал Е Значи ние сме за
да се сретнуваме со проблемот, така што ова е местото каде што ние ќе треба да
нурне во дебагирање.
Но, дали некој има било какви прашања за она што го направиле досега?
Фантастично.
>> Значи ние сме за да се изврши ова ако состојба, обичен текст заградата Ги затворив
заградата поголема од А и обичен текст јас помалку од или еднакво на Z. но пред
Одам во тоа, затоа што ова е местото каде Знам дека мојот грешка е, сакам да истакнам
надвор обичен текст на Првата Значи ајде да се стави испечатите.
Тоа го прави се изедначи со карактер, така што изгледа толку далеку, се е добро и добро.
>> Така што очекувам оваа линија по мојата логика, оваа линија треба да биде точно.
Тоа е голема буква.
Но, ако јас хит n, ние не сфаќаат дека ова линија, всушност, не се изврши.
Скокнав спушти до друго, ако.
Зошто се случи тоа?
>> Студент: Бидејќи имате вашата состојба на обичен текст е поголем
од A, не е еднаква или поголема од.
>> ЈАСОН Hirschhorn: Значи имав мојот обичен текст I е поголема од A, не е поголем
од или еднаков на.
Па јасно, главниот град не го предизвика ова ако состојба, и ние го сторивме
не влезете во него, и ние го сторивме не направиме потребните смена.
Значи тоа е тоа, всушност.
Јас сфатиле мојата бубачка.
Јас може да се врати во мојот извор датотека, менуваат, и надградба на тоа и
се кандидира Проверете 50 повторно.
>> Но ќе видиме, само за педагогија за доброто, ако јас продолжувам да одам.
На друго место ако не изврши било, но што наместо еднаква е на командната
кој не се менува.
Па тоа не е променет на сите, и ако печати обичен текст тука, ќе видиме ќе
преку кои за телефонска линија не, всушност, промени кои Вториот знак на сите.
Тоа е уште една капитал А
>> Па уште еднаш, ние дебагира нашата грешка.
Сфативме дека имало некои логика недостасува.
И ние го дебагира пред време пред всушност извршување таа линија,
но ќе се забележи имаше ние само хит Next и се фрламе на тоа друго, ако,
тоа значи дека дека ако состојба не е вистина.
Ние не, всушност, се резултат што се очекуваше.
Па тогаш ние би можеле да се предизвика, имаше ние не била толку остроумен, да се погледне на
дека ако состојбата и проверете дали, всушност, нашата состојба треба да се евалуираат до
точно во сегашниот контекст.
>> Тоа е се за дебагирање оваа програма.
Дали некој има било какви прашања?
Што команда би можел да го погоди да се откажат од GDB?
П И тогаш ќе биде побарано, Откажувате?
Да или не.
Јас ќе го погоди одговорот е да, и јас ќе се откажев gdb.
>> Така што беше брзо Primer да gdb.
Всушност, во вистинска сценарио, Го направив ова на работното време.
Јас GDBed ова точната програмата на работното време со студент.
И ако ние се вратиме на команди видовме пред, ние се користат пауза главни, првиот
нешто ние го сторивме.
Ние се користат да работат со командната линија аргументи, Второто нешто што го направив.
Ние се користи следната многу да се движат нас преку линии.
И повторно, кратка верзија на следната е n.
Тоа е во загради во сива на слајд.
>> Ние не се користи чекор, но ние не сме секогаш треба да се за овој случај.
Но, ние може да го користат во малку подоцна на денешната ако сме дебагирање, за
пример, бинарната пребарување кога бинарни пребарување се нарекува во посебен
функција, но има некои грешка со неа.
Ние ќе сакате да влезете во на повикот на бинарни пребарување и
всушност тоа debug.
Листа ние не се користи или затоа моравме добра смисла на нашиот код, но ако
сакаше да се добие чувство на она што јас код беше околу, јас само може да се користи листа.
>> Печати се користи, инфо локалното население ќе се користи.
Продолжи ние не треба да го користи во овој случај, ниту пак ние треба да се користи
оневозможи, но ние го сторивме употреба откажам.
Повторно, овие 10 заповеди, практикуваат нив.
Ако се разбере овие 10 заповеди, ќе треба да се постави за дебагирање било
издаде gdb.
>> Значи ние сме за да се оди натаму, повторно, на Суштината на делот денес, случува во текот
овие сортирање и пребарување алгоритми.
Пред да се стори тоа, повторно, било какви прашања, коментари, загриженоста за gdb?
Така е сите ќе ги користи GDB наместо printf?
Па секој, за доброто на вечни времиња е, сите се одобруваат главата право
сега, па јас ќе се видиме во работното време и сите TFS ќе ви помогнат и видете
тие ќе речат, да ми покаже како да се користи GDB, и ќе бидете во можност
да им покажеме, нели?
Вид на?
Можеби се надевам.
Кул.
>> Па ние ќе се преселат во сортирање и пребарување.
Ќе видите јас имам листа веќе сортирана за нас, но тоа не се случува
да биде случај секогаш.
Па во проблемот постави спецификација за Проблемот се утврдени три, имаш шорцеви
дека може да се види, и тоа, всушност, те прашува да се види оние шорцеви.
Исто така во предавање минатата недела, отидовме во текот многу од овие алгоритми, па јас сум
нема да трошат време во класа ќе во текот на овие алгоритми повторно или цртеж
слики за тоа како овие алгоритми работа.
Повторно, дека оваа информација може да се ре-часовник предавање, или дека информации
е заробен исклучително на шорцеви за овие пребарувања, сите на
кои се достапни во cs50.net.
>> Така, наместо, она што ние ќе треба да направите е да напишете овие програми.
Имаме чувство, ментална модел, за тоа како тие работат, и така она што ние ќе
да се направи е кодот на нив за реално.
Ние ќе се претвори дека ментален модел, таа слика, ако сакате, во
Вистинските код.
И ако сте биле малку збунет или маглива на ментална модел, јас целосно
се разбере.
>> Ние не сме всушност ќе Скокни до кодот достапен.
Па додека ова во овој слајд прашува можете да го кодот бинарни пребарување, и
всушност, итеративен верзија на бинарни пребарување, првото нешто што го
навистина сакате да направите е да пишуваат некои pseudocode.
Па имате овој ментален модел за тоа како бинарни пребарување дела.
Извади лист хартија ако имате еден лесно достапни, или отвори
уредувач на текст, и јас би сакал сите да пишуваат.
Преземе четирите минути за да се напише pseudocode за бинарни пребарување.
>> Повторно, мислам за тоа ментален модел.
Ќе дојдат, ако имате прашања и ние може да нацрта слика од.
Но прво, пред да започнете програмирање, Би сакал да се напише
pseudocode за бинарни пребарување, па кога ќе нурне во, имаме некои насока
таму каде што треба да се упатат.
>> Студент: Можеме ли да претпоставиме низа на вредности ќе го добиеме е веќе сортирани?
>> ЈАСОН Hirschhorn: Значи за бинарни пребарување да работат - одличен прашање - ќе
треба да се земе во сортирани низа на вредности.
Па претпоставувам дека ќе работат.
Ние ќе се вратиш на овој слајд.
Ќе видите во пурпурно функцијата декларација е bool binary_search int
вредност, int вредности, int n.
Ова треба да изгледа познато, ако сте веќе се приближува или добиле вашиот
раце валкани со проблемот во собата.
>> Но тоа е вашата функција декларација.
Повторно, не треба да треба да се грижите за дека многу во овој момент.
Она што јас навистина сакате да направите е да четири минути да pseudocode бинарни
пребарување, а потоа ќе одиме во текот на овој како група.
И јас ќе дојдат околу.
Ако имате прашања, се чувствуваат слободно да се подигне својата рака.
>> Зошто не ве однесе повеќе од две минути да завршам на pseudocode?
Знам дека ова може да се чини смешно што ние сме трошат толку многу време на
нешто што не е дури и всушност во Ц, но особено за овие повеќе
предизвик алгоритми и проблемот утврдува дека ние треба да дознаам,
почнувајќи од pseudocode не се грижам за синтаксата, само да се грижиш
логика, е неверојатно корисна.
И на тој начин, вие не сте решавање два неверојатно тешко проблеми одеднаш.
Сте само се фокусира на логика, и потоа да се движат во синтакса.
>> OK.
Да почнеме минува низ на pseudocode.
Имам напишано тука, бинарен Барај pseudocode.
Ние ќе ја напишам оваа на одборот заедно.
Или јас ќе го напишам и ќе даде мене инструкциите што ми треба.
Па секој може да ми даде првата линија на pseudocode сте
напиша за бинарни пребарување?
Да, Ени?
>> СТУДЕНТСКИ: Додека должината на листа е поголема од нула.
>> ЈАСОН Hirschhorn: Додека должина на листата поголема од нула.
И повторно, можеме да видиме некои Ц изглед синтаксички работи овде.
Но, повеќето од тоа е на англиски јазик.
Дали некој има било која линија тие се стави пред ова во своите псевдо-код?
>> СТУДЕНТСКИ: Земете низа на подредени броеви.
>> ЈАСОН Hirschhorn: Ти напиша "добие низа на сортирани броеви. "Пер на
функција декларација, ние ќе се поминува низа на подредени броеви.
>> СТУДЕНТСКИ: [нечујни].
>> ЈАСОН Hirschhorn: Значи ние ќе го имаат тоа.
Но да, ако ние не го имаме тоа, ние ќе треба да се најде на нашата низа од
броеви, бидејќи бинарна пребарување работи само на подредени низи.
Така, додека должината на листата е еднаква на нула, јас сум случува да се стави во некои големи загради
да го направите да изгледа малку повеќе како C. Но, додека, се чини дека на сајтот врз
додека јамка, па во овој додека јамка она што ние треба да се
направи за бинарни пребарување?
>> Некој друг кој не ми даде одговори, но сепак кој го напиша ова?
>> СТУДЕНТСКИ: Одете до средината на листата.
>> ЈАСОН Hirschhorn: Том.
Оди до средината на листата.
И следење прашање, што правиме еднаш сме на
средината од листата?
>> СТУДЕНТСКИ: Дали проверка дали тоа е бројот што го барате.
>> ЈАСОН Hirschhorn: Одлично.
Оди на средината од листата и да го провери ако нашата вредност е таму -
фантастично.
Дали некој има било што друго која ќе биде различна од ова?
Тоа е точно.
>> Првото нешто што го правиме во бинарна пребарување е да отидете до средината на листата и
проверете дали нашата вредност е таму.
Па претпоставувам ако нашата вредност е таму, што ќе правиме?
>> Студент: Се враќаме нула [нечујни].
>> ЈАСОН Hirschhorn: Да, ако нашите вредност е таму, ние ја најдов.
Па може да се каже, на некој начин, но тоа функција е дефинирана, ние им кажуваме на корисникот
ние ја најдов.
Ако тоа не е таму, иако, тоа е каде што ова станува незгодно.
Значи, ако тоа не е таму, некој друг кој работи на бинарни пребарување или
има идеја сега, она што ќе правиме?
>> СТУДЕНТСКИ: Прашање.
>> ЈАСОН Hirschhorn: Да?
>> Студент: е низа веќе сортирани?
>> ЈАСОН Hirschhorn: Да, ние сме под претпоставка низа е веќе подредени.
>> Студент: Значи, тогаш мора да се провери дали вредноста која ја гледате е поголема од
вредноста што сакате, можете да се движите до средината на другата половина.
>> ЈАСОН Hirschhorn: Значи, ако средината на листата е поголема од она што ние сме
барате, тогаш ние треба да направам?
Ние се движат, каде?
>> СТУДЕНТСКИ: Сакате да се преселат во половина од листата со
броеви помала од тоа.
>> ЈАСОН Hirschhorn: па ние ќе јавам дека на левата страна.
Значи, ако средината е поголем, може да се бара Левата половина од листата.
А потоа од страна на интернет, што мислам кога го велам пребарување?
>> СТУДЕНТСКИ: [нечујни].
>> ЈАСОН Hirschhorn: Ние одиме кон средината.
Ние всушност го повтори тоа нешто.
Ние одиме назад преку нашата додека јамка.
Јас ќе ти дадам последната -
друго, ако, средината е помалку од она што ние, што правиме тука?
>> Студент: Оди десно.
>> ЈАСОН Hirschhorn: Барај десно.
Ова изгледа добро, но не секој има нешто што ние може да се исчезнати или
нешто друго што ќе се стави во вашиот псевдо-код?
Значи ова е она што го имаме досега.
А должината на листата е поголема од нула, ние ќе треба да се оди
на средината на листата и проверите дали нашата вредност е таму.
>> Ако средината е поголем, ние ќе пребарување лево, друго ако средината е
помалку, ние ќе треба да барате право.
Така што сите ние сме имале некои блискоста со условите што се користи во компјутерските науки
и алатки имаме.
Но вие веќе ќе забележите бевме зборуваат англиски јазик, но ние откривме
многу нешта што се чинеше дека на сајтот за да алатки што ја имаме во нашите кодирање алатка комплет.
Па право надвор од лилјак, ние не сме ќе всушност го кодот сеуште.
>> Што гледаме овде, во англиската дека мапи за да се работи можеме да пишуваат во C?
>> СТУДЕНТСКИ: Додека.
>> ЈАСОН Hirschhorn: Додека.
Значи ова време, токму тука мапи за што?
>> Студент: А додека јамка.
>> ЈАСОН Hirschhorn: А додека јамка?
Или веројатно, поопшто, јамка.
Ние сакаме да се направи нешто одново и одново.
Па ние ќе го кодот јамка.
И ние веќе знаеме, затоа што ние го направивме ова неколку пати и ние
имаат многу примери од таму, Како всушност да се напише
овој индекс за циклус.
Така што треба да биде прилично лесно.
Ние треба да бидат способни да се добие дека почна прилично брзо.
>> Што друго можеме да видиме тука?
Кои други структури syntaxes, работите дека ние сме запознаени со C, ние
веќе имаат чувство на Врз основа исклучување на зборовите што ги користат?
Да, Ана?
[Нечујни]
само се шегувам.
Ана, повелете.
>> Студент: Ако и друго.
>> ЈАСОН Hirschhorn: Ако и друго - токму тука.
Значи она што тие изгледаат како?
>> Ученик: ако друго изјава.
>> ЈАСОН Hirschhorn: Да, услови, нели?
Па ние најверојатно ќе треба да пишуваат некои услови.
И повторно, иако можеби збунувачки во Прво, ние обично имаат чувство сега
за тоа како да се напише услови и синтаксата за услови.
И ако ние не, ние само се погледне до синтакса за условите, copy & paste
дека, бидејќи ние знаеме треба услов тука.
Било други работи можеме да видиме дека сајтот излез работи што можеби ќе треба да се направи во C?
Да, Aleha?
>> СТУДЕНТСКИ: Ова може да биде очигледна, од само проверка ако
вредност е еднаква на нешто.
>> ЈАСОН Hirschhorn: Така како ние да се провери и - така оди на средината од листата
и проверете дали нашата вредност е таму?
Како го правиме тоа во C?
Што е синтакса за тоа?
>> Студент: еднакво, еднакви.
>> ЈАСОН Hirschhorn: еднакво, еднакви.
Па оваа проверка е веројатно нема да биде еднакво, еднакви.
Па ние ќе знаете што треба дека некаде.
И всушност, само во пишувањето, гледаме оние други работи.
Ние ќе мора да направи некои споредба оператори таму -
фантастично.
Па тоа всушност изгледа како, од страна и голем, ние не го имаат напишано
збор на C код уште.
Но добивме ментална модел надолу преку предавања и оние шорцеви.
>> Ние напиша псевдо-код како група.
И веќе имаме 80% ако не 90% од она што ние треба да направите.
Сега, ние само треба да го кодот тоа, што повторно е
не-тривијални проблем да се реши.
Но барем ние сме заглавени на логика.
Барем сега кога одиме на работното време, Можам да кажам, знам што ми треба
да се направи, но да ве потсетам ме на синтакса?
Или дури и ако на работното време се преполни, можете Може Google за синтаксата, а
отколку да се заглавени на логика.
>> И повторно, наместо да се обидува да ги реши логиката и синтакса проблеми сите
одеднаш, често е многу подобро да се се скрши оние два хард проблеми исклучите во
две повеќе податлив и оние стори псевдо-кодот, а потоа кодот во C.
Да видиме она што го направив за псевдо-код пред време.
>> А должината на листата е поголема од нула, да се погледне на средината
на листата.
Ако бројот се најде врати точно, друго Ако бројот повисока, пребарување лево.
Друго, ако бројот пониски, барај право, се врати лажни.
Така што изгледа речиси идентични, ако не и е речиси идентично со она што ние го напишал.
Всушност, Том, што си рекол, прво, кршење на средината од листата и ако
број наоѓаат во две изјави е, всушност, она што го направив.
>> Јас ги комбинираат таму.
Требаше да слушав сте прв пат.
Па тоа е псевдо-кодот го имаме.
Ако сакате да сега, жал, одете Назад кон нашиот првичниот проблем.
Ајде код binary.c.
Па спроведување итеративен верзија на бинарни пребарување со помош на следниве
функција декларација.
>> А вие не треба да го копирате да ја срушат само уште.
Јас сум всушност ќе се отвори до тука binary.c.
Па таму е функција декларација во средината на екранот.
И ќе видите Зедов псевдо-код од на мојот страни, но речиси идентични
на она што го напиша, и стави дека во за вас.
Па сега, ајде да ги пет минути да кодот на оваа функција.
>> И повторно, ако имате било какви прашања, подигне својата рака, дозволете ми да знам, ќе
доаѓаат наоколу.
>> СТУДЕНТСКИ: [нечујни].
>> ЈАСОН Hirschhorn: Земав бинарни дефиниција за пребарување на
на почетокот, на линија 12.
Тоа е она што го добив за мојот слајд.
А потоа сето тоа псевдо-кодот Јас само копија и пејст од слајд,
псевдо-кодот слајд.
Јас сум уште не слухот [нечујни].
>> Па ако си ја завршил имплементација, сакам да го проверам.
Ве преку е-маил на helpers.h датотека порано во оваа класа.
И тоа ќе бидат достапни на интернет, како и за преземање за луѓе гледаат
овој дел време одложен.
И јас само се користи генерички дистрибуција кодот од pset3.
Земав find.C, го користам мојот helpers.h датотека наместо helpers.h датотека
тоа е дадено во дистрибуцијата код.
>> И морав да се направи една друга промена во find.C наместо повикувајќи едноставно
пребарување, јавете се binary_search.
Значи, ако сакате да ги тестираат вашите кодот, знаат дека тоа е како да го направи тоа.
Всушност, кога ќе се работи овој код токму сега, јас само го направи копија од
мојата pset3 директориум, повторно, сменил помагачите датотеки и потоа направи тоа
промени во find.C да се јавите binary_search наместо едноставно пребарување.
>> ЈАСОН Hirschhorn: Да.
Имате прашање?
>> Студент: Не е важно.
>> ЈАСОН Hirschhorn: Не грижете.
Добро, ајде да започнете.
Ние ќе кодот го ова како група.
Една друга забелешка.
Повторно, ова е, може лесно да бидат заменети во за Проблем постави три.
Имам helpers.h датотеката која, наместо од helpers.h ние сме дадени,
изјавува бинарни пребарување, меур вид, и селекција вид.
И во find.c што ќе забележите на линија, што е тоа, линија 68, што ние го нарекуваме бинарни
пребарување, наместо за пребарување.
Значи, повторно, кодот кој е достапен онлајн или кодот кој сте
создавање токму сега лесно може да бидат заменети во за p постави 3 да го провериш.
>> Но прво, да е кодот бинарни пребарување.
Нашата функција декларација, ние се врати bool.
Земаме цел број наречен вредност.
Земаме низа од цели броеви се нарекува вредности, и ние се n да биде
големината на низа.
On-line 10, токму тука, имам остри вклучуваат stdbool.h.
Дали некој знае зошто тоа е таму?
Значи она што не таа линија на код?
>> СТУДЕНТСКИ: Тоа ви овозможува да се користете bool враќање тип.
>> ЈАСОН Hirschhorn: Токму така.
>> СТУДЕНТСКИ: Или тоа е библиотека која овозможува да се користи bool враќање тип.
>> ЈАСОН Hirschhorn: Така остар вклучуваат stdbool.h линија ми дава некои
дефиниции и декларации за работите дека јас сум дозволено да се користи во
оваа библиотека.
Така меѓу оние кажува дека има овој тип се нарекува bool, а тоа може да биде
точно или неточно.
Значи тоа е она што таа линија не.
И ако немав таа линија, јас би добие во неволја за пишување на оваа
Зборот токму тука, bool, право таму.
Точно во право.
Значи ми треба дека во овој код.
OK.
Па ова, повторно, е итеративен верзија, не е рекурзивен еден.
Па нека да започнете.
>> Да почнеме со првиот линија на псевдо код.
И се надевам, ние ќе - или не се надевам.
Ние ќе одиме низ собата.
Ќе одиме линија по линија, и јас ќе ви помогне ќе дознаам линија која ние треба
да се напише во прв план.
Така, додека должината на листа е поголема од нула.
Да почнеме во предниот дел.
Што линија треба да пишувам тука, во кодот?
>> СТУДЕНТСКИ: Додека заграда n е поголем од 0.
>> ЈАСОН Hirschhorn: Додека n е голема од 0.
Така што n е големината на листа, и ние сме проверка, ако -
>> [Ставање ГЛАСОВИ]
>> ЈАСОН Hirschhorn: - Жал ми е?
>> Студент: Како да знаеме дека n е со големина на листата?
>> ЈАСОН Hirschhorn: Извини.
За на pset спецификација, пребарување и вид функции што треба да се напише,
n е со големина на листата.
Јас заборавив да го објасни тоа овде.
Но да. n е со големина на листата, во овој случај.
Па додека n е поголем од 0.
OK.
Дека може да се покаже малку проблематично иако, ако работите одат натаму.
Затоа што ние ќе продолжиме да се знае Големината на листата во текот на овој
функција, но велат дека ние започнете со низа на 5 броеви.
И ние одат преку и ние сме сега се сведени на
низа на 2 цели броеви.
Кои 2 цели броеви е тоа?
Големината е 2 сега дека ние сакаме да се погледне, но кои 2 е тоа?
Дали тоа има смисла, тоа прашање?
>> OK.
Јас ќе го прашам повторно.
Па ние да започнете со оваа низа од 5 цели броеви, а n е еднаков на 5, нели?
Ние ќе се кандидира низ овде.
ние најверојатно ќе се промени големината, право, како работите одат натаму.
Што е она што ние велиме ние сакаме да се направи.
Ние не сакаме да го бара целосна работа повторно.
Така велат дека ние ја промените да 2.
Земаме половина од листата што е чудно.
Па само ги собереш 2.
Па сега n изнесува 2.
Јас се извинувам за сиромашните сува избрише маркери.
Нели?
И ние сме во потрага низ листата повторно со листа на големина 2.
Па, нашите низа се уште е на големината 5.
Велиме ние само сакаме да Барај 2 места во неа.
Така што 2 места се оние?
>> Дали тоа има смисла?
Се тие лево 2 спотови?
Дали се тие право 2 спотови?
Дали се тие средината 2 спотови?
Ние сме скршени проблемот надолу, но ние всушност не знам кој дел од
проблемот ние сме сè уште гледа, само со овие 2 променливи.
Значи ние треба малку повеќе, тогаш, време n е поголем од 0.
Ние треба да знаеш каде што n е во нашите вистински низа.
>> Па не некој има промена на оваа линија?
Поголемиот дел од оваа линија е совршено точни.
Дали има уште еден прилог?
Можеме да се разменуваат нешто за n да направи оваа линија е малку подобро?
Мм-хм?
>> СТУДЕНТСКИ: Можете ли да се иницијализира со променлива како должината на n, кои потоа ќе се користи
подоцна во текот на функција?
>> ЈАСОН Hirschhorn: Значи се иницијализира променлива должина на n,
и ние ги користиме тоа подоцна?
Но, тогаш ние само се ажурира должина и ние уште работат во овој проблем, каде што
намали должината на нашиот проблем, но никогаш не знаеме каде, всушност,
таа должина мапи излез.
>> Студент: не е тоа што ќе се случи подоцна, кога си ти што зборуваш, барај лево,
пребарување нели?
Ви се случува да одат во друг област на вашиот -
>> ЈАСОН Hirschhorn: Ние ќе одиме на површина, но како да знаеме
кои треба да одат?
Ако имаме само низа и овој n, како да знаеме каде да се
одат во низа.
Во грбот, да?
>> СТУДЕНТСКИ: Дали имате, како, пониска врзани и горна граница променлива или
такво нешто?
>> ЈАСОН Hirschhorn: OK.
Значи ова е уште една идеја.
А не само следење на големина, ние ги пратите на долниот и
горна граница променлива.
Така како ние да се пресмета големината од Пониската врска и горна граница?
>> [Ставање ГЛАСОВИ]
>> ЈАСОН Hirschhorn: Одземање.
А исто така и следење на долниот врзани и горните обврзани да ги споделите со нас,
сме во потрага овие две?
Дали сме во потрага овие две овде?
Дали сме во потрага средината две?
Веројатно нема средината две, бидејќи Ова, всушност, е бинарна пребарување.
Но сега дека ќе бидете во можност да се добие големината, но исто така и на границите на низата.
Во суштина, ако ние си имаме гигант телефон книга, ние го рипувате на половина.
Ние сега знаеме каде што помалите телефонот книга е.
Но, ние не сме всушност расцепен на телефонот книга на половина.
Ние сеуште треба да знаат каде нови граници на нашиот проблем е.
Дали некој има било какви прашања за тоа?
Да?
>> Студент: Дали тоа ќе функционира преку создавање на променлива, јас, што потоа само се префрли
позицијата на i во однос на нејзината моментална позиција, а должината, n?
>> ЈАСОН Hirschhorn: И што е i?
>> Студент: Како што се како вид на -
Како ќе се иницијализира јас да биде средна положба на низата.
А потоа, ако вредноста на позиција i во средината на низата во резултат да
биде помала од вредноста што треба, јас сега станува должината на низата, плус
вредноста на i поделено со 2.
Како, види, ти префрлат I -
>> ЈАСОН Hirschhorn: Право.
>> Студент: - до -
>> ЈАСОН Hirschhorn: Па јас сум речиси позитивно е што ќе работат.
Но поентата суштество, треба две парчиња на информации тука.
Можете да го направите со почетокот и крајот, или можете да го направите со големина, а потоа
некои маркер.
Но вие не треба две парчиња на информации тука.
Вие не може да се снаоѓаат со само една.
Дали тоа има смисла?
>> Па ние ќе да се оди преку, како и ние сме случува да се направи [нечујни]
и да се создаде некои маркери.
Значи Зошто го напишете во вашиот код?
>> Студент: Јас само рече int врзани еден е еднакво на 0.
>> ЈАСОН Hirschhorn: Да ја наречеме дека int, почеток.
>> Студент: OK.
>> ЈАСОН Hirschhorn: Тоа го прави повеќе смисла за мене.
И?
>> СТУДЕНТСКИ: Реков, претпоставувам, int крај.
>> ЈАСОН Hirschhorn: int крај.
>> СТУДЕНТСКИ: Претпоставувам, n минус 1, или нешто слично.
Како, последниот елемент.
>> ЈАСОН Hirschhorn: Значи ти напиша, int почнувајќи еднаквите 0, запирка, и int
крај еднаква N минус 1, точка-запирка.
Значи во суштина, она што го правиш тука, 0 на првата позиција.
И како што знаеме во низи, тие не одат до n, тие одат до n минус 1.
Па ние имаме некои границите на нашата низа.
И овие првични границите се случи да биде почетна границите на нашиот проблем.
OK.
Така што звучи добро.
А потоа, ако ние се вратиме на оваа линија, додека должината на листата е поголема од 0,
што, наместо на n, треба ќе стави тука?
>> СТУДЕНТСКИ: Напиши завршува минус почеток.
>> ЈАСОН Hirschhorn: Додека завршува минус почетокот е поголем од 0?
OK.
И ние би можеле, ако сакавме да направи тоа малку поубаво, што
друг би можел да правиме?
Ако сакаме да се чисти овој код се малку?
Како можеме да се ослободи од 0?
Ова е само еден стил прашање.
Тоа е точно, токму сега.
>> СТУДЕНТСКИ: завршува не го прави тоа еднакви почеток?
>> ЈАСОН Hirschhorn: Можеме да го направи она што?
>> [Ставање ГЛАСОВИ]
>> СТУДЕНТСКИ: Стопирање е поголема?
>> ЈАСОН Hirschhorn: Да.
Ние само може да се направи додека не завршува е поголема од почетокот.
Во право.
Додадовме почетокот на другата страна на тоа, и ние се ослободи од 0.
Значи ова само изгледа малку почист.
OK.
Така, додека должината на листата е 0, ние напиша дека, додека завршува е поголема
од почеток.
Ние ќе се стави во нашите неопходни тркалезните загради, а потоа првото нешто
ние сакаме да направите е да се погледне во нив во малку листа.
Вас?
Можете ли да ми го -
>> Студент: Ако заграда вредност квадратен заграда -
>> ЈАСОН Hirschhorn: Ако загради вредност квадратен заграда.
>> СТУДЕНТСКИ: завршува поделено со 2.
>> ЈАСОН Hirschhorn: Стопирање?
>> СТУДЕНТСКИ: Гледам проблем со вашиот -
>> ЈАСОН Hirschhorn: OK.
Па, погледнете во средината.
Како да знаеме што средината е?
Да.
Па да ми го избришете овој код.
Како да знаеме што средината е?
Во ништо, кога имаш на почетокот и на крајот, како да го пронајдете
средината?
>> СТУДЕНТСКИ: Вие просек.
>> Студент: Можете да ги додадете заедно, а потоа -
>> ЈАСОН Hirschhorn: Додади нив заедно, а потоа?
>> Студент: А ти просек.
Поделете го со 2.
>> ЈАСОН Hirschhorn: Додади нив заедно и јаз од 2.
Па int средината еднаква на?
Том, може да го даде за мене?
>> Студент: Почнувајќи плус завршува -
>> ЈАСОН Hirschhorn: Почеток плус завршува.
>> СТУДЕНТСКИ: Сите, држач поделено со 2.
>> ЈАСОН Hirschhorn: Сите во загради, поделено со 2.
Така што ми дава средината на ништо, точно?
>> СТУДЕНТСКИ: Можете исто така треба да го заокружи.
>> ЈАСОН Hirschhorn: Што мислите значи, јас треба да го заокружи?
>> [Ставање ГЛАСОВИ]
>> СТУДЕНТСКИ: Бидејќи ако тоа е непарен број, тогаш тоа е како -
>> ЈАСОН Hirschhorn: Па, ОК.
Па можев да го заокружи.
Но, ако тоа е непарен број, 5, можам да земајќи 1 далеку од средината.
Или ако тоа е парен број, туку тоа е подобро случај.
Ако тоа е 4, имаме само 4, може да се земе првиот "средината", цитат, unquote или
вториот "среден" еден.
Или ќе работат за бинарни пребарување, па јас всушност не треба да го заокружуваат.
Но, постои една друга работа што треба да се погледне во оваа линија.
Ние не може да го сфати, сепак, но ние ќе се вратам на тоа.
Бидејќи оваа линија, всушност се уште треба една друга работа.
>> Но досега, ние сме писмени четири линии на код.
Добивме наша почетокот и завршувајќи маркери.
Ние имаме додека јамка, која мапи на директно до нашите pseudocode.
Ние сме во потрага на средината која мапи директно на нашата pseudocode.
Јас би рекол дека ова оди во средината на листата, оваа линија код.
И тогаш, откога ќе одиме до средината на листата, следното нешто што треба да направите
е да проверите дали нашата вредност е таму за на pseudocode ние напишал порано.
>> Така како ние да проверите дали нашата вредност е на средината од листата?
Вас.
Зошто да не го правиш ова?
>> Студент: Ако нашата вредност е во средината е еднаква на
она што ние во собата на -
Мислам еднаков еднаков на -
>> ЈАСОН Hirschhorn: Тоа -
OK.
>> Студент: Не сум сигурен дека она што променлива ние сме во потрага
за иако, е затоа што -
>> [Ставање ГЛАСОВИ]
>> СТУДЕНТСКИ: [нечујни].
>> ЈАСОН Hirschhorn: Токму така.
На функција декларација, ние сме во потрага по вредност.
Па ние сме во потрага по вредност во низа на вредности.
Па ти си точно во право.
Вие ќе направите, ако отворена paren вредност заграда средината затворени заградата еднаквите
еднакво вредност, а внатре има она што ние треба да направам?
Ако нашата вредност е таму, што ние треба да направите?
>> [Ставање ГЛАСОВИ]
>> СТУДЕНТСКИ: Враќање нула.
>> ЈАСОН Hirschhorn: Враќање вистина.
>> СТУДЕНТСКИ: Враќање вистина.
>> ЈАСОН Hirschhorn: Мајкл, што значи оваа линија направам?
>> СТУДЕНТСКИ: [нечујни] програмата се кандидира по својот тек, а тоа е над, а
сте она што треба да направам?
>> ЈАСОН Hirschhorn: Програмата или што?
Во овој случај?
>> СТУДЕНТСКИ: Функцијата.
>> ЈАСОН Hirschhorn: Функцијата.
И така, да се вратат на она што се нарекува тоа и го даде вредност, вистина.
Точно во право.
Главната.
Што е враќање тип на главните, Мајкл?
>> Студент: int, број?
>> ЈАСОН Hirschhorn: int, точно.
Цел број.
Тоа беше само прашање да бидете сигурни дека вие момци биле на врвот на неа.
Што значи тоа обично се врати, ако сите нешта се работи добро?
>> СТУДЕНТСКИ: Нулта.
>> ЈАСОН Hirschhorn: Нулта.
Точно во право.
>> Студент: Ако ова само се враќа точно, нема информации кои се дадени
за тоа што -
Ох, ова е само велејќи дека тоа вредност е внатре во низа.
>> ЈАСОН Hirschhorn: Токму така.
Оваа програма не е давање на информации од каде точно вредноста е.
Тоа е само велејќи, да, ние откривме тоа, или не, ние не го најдете.
Значи, ако бројот е пронајден, се врати вистина.
Па, всушност ние само го сторија тоа навистина брзо со кои една линија код.
Па јас ќе се пресели таа линија на pseudocode.
>> СТУДЕНТСКИ: Не ни треба за промена на низа?
Тоа треба да биде вредности, а не вредност, нели?
>> ЈАСОН Hirschhorn: Извини.
Ви благодарам.
>> Студент: Да.
>> ЈАСОН Hirschhorn: Оваа линија треба да биде вредности.
Точно во право.
OK.
Па ние сме погледна средината листа.
Ако бројот се најде враќање вистина.
Продолжување со нашите pseudocode, ако средината е поголем, барај лево.
Па морав овде, ако бројот повисока, пребарување лево.
Константин, може да ви даде мене оваа линија код?
>> Студент: Ако вредноста на средината -
>> ЈАСОН Hirschhorn: Значи, ако вредноста -
ако отворен paren вредности заграда средината блиску заграда -
>> Студент: е помал од вредност?
>> ЈАСОН Hirschhorn: е помалку од.
>> СТУДЕНТСКИ: Помалку од вредност.
>> ЈАСОН Hirschhorn: Вредност.
Па, всушност, сакате да проверете дали бројот -
Жал.
Ова е малку збунувачки.
Но на друго место, ако бројот на средината на листа е поголема.
>> СТУДЕНТСКИ: Ох, во ред.
>> ЈАСОН Hirschhorn: Ќе го промени тоа.
Друго, ако средината е поголем, ние сакате да пребарувате лево, во ред?
И она што го правиме во внатрешноста ова ако состојба?
>> СТУДЕНТСКИ: Може ли да се направи мала промена на состојбата, го промени друго, ако?
>> ЈАСОН Hirschhorn: друго, ако?
OK.
Па овој код ќе се изврши за истото.
Но убаво нешто во врска со користење ако, друго ако, друго ако, или ако, друго ако, друго
значи дека само еден од оние се случува да се да се проверува, не сите три од нив,
потенцијално.
И дека тоа малку го прави поубаво на компјутер, кој е
водење на вашата програма.
>> Па [? Константин,?]
ние сме внатре оваа линија, друго ако вредностите, заградата средината блиску заграда,
е поголема од вредноста.
Што треба да направите?
Ние треба да се бараат на левата страна.
Како го правиме тоа?
Одам да ви даде почеток.
>> Имаме овие две работи се нарекува почеток и крај.
Значи она што треба да се случи на почетокот?
Ако сакате да пребарувате на левата страна на листа, да добиеме нашите сегашни почеток.
Што треба да го направам тоа?
>> СТУДЕНТСКИ: Ние се постави на почетокот кон средината плус 1.
>> ЈАСОН Hirschhorn: Значи, ако ние сме во потрага по левата страна?
>> СТУДЕНТСКИ: За жал, средината минус -
па крај ќе биде средната минус 1 и почетокот -
>> ЈАСОН Hirschhorn: И што се случува со почеток?
>> СТУДЕНТСКИ: Тоа останува иста.
>> ЈАСОН Hirschhorn: Значи значење останува иста.
Ако ние сме во потрага по левата страна, ние сме со користење на истите почетокот -
точно во право.
И крај?
Жал ми е, она што го прави завршува еднаков повторно?
>> СТУДЕНТСКИ: Блискиот минус 1.
>> ЈАСОН Hirschhorn: Блискиот минус 1.
Сега, зошто минус 1, а не само средината?
>> Студент: Средината е надвор од слика веќе, бидејќи имавме
проверено дека тоа е надвор?
>> ЈАСОН Hirschhorn: Тоа е точно во право.
Средината е надвор од сликата.
Ние веќе проверен средината.
Значи ние не сакаме "средината", цитат unquote, да продолжи да биде во
низа, дека ние сме во потрага.
Па ова е фантастично.
>> Друго, ако вредности заградата средината е поголем од вредност завршува еднаквите
средината минус 1.
Џеф, она што за овој последната линија?
>> Студент: друг.
Вредности средината е помалку од вредност?
>> ЈАСОН Hirschhorn: Ќе ти си ми даде друг.
Па ако не ми даваат -
>> Студент: Па тогаш почнуваат ќе биде средната плус 1.
>> ЈАСОН Hirschhorn: Почнувајќи еднаквите средината плус 1, пак, за истиот
причина што Константин ни даде порано.
И на крајот, кој не даде мене линија од кодот уште?
Враќање false, Aleha, што ние се пишува тука?
>> СТУДЕНТСКИ: Враќање лажни.
>> ЈАСОН Hirschhorn: Враќање лажни.
И ние треба да го направи тоа, затоа што ако не го најде, ние треба да се каже
не го најдете.
И рековме дека си оди за да се врати bool, па ние дефинитивно треба да се врати
на bool некаде.
>> Па ајде да ја извршите оваа код.
Јас сум всушност ќе -
па ние сме во терминал.
Ние ќе се расчисти нашиот прозорец.
Да се ​​направи сите.
Ние се најде таму е една грешка.
Има грешка на линија 15, што се очекува запирка на крајот на
декларација.
Значи она што не го заборавам?
>> Студент: Точки и запирки.
>> ЈАСОН Hirschhorn: Точки и запирки право тука.
Мислам дека тоа беше Том код.
Па Том, [нечујни].
Само се шегувам.
Ајде да се направи сите се повторно.
>> Студент: Што Dropbox директориум ние треба да биде во за ова?
>> ЈАСОН Hirschhorn: Значи можете да само да се види за ова малку.
Но, повторно, ако си сакал да се помести ова HTML кодот на вашата pset3 директориум да се обиде
тоа надвор, тоа е она што го направив.
Ако ќе забележите тука - Жал ми е, добро прашање.
>> [? ЛС,?]
Имам тука на find.c код од оваа недела distro код.
Имам helpers.h.
Имам направи датотека дека јас всушност изменето малку да се вклучат овие нови
додадени фајлови: ние сме пишување.
Сите дека кодот ќе бидат достапни, не дистрибуција код, но новиот
Направете датотека, новиот helpers.h датотека ќе бидат достапни на интернет за симнување.
Повторно, така што оние се дополнителни кодови имаме.
>> Така прават сите, по оваа линија, го прави најде, бинарни, меур избор - го прави
сите три од нив и компајлира во оваа извршна код најде.
Значи генерално, не сакаме да директно на check50.
Ние сакаме да се кандидира на некои тестови на нашите сопствени.
Но, само за да можеме да се забрза овој малку, check50 2013 pset3.find ќе помине
во helpers.c-- мојот лошо.
>> Јас немам тоа право сега.
Па ние сме всушност ќе се кандидира кодот за реално.
Usage.find /, знаеш што значи тоа?
>> СТУДЕНТСКИ: Треба втор командната линија на неа.
>> ЈАСОН Hirschhorn: Ми треба втор командната линија.
И по спецификација, ми треба за да влезат во она што го барате.
Значи, да погледнеме за 42.
Ние ќе го задржи во подредени, затоа што не напишал функција вид досега -
42, 43, 44.
>> И контрола на D не најде игла во haystack.
Тоа е лошо.
Тоа е дефинитивно таму.
Ајде пробајте нешто друго.
Можеби тоа е затоа што се стави тоа на почетокот.
>> Ајде да направиме 41, 42, 43.
Таму ќе одиме.
Тоа ја најдов.
Нека си го стави на крајот сега, само па ние може да биде темелна -
40, 41, 42.
Не се најде игла.
Така што споменав порано.
За жал, знаев дека тоа требаше да се случи.
>> Но, за педагошки цели, тоа е добро да го истражуваат.
Тоа не функционира.
Поради некоја причина, тоа не може да го најдете.
Знаеме што е таму, но ние не сме ја најдат.
Значи едно нешто можеме да направиме е да помине низ GDB да го најдете, но не никого,
без да одите низ GDB, имаат смисла на тоа каде ние ја зезнав?
[? Madu? ?]
>> Студент: Мислам дека тоа би можело да биде кога завршува е еднаква на почетокот, и тоа е
само листа еден елемент.
Тогаш тоа само го игнорира наместо на всушност проверува.
>> ЈАСОН Hirschhorn: Тоа е точно во право.
Кога завршува еднаква на почеток, ние уште имаат елемент во нашиот список?
>> Студент: Да.
>> ЈАСОН Hirschhorn: Да, всушност, ние имаат еден и само еден елемент.
И дека, најверојатно, ќе се случи кога, на кодот ние се тестираат, ние сме во
пред haystack или на крајот на haystack.
Тоа е каде што почетокот и крај ќе еднакви
една, со бинарни пребарување.
Па во тие два случаи тоа не работа, бидејќи завршува е еднаква на почетокот.
>> Но ако завршува е еднаква на почетокот, го прави ова додека јамка изврши?
Тоа не се случи.
И ние би можеле да се проверат дека повторно преку gdb.
Па како можеме да го надминете овој код, бидејќи кога време завршува е еднаква на
на почетокот, ние исто така сакаме оваа додека јамка да се кандидира.
>> Па што фикс може да се направи за да линија 18?
>> СТУДЕНТСКИ: [нечујни] е поголема од или еднаков на.
>> ЈАСОН Hirschhorn: токму во право.
Додека крај е поголема од или еднаква на почетокот.
Па сега, ние бидете сигурни дека да се добие дека агол случај на крајот.
И да видиме.
Ајде да ја извршите оваа уште еднаш.
>> Ајде да се направи на сите.
Повторно, ќе мора да се само следат заедно тука.
Најди 41 на овој период.
Само да го задржи во согласност.
>> Најди 42.
Ајде да го стави на почетокот -
42, 43, 44.
Ние ја најдов.
Така што е навистина промена ни е потребно да се направи.
>> Тоа беше многу кодирање ние го направија бинарни пребарување.
Дали некој има било какви прашања пред Јас тргнуваме во линии ние напиша во
бинарни пребарување или како ние сфатиле од она што ние го дознаам?
Пред да се движи, исто така сакам да истакнам дека од страна и големи, ние одбележан
нашите псевдо-кодот една да еден кон нашиот код.
>> Ние не го имаат тоа слабо нешто да дознаам со
почеток и крај.
Но не сте сфатиле дека надвор, ќе имаат напишано доста
идентични код, освен за оние првите две линии.
А потоа ќе се реализира кога сте го направиле тоа во проверки и случаи кои
ви треба нешто друго.
Па дури и ако ги следеше нашите псевдо-кодот линија за да линија, ќе си
добиле сите, но две линии на кодот се потребни за да се напише.
>> И јас би бил подготвен да се обложи дека вие момци сите би сфатиле дека од
прилично брзо, дека е потребно да се стави некој вид на маркер таму да дознаам
од каде сте биле.
Дека повторно, е моќта на прави псевдо-код пред време.
Така што можеме да направиме логиката прво, а потоа можеме да се грижи за синтаксата.
>> Ја ние се збунети околу логиката додека се обидувал да ја напишам оваа кодот во C,
ние би добиле сите Слободен простор.
И тогаш ние ќе се прашува за логика и синтакса и meshing
сите нив заедно.
И ние би го добиле изгубени во она што може брзо да стане
многу тежок проблем.
Па ајде да се движат за сега за селекција вид.
>> Имаме 20 минути.
Па имам чувство дека нема да биде во можност да се добие преку сите селекција вид
и меур вид.
Но нека барем обид да заврши изборот вид.
Па спроведување селекција вид користење на по функција декларација.
>> Повторно, ова е превземена од Проблемот постави спецификација.
Int вредности е голема заграда, е низа на цели броеви.
И int.n е големината на таа низа.
Избор вид се случува да го решите оваа низа.
>> Така на нашата ментална модел на избор вид, ние се повлече -
Прво, ние одиме преку листата првиот време, најдете најмал број,
го стави на почетокот, се најде на втората Најмал број, го стави во
втората позиција ако сакаме да вид во растечки редослед.
Јас не сум ги принудува да се напише псевдо-кодот, токму сега.
>> Но, пред да го направите кодот како класа во пет минути, ние ќе се обидеме да се напише
псевдо-кодот, така имаме некои смисла на каде одиме.
Така се обиде да напише псевдо-код на своја.
А потоа се обиде да се претвори дека псевдо-код во кодот.
Ние ќе го направи тоа како група во пет минути.
>> И, се разбира, дозволете ми да знам дали имате било какви прашања.
>> Студент: Дека тоа?
>> ЈАСОН Hirschhorn: Види колку далеку може да се добијат во повеќе од две минути.
Јас разбирам дека не ќе да биде во можност да го заврши.
Но ние ќе одиме во текот на овој како група.
>> Вие сте сите кодирање, па [нечујни], па јас сум Жал ми е да се откажеш она што го правиш.
Но, ајде да одиме преку тоа како група.
И повторно, бинарна пребарување, ви даде на сите мене еден ако не и повеќе линии на код.
Ви благодариме за тоа.
Ние ќе го прават истото тука, кодот заедно како група.
>> Па селекција вид - нека напише некои брзи псевдо-код.
На ментална модел, некој може да ми даде на првата линија на псевдо-кодот, ве молам?
Што сакам да направам?
>> СТУДЕНТСКИ: Додека листа е на ред.
>> ЈАСОН Hirschhorn: Добро, а на листата е надвор од употреба.
И она што сакаш да кажеш "на ред?"
>> СТУДЕНТСКИ: Додека [нечујни]
не се подредени.
>> ЈАСОН Hirschhorn: Додека листа е на ред, што ќе правиме?
Дај ми го втора линија, Ве молиме, Маркус.
>> Студент: Значи се најдат на следниот Најмал број.
Ова ќе биде вовлечен.
>> ЈАСОН Hirschhorn: Па најдете на Следниот најмал број.
А потоа некој друг?
Откако ќе најдете на следната најмалиот број, што ќе правиме?
Одам да се каже најдете најмал број.
Тоа е она што ние сакаме да се направи.
>> Па најдете најмал број.
Тогаш што правиме?
>> СТУДЕНТСКИ: [нечујни] до почетокот.
>> ЈАСОН Hirschhorn: Молам?
>> Студент: ставете го во почнувајќи од листата.
>> ЈАСОН Hirschhorn: Значи ставете ја во на почетокот на листата.
И она што го правиме на работа тоа беше во почетокот
на листата, нели?
Ние сме пребрише нешто.
Па каде да се стави тоа?
Да, Ана?
>> СТУДЕНТСКИ: Каде најмалите број беше тоа?
>> ЈАСОН HIRSHHORN: Па стави на почетокот на листата, каде што
Најмал број беше.
Така, додека на листата е надвор од употреба, се најде најмал број, ставете ја во
на почетокот на листата, се стави на на почетокот на листата, каде што
Најмал број беше.
Маркус, може да ви парафразираме оваа линија додека на листата е на ред?
>> СТУДЕНТСКИ: Додека броеви не се подредени?
>> ЈАСОН HIRSHHORN: Добро, па со цел да Знаеме дека бројките не биле
сортирани, што ние треба да направам?
Колку ние треба да се поминат низ оваа листа?
>> Студент: Значи Претпоставувам дека за јамка, или време, додека броеви проверуваат е помала
од должината на листата?
>> ЈАСОН HIRSHHORN: Добро, тоа е добро.
Мислам дека misphrased моето прашање лошо.
Јас бев само се обидува да добие на ние ќе мора да одат
во текот на целата листа.
Така, додека на листата е надвор од употреба, за мене, е тешко да се на сајтот на.
Но, во основа, тоа е како Мислам дека за ова.
Поминат низ целиот листа, најдете Најмал број, ставете го во
почеток - всушност, во право си.
Ајде двајцата стави.
>> Така, додека на листата е надвор од употреба, ние треба да поминат низ целата листа
еднаш, се најде најмал број, место тоа во почетокот на листата, се стави
на почетокот од листата каде што Најмал број беше, а потоа ако
листа се уште е на ред, ние сме мора да одат преку овој
процесот повторно, нели?
Тоа е причината зошто изборот вид, Биг-О траење на селекција кој вид, некој?
>> Студент: N квадрат.
>> ЈАСОН HIRSHHORN: N квадрат.
Бидејќи како Маркус и јас само сфатив тука, ние ќе треба да
одат преку Листата број на пати.
Така минува низ нешто должина n n број пати
е всушност N квадрат.
>> Значи ова е нашата pseudocode.
Ова изгледа многу добро.
Дали некој има било какви прашања за pseudocode?
Бидејќи всушност избор вид треба да веројатно се 12:59, кодот од
pseudocode.
Па било какви прашања во врска со Логиката на pseudocode?
Ве молиме да го прашам сега.
>> Избор вид - додека на листата е надвор на ред, ние ќе треба да одат преку него
и да се најде најмалиот секој пат и го стави во предниот дел.
Така, додека на листата е надвор од употреба, може да некој да ми даде таа линија на кодот кој
не ми даде една линија на код сепак, ве молам?
Тоа звучи како што?
>> Студент: Тоа е за телефонска линија.
>> ЈАСОН HIRSHHORN: Звучи се допаѓа за телефонска линија.
Добро, може да ми даде за телефонска линија?
За -
>> Студент: i изнесува 0.
>> ЈАСОН HIRSHHORN: Јас или -
што сме ние недостасува?
Она што се случува тука?
>> СТУДЕНТСКИ: Int.
>> ЈАСОН HIRSHHORN: Токму така.
(Int i = 0; -
>> Студент: i <N; i + +).
>> ЈАСОН HIRSHHORN: тоа прикован, Џеф.
Ние ќе се низ листата, нели?
Видовме дека кодот порано.
Совршена.
Па ајде да се стави нашите големи загради тука.
Одам да се стави некои тркалезните загради тука.
>> Значи, додека е 0, ние треба да одиме преку целата листа.
Така секој пат кога ќе одиме низ листата, она што сакаме да ги пратите на?
>> Студент: Ако било свопови се направени.
>> ЈАСОН HIRSHHORN: Најди најмал број.
Па ние веројатно ќе треба да ги пратите на најмал број секој пат.
Па линија можам да направам за да ги пратите од најмалите број?
Aleha, како можам да го задржи ги пратите на нешто?
>> Студент: Започни нова променлива.
>> ЈАСОН HIRSHHORN: Започни нова променлива.
Па ајде да се создаде променлива.
Каков тип?
>> СТУДЕНТСКИ: Int.
>> ЈАСОН HIRSHHORN: Int.
Ајде да го наречеме најмалите.
И она што го прави тоа еднакви кога ние сме само на почетокот?
Не сме поминале низ листата сеуште.
Ние сме на првиот дел од листата нашите прв пат преку.
Што значи тоа еднакви, Најмал број?
>> СТУДЕНТСКИ: Вредностите i.
>> ЈАСОН HIRSHHORN: Вредностите i.
Тоа звучи точно во право, нели?
Најмал број на почетокот е местото каде што сме.
Па сега ние си имаме најмалиот, и ние треба да се оди преку целата листа и
споредуваат оваа најмалите на сè друго.
Па ние да одиме низ листата повторно?
Мајкл?
>> Студент: Вие треба да бидете друг за јамка.
>> ЈАСОН HIRSHHORN: Уште еден за телефонска линија.
Да го сториме тоа.
Дај ми некоја код.
>> СТУДЕНТСКИ: За јамка -
за најмалите -
само int j, може да се каже?
= 0; така што -
>> ЈАСОН HIRSHHORN: Па, ако сакаме да се оди преку целата листа -
>> Студент: ѕ <n, ѕ + +).
>> ЈАСОН HIRSHHORN: Фантастична.
Ние ќе одат преку на за јамка уште еднаш.
И како ние се најде на Најмал број?
Том?
Имаме тековната најмал број, Така како ние да се најде на новиот најмалиот?
>> СТУДЕНТСКИ: Можеме да проверите дали најмалите број што го имаме е поголема од
вредности заградата ѕ.
>> ЈАСОН HIRSHHORN: Значи, ако најмалиот е поголема од вредности држач j.
Значи, ако нашите сегашни најмалите е поголема од -
Одам да се движат на овие две линии на кодот таму за една секунда.
Бидејќи пред да направите било Замена, ние треба да поминат низ целата листа.
Значи ова pseudocode треба всушност биде надвор од таа внатрешна за телефонска линија.
Така одат преку целата листа.
Ако најмалиот е поголема од вредности ѕ тогаш што?
>> СТУДЕНТСКИ: Тогаш најмалите еднакво вредности ѕ.
>> ЈАСОН HIRSHHORN: Фантастична.
Еден брз прашање -
прв пат ќе одиме во текот на овој циклус, Јас нема да изнесува 0, ѕ се случува
да се изедначи 0 штом ќе го добиеме тука.
Па ние ќе треба да се споредуваат голем број на себе.
Е дека ефикасни?
Не, тоа не е навистина ефикасен.
Така што нашата ѕ треба да одат од 0 до n секој пат?
Ние секогаш треба да се провери преку целата листа?
[Нечујни]?
>> СТУДЕНТСКИ: Започнете со i наместо тоа.
>> ЈАСОН HIRSHHORN: ѕ може почнеме со она што?
>> СТУДЕНТСКИ: i.
>> ЈАСОН HIRSHHORN: ѕ да почнете со i.
Па сега ќе се споредат со почеток со оној што се на.
Но дури и тогаш, е дека како ефикасен како е можно?
>> Студент: i + 1.
>> ЈАСОН HIRSHHORN: i + 1 се чини дека најефикасен, бидејќи ние
веќе имам.
Ние сме во која се наведува дека како најмалите во линија 15.
Ние ќе се започне со следниот автоматски.
Па ние одат преку за телефонска линија.
Ќе одиме преку секој пат.
Ќе одиме преку голем број на пати.
Сега сме добиле преку оваа внатрешна за телефонска линија.
Имаме најмал вредност спасува.
Ние треба да го поставите на почнувајќи од листата.
Па како можам да го поставите на почетокот на списокот?
Што е променлива која се однесува на почетокот на листата?
Ние сме во оваа надвор за телефонска линија, така што се однесува на
почетокот на списокот?
>> СТУДЕНТСКИ: Вредностите i.
>> ЈАСОН HIRSHHORN: токму во право.
Вредности i е почетокот на -
или жал, не на почетокот.
Тоа беше збунувачки.
Тоа е каде што сме во почетокот на на несортиран дел од листата.
Па јас вредности.
И она што го прави тоа еднакви?
>> СТУДЕНТСКИ: Најмалиот.
>> ЈАСОН HIRSHHORN: Вредностите i изнесува што?
>> СТУДЕНТСКИ: Најмалиот.
>> ЈАСОН HIRSHHORN: Најмалиот.
Точно во право.
Па ние сме ставајќи го на почетокот на листата, а сега ние треба да се стави
на почетокот од листата која најмал број беше.
Па како можам да напишам каде Најмал број беше тоа?
Вредности на што?
>> СТУДЕНТСКИ: 0.
>> ЈАСОН HIRSHHORN: Малата број е на 0?
>> Студент: Да.
>> ЈАСОН HIRSHHORN: Што ако најмалите број е на крајот на
овој несортиран листа?
>> СТУДЕНТСКИ: За жал, она што беше прашањето?
>> ЈАСОН HIRSHHORN: Каде е најмал број?
Ние ја најмалата и го стави на на почетокот, со оваа линија, токму тука.
>> СТУДЕНТСКИ: Тоа треба да имаат се чуваат во некои -
>> СТУДЕНТСКИ: Вредностите ѕ.
>> ЈАСОН HIRSHHORN: Па, тоа е не мора вредности ѕ.
Тоа дури и не постојат во овој момент.
>> СТУДЕНТСКИ: Вие мора да се декларираат променлива порано и
потоа ја доделите на -
кога ќе го најдеш најмал број, доделите индексот на тој број да се
некои променлива или нешто слично.
>> ЈАСОН HIRSHHORN: Значи може ви кажам дека повторно?
>> Студент: Значи, каде ќе прогласи int најмалиот, исто така треба да се изјасни int
Најмалата индекс = i, или нешто слично.
>> ЈАСОН HIRSHHORN: Значи, каде што се int најмалиот, јас не само што треба да ги пратите
на вредност, но на локацијата.
int smallest_location = во овој случај, ние само ќе го правам.
Треба да знаеме каде е.
Стигнавме до крајот на кодот, а ние реализира немавме идеја каде е тоа.
И така еднаш, ние сме мапирање ова на еден до еден.
Вие момци кодирање со тоа на свој волја веројатно се дојде до истиот проблем.
Како што е грижам можам да го најдете?
И тогаш сфаќаш, чекај, јас треба да ги пратите на тоа.
>> Па ако најмалиот е поголема од вредности j.
Ние во собата најмалите изнесува вредности ѕ.
Што уште ни треба да се промени?
Константин, што друго прават ние треба да се промени?
>> Студент: На локација.
>> ЈАСОН HIRSHHORN: Токму така.
Па да ми даде таа линија во кодот.
>> Студент: smallest_location = ѕ.
>> ЈАСОН HIRSHHORN: Токму така.
А потоа надолу на крајот, ако сакаме да стави на почетокот од листата која
најмал број беше, како асоцираме кога
Најмал број беше тоа?
Маркус?
>> Студент: Најмалиот број беше се наоѓа во најмалата локација.
>> ЈАСОН HIRSHHORN: Значи во вредности smallest_location.
И што правиме ние се стави таму?
Почетокот на листа, што е тоа?
>> Студент: Па, ние навистина не знам повеќе бидејќи ние overwrote.
Па тоа е заменети локации на овие две линии?
Ако ви се префрлите овие две линии наоколу.
>> ЈАСОН HIRSHHORN: Добро, така што не повеќе, затоа што ние сме го ресетирате линија
пред вредности i за најмалите.
Па ние ја изгубивме онаа иницијална вредност.
Па ти рече swap овие две линии.
Па сега се стави на почетокот на списокот каде најмал број беше.
Па smallest_location еднаква вредности i.
Тоа е поместување на почетокот на овој несортиран дел од листата на
Најмалата локација.
А потоа и во вредности што ние сме се движат дека најмалиот број.
>> Дали тоа има смисла зошто ние мораше да се направи таа трампа?
Ние би препишани на таа вредност - Друга работа е што, најверојатно, ќе имаат
сфатиле и се најде во БДП.
Па ние сме згрижени сите pseudocode.
Дали постои нешто друго што треба да напишете овде?
Некој може да мислам на ништо?
>> Студент: Како знаеш кога ќе завршиш?
>> ЈАСОН HIRSHHORN: Како да ја знаеме кога ќе завршиш?
Големо прашање.
Па, како да знаеме кога ќе завршиш.
>> СТУДЕНТСКИ: Направете променлива да се задржи брои на ако има трампа направени или не
и оди преку помине.
>> ЈАСОН HIRSHHORN: OK.
Кои ќе работат во балон вид.
Но, за избор вид, ако ние не направи трампа, тоа само може да биде
бидејќи и најмалата вредност е во неа своето право место.
Ние би можеле да имаат листа 1, 2, 4, 3.
По втор пат преку ние нема да направи никакви свопови.
Ќе биде на број 2, но ние ќе уште треба да се насочи.
Па ние треба да ги пратите на кога ние сме направиле, или само сакате да одите
додека ова не се заврши?
>> СТУДЕНТСКИ: Ние само може да се обратите се додека не се заврши.
>> ЈАСОН HIRSHHORN: Ние може само одат додека ова не се заврши.
Во балон вид, ти си точно во право, Џеф и Aleha, со вашето решение -
тоа е одлично да ги пратите на тоа колку свопови што го направи, затоа што во балон
вид, ако го правиш всушност не прават свопови, ќе завршиш и можеби да ги намалат вашиот
Проблемот долу малку.
Но, за избор вид, сте навистина мора да оди до крајот на
листата секој пат наоколу.
>> Значи ова е тоа.
Имаме две минути.
Ајде да се направи на сите.
Дозволете ми само отворени Најди тука и да сигурен дека сум всушност повикувајќи до -
Јас не сум повикувајќи меур вид.
Ајде да го промените ова селекција вид.
направи на сите. / се најде.
Ајде да се најдат 42.
Овој пат ние нема да го положат несортиран листа, затоа што тоа треба да го решите
Најпрвин, per наодот код - да го решите Првиот користење на нашата вид функција и потоа
барате нешто.
Прстите поминува секого.
>> Ох моја добрина.
Леле, моето срце беше чука.
Па тоа е точно.
Всушност, ако ние трчаше оваа повеќе опширно, кодот, колку што можам
кажам, е совршено точни.
Постојат некои сугестии Јас ќе мора за вас.
На пример, 15 и 16 се чини малку излишни.
Се чини како да не мора да треба да се спаси и оние.
Ако имате најмалите локација, можете лесно можете да најдете најмалиот вредност од
само внесување вредности на i.
>> Значи, ако јас требаше да биде оценување на вашиот код, која јас всушност ќе биде, јас би
веројатно полетување точка, ако вклучени и двете од овие, затоа што
не треба и двете од овие.
Ако имате локација, можете да многу лесно да добијат вредност.
И ми се чини малку чудно за да ја запази двата од нив.
Можеби дури и да не земе една точка, туку сигурно коментира дека тоа е можеби
не е стилистичкиот избор што треба да направите.
Се разбира, кодот уште работи совршено добро.
>> Така, за жал ние не сме добие на меурот вид.
Жал ми е за тоа.
Ние го сторивме финиш избор вид.
Дали некој има било конечна прашања за избор кој вид?
>> Добро, пред да главата, што сакате да го отворите вашиот Chrome прелистувачот.
За жал, тоа беше само бесрамна приклучок за еден вид на интернет прелистувачот.
Можете може да се отвори било кој тип на пребарувач, но тоа најверојатно ќе биде Хром.
И да одат во оваа следниов веб-сајт -
sayat.me/cs50.
Ако не сте пишување во вашиот компјутер Токму сега, вие сте јасно
не го прави тоа, Том.
>> И ве молиме да го направи тоа или право сега или во следниот час -
ми даде некои повратни информации.
Ова е само дел два.
Имаме многу повеќе заедно, па јас имаат многу простор за подобрување.
Јас се надевам дека, исто така, направи некои работи добро.
Па можете да направите да се чувствувам сите лоши, но ако исто така, сакаат да ми даде смешко
лице, јас ќе ја цениме тоа како добро.
Пополни таа внатре
>> И со една минута лево, кој беше три недели.
Јас ќе стојат надвор за малку ако имате било какви прашања.
Јас ќе те гледам момци во предавање утре.