Роб: Во ред. Добредојдовте на првиот дел. Јас сум Роб. JOSEPH: Јас сум Јосиф. Роб: Значи, ние ќе се нурне право внатре Првото нешто да се зборува за е апаратот. Па се надевам дека повеќето од вас имаат преземале тоа веќе. Но може да се види инструкции на cs50.net/appliance. О Боже, сега сум самосвест. Јас се уште го слушам. JOSEPH: Леле, што звучи како тоа е дезориентирани. Роб: Значи некои луѓе се имаат проблеми со него, па не чекајте до последен момент на проблемот во собата да се се обиде да го реши апарати и дознаваат дека тоа не е работа. JOSEPH: И ако нешто не работи и ви треба помош, можете да одат на cs50.net/discussion каде што имаат форум каде што можете може да ја објавите вашата прашања. И ние ќе дојдеме до нив на крајот. Роб: Во ред. Значи тоа е она што апарати изгледа. Повторно, тоа е само сосема посебен оперативен систем кој работи во рамките на што оперативниот систем што се работи на вашиот лаптоп. И главните работи што ќе биде со користење се gedit. Па се надевам дека ова нема веќе стане познат сајт. На терминалот. И ти исто така може да се кандидира Хром во рамките на апаратот. Имало неколку луѓе кои се изјасниле интернет не работи во апаратот. А некои од нив се само претпоставува дека не би требало да биде интернет во уредот. Но да, постои треба да биде интернет. Јас ќе го кажам токму сега, но тоа не го прави навистина значи ништо. Ако на интернет не е работа, тоа е она што имаат тенденција да треба да се кандидира за да го поправам. Ако имате прашања поврзани со интернетот, не се сеќавам тоа, само да го објавите на Дискутираат и ние ќе каже, работи тоа. Но, на интернет треба да се работи. Значи единствената друга работа - Да, ништо друго е навистина релевантни. Но само сакав да истакнам дека - види во оваа долниот десен агол. Па секој од вашите апарати треба имаат IP адреса. А подоцна и во семестар, оваа IP адреса адреса ќе стане повеќе релевантни кога си работат на веб стр-сет, бидејќи ќе бидете во можност да пристапите до веб си работат на од вашиот локалните Хром со користење на оваа IP адреса. Но, она што сакам да се користи само ИП адресата за - и вие не мора да го направите ова, јас само сакам да го истакнам - е тука. Значи ова е терминален прозорец за мојот Mac, тоа не е во Апаратот на сите. И можете да барате до она што оваа команда го прави тоа. Но јас ќе одам да SSH директно на мојот апарати. Јас не знам што IP адреса е. JOSEPH: 168 - 168.224.1.0. Роб: Значи еднаш сум се направи со ова, се логирам Сега, во основа, ова е идентично со терминален прозорец во рамките на мојот апарати. Па јас доста всушност никогаш не работел од рамките на апарати себе. Јас само секогаш го работи во позадина минимизиран и SSHed во тоа. Прашањето со ова е да не се случува да бидат во можност да го користите gedit лесно директно од ова. Но, ако сакате да се биде вистински кул хакер, тогаш треба да се навикнеш на командната линија текст едитор во секој случај. Па VIM и Emacs и Нано, сите овие се различни алтернативи. Нано има тенденција да биде најлесно. И мислам дека нема синтакса за нагласување. О, не, таа целосно го прави тоа. Значи можете да го користите Нано, бидејќи дека еден е прилично лесно. Гледаш сите овие команди на дното. Оваа мала морков симбол. Ако не го видел, да ќе Најверојатно ги гледам многу сега. Тоа обично значи дека контролата морков, како на дното-лев агол на вашата тастатура контрола карактер. Па еве тоа е ми кажуваше долу тука - ох, тоа не е отсечени ако јас зумирате внатре Значи контрола, X е како Одам да излезете. И тоа вели дека може да ја погоди Y за Да, за заштеда, N за бр Па тоа е Нано. VIM и Emacs имаат тенденција да бидат малку повеќе комплицирана и огромно. Но, можете да се навикнеш на него, а потоа ќе ти се допадне. Значи тоа е тоа. JOSEPH: Нема потреба да го сторат тоа. Роб: Да. Вие сте слободни да го користите gedit за Остатокот на семестарот. Така било апаратот поврзани прашања? Или мислите дека имате било какви мисли за тоа што друг треба да се зборува за тоа апаратот? Да. ЗВУЧНИК 1: Кога ќе SSHed во вашиот работа, беше лозинка Crimson? Роб: Да. Лозинка за доста сè во апаратот ќе да биде Crimson. ЗВУЧНИК 2: Инсталирајте како вистински ИРО на апаратот, тоа ќе функционира? Роб: Претпоставувам Затемнувањето го имаат Fedora верзија, во кој случај, да, можете да го направите тоа. Тоа е веројатно не се навистина достоен за тоа. ЗВУЧНИК 2: OK. Така, тоа е веројатно е полесно ако сакав да го користите Eclipse, само користење на мајчин и а потоа вчитајте ги за - Роб: О, тоа е, исто така, веројатно е полесно. Но, можете да го добие работа во рамките на апаратот. JOSEPH: И за камерата, прашањето беше, може да инсталирате друг ИРО во внатрешноста на уредот? Роб: Eclipse биде пример за ИРО. Било која друга апарати прашања? Во ред е. Па ние сега ќе се движи кон командната линија интерфејс поврзани нешта, па CLI. И повторно, јас сум само ќе работат во тука, бидејќи ова е идентична со работат во терминален прозорец во рамките на апаратот. Како е тоа фонт барате? Дали е тоа доволно голема? Во ред е. Па така постојат многу команди кои треба да се прилично се користи за да текот на семестарот. На двете големи за навигацијата се ls, листа слики во овој директориум; и CD, така да го променат директориум. За да можам да го променам десктоп и потоа многу заедничка шема е cd до директориум и веднаш ls што во директориумот. Луѓето, исто така понекогаш не сфаќаат дека јазиче завршување е нешто. Па како CD, Сандачето, а потоа погоди јазиче. Јас речиси никогаш тип надвор целата работа. А потоа, ако јас удираш јазиче Повторно, тоа ќе автоматски проектот листата за мене. Па може да се cd vhosts, локалниот компјутер. И тоа е само случува да - во случај да не сте слушнале поимот пред, директориум е само друг збор за папката. Па сега ако те видам - ајде да донесат дека до врвот. Па сега ако те видам во загради, можете види малку тилда, коса црта, vhost, коса црта, локалниот компјутер. Па тилда, кој се однесува на мојот домашен директориум. Тоа е директориум сте кога ќе SSH внатре Тоа е директориумот сте во кога ќе се отвори терминал. Тоа е каде што ќе започне. И така јас сум во внатрешноста на мојата домашен директориум, и јас сум внатрешноста на vhost директориумот во внатрешноста на мојата домашен директориум. И тогаш јас сум внатрешноста на локалната домаќин директориум внатре во тоа. Па некои други корисни работи со CD - или добро, воопшто, па точка секогаш се однесува на тековниот директориум. CD, точка е прилично безвреден команда. Но тоа се менува со тековниот директориум. А повеќе корисна во смисла на CD-то е точка, точка, која е само одат нагоре една папка. И се напомене дека овие - Сакам да кажам адреси, но овие симболи, точка, и точка, точка, кои работат за доста било команда си ќе треба да се размислува за работи. Па како CD-то е веројатно каде што ќе биде користење на повеќето, но тие не се работи кои само cd разбира. Тоа е доста нешто целата своја командната линија разбира. Многу од програми се разбере точка и точка, точка. Па други полезни - CD, цртичка. Така што ќе ме донесе до Последниот директориум во кој бев внатре Па понекогаш и јас ќе се направи такво нешто, ох, јас работам тука. И гледам некои грешка со нешто и Јас ќе одам испита тоа со одење на некои случајни директориум некаде. И јас не знам дали тоа ќе дозволете ми таму. Тоа ќе. Па тогаш правам што сакам во овој директориум. Бла, бла, бла, бла, бла. А јас бев како, добро, јас сакам да се вратам на местото каде што беше. CD, цртичка, и тоа ме носи десен бек. Па ќе одам да се фрли многу од овие на тебе денес. Јас не очекувам да се запаметат сите од нив. Тоа е вид на само знам дека тие постојат. А потоа подоцна кога сте како, хм, сакам да се вратиме на директориум дека јас бев само на, О, чекај, нешто како што постои. Вие не треба да се само напишете во на целиот директориум повторно. JOSEPH: и на крајот ќе само користете ги одново и одново, и тоа ќе стане мускулите меморија. Роб: Да. Па, како што реков и порано, дека тилда е Вашиот домашен директориум. За да можам да CD, тилда. Но јас дури и не мора да се направи тоа ако јас само - Јас ќе се вратам во директориумот, па тоа не е бесмислен пример. Но, ако јас само го прават CD, тоа е, исто така, исто како, одете на мојот домашен директориум. Јас команда, К JOSEPH: Можете исто така да напишете јасни, збор, и тоа треба да го тргнат. Роб: И мислам дека, исто така, контрола, L, исто така, го прави тоа. Значи многу различни начини. Мислам дека постојат некои разлики, каде што јасни и контрола, L ќе само навистина го турнам на врвот и Јас се уште може да дојдете назад. Команда, К буквално уништува сè, и ќе не може да дојдете назад. Во најмала рака, тоа е како тоа функционира во iTerm2. Не знам како другите работи - ох. Со SSHing, па ако сте на Windows, ви се случува да мора да преземете PuTTY со цел да SSH бидејќи Windows не имаат како вграден во SSH алатка. Од Macs, можете само да SSH директно од терминал. OK. Прашања? Со ls, па нешто да се навикнеш на со повеќето од овие команди е - добро, јас само ќе направи еден. Ls, цртичка, л. Па цртичка, л е она што ние ќе да се јавите на знаме да се ls. И многу од овие команди имаат знамиња дека може да се помине за нив. Значи во овој случај, цртичка, л е знаме што ја кажува да ми даде целосна листа на сите информации на овие датотеки. Така можеме да видиме дека тука десктоп беше пат е изменета на 30 јули во 12:54. Превземања беше изменета на 6 септември. Овие се сегашната големина и бајти од овие директориуми. Вие не треба да се разбере сето ова. Овој материјал е на лево, овие drwx е, кој ќе стане многу повеќе релевантни подоцна, кога ќе треба да се занимаваат со - што треба да прави со кои има дозвола да се погледне во овие датотеки. И така, ако не беа единствените корисник на овој компјутер, ќе бидете во можност да да речеме, во ред, јас треба да биде само една дозволено да се погледне во оваа датотека или јас сум ќе им овозможи на сите да се погледне во оваа датотека. Па некој друг на мојот компјутер може да се погледне на овој фајл. Јас дури и не знаат што е ова - што значи овој направам? JOSEPH: Јас не сум сосема сигурен, всушност. Роб: Не знам. JOSEPH: Но, ако не знаете, постои корисна команда која можете да го користите да ви кажам што на излез значи. И ако го напишете во човекот пред команда - така M-A-N. Роб: Човекот. Значи човек е уште еден што е многу корисно. И човекот, ЛС. Па човекот страници, тие имаат и команди кои ви се случува да биде со користење на во командната линија, и тие исто така имаат функции кои ќе бидат релевантни со C. Така може да се човек - и јас игнорирани 3. Но, човекот 3 printf ќе донесе до C верзија на printf. Но, ако јас само го прават човекот printf, ова е ќе донесе до командната printf што се случува во командната линија. Значи човек, ЛС. Човекот страници може да биде прилично огромна. Тука, сепак, ќе видите листата на сите овие знамиња кои ls разбира. Па ако одиме да цртичка, л, и - Јас сум само ќе фрли ова во вас. Но, со цел да се бараат, сакате прво да ја погоди прашање марка или црта копче. Значи намали. И тогаш јас може да се бара за она што го сакате. Па јас ќе одам да се намали за цртичка, л. И таму беше. Па користат долго листата формат. Тоа не да ми помогне да дознаам што дека одредена колона значеше, но јас претпостави некаде во тука тоа ќе се објасни дека. Па користат човекот страници за било команда дека не веднаш да се разбере. Јас сум прилично сигурни дека може дури и човек, човек. Интерфејс за онлајн референтни прирачници. О, едно последно оној кој е можеби малку релевантен ls, цртичка, а. Па известување, ако јас само го направи ЛС, Јас се овие датотеки пет. Ако го направам ls, цртичка, а, јас добие многу повеќе датотеки. Па нешто заедничко помеѓу сите овие нови датотеки е точка однапред. Па на конвенцијата е дека датотеката која почнува со точка е скриена. Значи, вие не сакате да се види дека датотека, не сакаат да го имаат плеткаме со Вашиот директориумот. Тоа е само кога ќе се експлицитно побара, сите во право, ls, цртичка, а, покажи ми. А се залага за сите датотеки, вклучувајќи скриени оние. Па некои други команди. Ох, прашања во тој момент? Да. ЗВУЧНИК 3: Кога ќе го направите ls, А, она што е точка, точка? Роб: О. Значи ова е она што јас го зборувам. Тоа е истото каде Можам да како CD, точка, точка. Толку технички, точка и точка, точка се додадени фајлови кои постојат во секој директориумот каде што точка на датотеката се однесува на тековниот директориум. Значи, ако јас CD, точка, јас сум само ќе да остане во директориумот. И точка, точка секогаш се однесува на претходниот директориум едно ниво нагоре. Па ако одам во трупци и ls, цртичка, Ал, Ќе видам точка, точка. cd до точка, точка ме носи кон претходниот директориум. Да. OK. Значи уште прилично важен команда е РМ. Значи тоа е она што ние ќе да се користи да се отстрани. И дозволете ми да всушност прават уште команда во прв план. Па mkdir. Mkdir е како можете да креирање на директориуми. И јас ќе се создаде привремен директориум и да си одат во таа привремен директориум. И како што се очекуваше, тоа е празна. Но, ако јас ls, цртичка, а, јас се уште имаат точка и точка, точка, бидејќи точка се однесува на на тековниот директориум. И точка, точка се однесува на претходниот директориум. И оние секогаш ќе постои, без разлика директориумот во кој се наоѓате И ова е сосема непотребно команда, но на допир. Јас сум само да го користите, затоа што тоа е лесен начин да се создаде датотеки. Па допрете допрете б, допир в е само ќе создаде додадени фајлови: нарекува три, b, и c, кои се целосно празна. Значи поентата на мене создавајќи оние во прво место е само, така што РМ е како можеме да ги отстрани. Па РМ,. Тоа се случува да ме праша, отстранете редовно празна датотека на? И тогаш ќе речам дека Да. Значи, ако јас се знае за сигурно што сакам да избрише таа датотека без да биде предочено, отстранете редовни празна датотека?, тогаш РМ, цртичка, ѓ се случува да биде знаме што вели, ги принуди отстрани без дури и ми се прашува, ох, дали сте сигурни дека сакате да ја избришете датотеката? Да, јас сум сигурен. Па РМ, цртичка, fb само ќе го прават тоа без да побара. Па ајде направи нешто повеќе директориуми. mkdir, tmp2, CD, tmp2, во допир со, на допир б. OK. Па сега сакам да го отстраните tmp2 како директориум. Па РМ tmp2. Вие не може да ги отстраните tmp2, тоа е директориум. Значи прашањето овде е дека РМ не го прави тоа веднаш работат на директориуми. Тоа е само наменета за датотеки како не-директориум датотеки. И така што можеме да направиме тука е РМ, цртичка, Р. Дека се залага за рекурзивно, кои би можеле да не значи ништо сеуште. Но кога ќе стигнете до рекурзија, тоа ќе значи повеќе. Па РМ, цртичка, Р tmp2 се случува да се рекурзивно одат во тој директориум. Па слезе во директориумот tmp2? Да, ајде да одиме во тоа. Сакаме да се отстрани tmp2 / a? Да. Сакаме да се отстрани tmp2 / б? Да. Сега сакаме да се отстрани директориумот tmp2? Да. Па сега директориумот и сè внатре тоа е отстранета. Таму е технички команда rmdir кои можете да ги користите за да го отстраните директориуми, но тоа само дела на празни директориуми во секој случај. И да се види дека, ајде да направи mkdir, tmp2 повторно. Tmp2, допрете. OK. Значи, ако јас се обидувам да се отстрани dirtmp2, тоа ќе велат, директориум не е празен. Па јас доста никогаш не го користат отстрани реж команда, сепак, бидејќи РМ, цртичка, r ќе работи на празен директориуми и не-празни директориуми. И, исто така, ако не сакате да мора да одат преку дека целиот процес на слегувате во директориумот и отстранување на секој поединец датотека, RM, цртичка, РФ, tmp2. А сега тоа го нема. Нешто да се биде внимателен за е РМ, цртичка, RF. И тоа ги плаши мене да дури да ја напишеш, бидејќи ако јас случајно притиснете ентер или нешто. Па РМ, цртичка, РФ, тилда би, без ме прашува, ѓ не го извести мене, тој автоматски ќе го отстрани целиот мој домашен директориум и што е во него. Па може ќе помислите дека е глупав нешто да се направи. И добро, тоа е. Но, тоа може да се случи многу лесно со несреќа ако, да речеме, сакав да се отстрани мојата коса црта, vhost директориум. И само во брзо пишување, Јас случајно го направите тоа. Која ќе го отстрани рекурзивно двете ми домашен директориум и vhost директориум во овој конкретен директориум дека само се случува да не постои во моментов. Но, ова, сепак, ќе се отстранат целиот мој домашен директориум. Барем со тоа што не има ѓ, дека ќе ме натера во прв план. И јас би биде како, ох, не, јас не сакаат да го направат тоа. Но луѓето, коса црта, вклучувајќи мене имаат тенденција да се влезе во навика секогаш RF-ИНГ. Дури и редовните датотеки кои јас само може да РМ, в, се трудам да само РМ, цртичка, РФ, в. Но, бидете внимателни кога сте RF-ИНГ. ЗВУЧНИК 4: Што значи C направам? Роб: C е Зборувам за тоа Ц датотека во овој директориум, дека РМ, в. JOSEPH: И уште опасно, ако користите ѕвезда, тоа се однесува на се што е во директориумот. Значи она што најчесто имаат тенденција да направите е јас ќе одат во директориумот и сакам да Отстрани ги сите датотеки во таму. Па РМ, цртичка, РФ, ѕвезда. Роб: Да. RM, цртичка, РФ, ѕвезда. JOSEPH: И ако не сте внимателни што директориум сте во - Јас не сум бил во Temp, но јас бев случајно во мојот домашен директориум, тогаш јас ќе се отстрани сè во мојот домашен директориум. И јас сум всушност направиле тоа порано, и Мислам дека го направиле тоа порано или Џеј има направено тоа порано. Роб: Сум случајно отстранета - па го игнорираат тоа команда за малку. JOSEPH: Не е забавно. Роб: Значи во коса црта bin директориумот е куп на бинарни датотеки, каде што таму ќе биде запознаен оние како ѕвекот. Па, ѕвекот и во основа сите овие работи кои јас сум вклучен на командата линија се во оваа црта bin директориумот. JOSEPH: Како ли е тука. Роб: Значи точка, коса црта, ls ќе листа овој директориум. JOSEPH: Rm е, исто така, во овој директориум. Роб: Имам случајно РМ, RF-ед бин, кои ги отстранија било команда можев можеби некогаш сакате. Кои потоа јас само го инсталирате на нови апарати во тој момент. JOSEPH: Значи да се биде многу внимателен кога го користите оваа команда. ПУБЛИКАТА: [нечујни]? Роб: Да. Тоа е исто така лоша навика да се влезе. Ако забележите, јас сум сега - добро, вие не може да се забележи, но мојата зум-во можеби може. Па јас сум сега root @ апаратот. Па jharvard е корисник сакаме да го секогаш да биде во употреба. Коренот е оној кој има дозвола да се направи апсолутно ништо. Така забележите кога сум jharvard, ако јас се обидувам да CD - она што е директориумот кој? Ох, коренот е добар пример. Па CD, корен. Пристапот е одбиен. Затоа што ако ние се погледне на овој оглас - и повторно, вие не мора да се целосно се разбере ова. Но, овие три цртички велат дека не дозволувајте било кој друг корисникот во овој директориум. И директориум случува да се во сопственост на корисникот root. Значи фактот дека јас сум jharvard и не оној кој не е корен е дозволено во овој директориум, тоа значи дека јас сум ќе добие дозвола негираше кога се обиде да cd во неа. Значи, кога јас сум корен, имам дозвола да направи апсолутно ништо, вклучувајќи избришете од суштинско значење датотеки на апаратот и уништи целата работа. Па тоа е лоша навика да се влезе само скитници околу оперативен систем како root. Да го сторам тоа во секој случај. Прашања? И јас ќе излезете корен, се држат како jharvard. OK. Повеќе релевантни команди. Па ќе се вратам во нашиот Temp, на Командата mv се залага за потег. Можете да се движите со. Сега сакаме да го наречеме б, па сега се вика б. Или можеби сакаме да се движиме б до една папка. Па сега празен овој директориум е. Јас ќе се вратам на моето домашен директориум, и можеме да видиме дека б е тука, бидејќи домашен директориум е еден директориум за разлика од директориумот, која б биле внатре Постои, исто така ср. Па ср е копија супер секција, точка, текст. Јас може да го наречеме е, точка, текст. Сега имаме двете супер секција, точка, текст, и на, точка, текст. Ова исто така работи на директориуми. Јас RF-ед една датотека. Па CP - добро, прво нека се обиде CP, мали, tmp2. Па испуштањето директориум мали. Толку слична на РМ, на стандардното однесување е да не работат на директориуми. И повторно, слично на РМ, стандардно однесување - и, добивање на тоа да работат со директориумите е, цртичка-R далеку. Па копирајте рекурзивно на температура директориумот во tmp2. Па сега имаме и мали и tmp2, и дека не е толку корисни, бидејќи мали беше празна, на прво место. Tmp2. Сега ајде да го копирате мали во tmp2. И гледаме дека tmp2 исто така има датотека А, бидејќи директориумот и Сè што во внатрешноста на тој Директориум копирале. И дека може да биде малку корисен ако, да речеме си работат на проблемот се постави еден - или, всушност, подоцна проблемот се поставува уште поважно, бидејќи таму ќе биде целиот куп на датотеки и работи. Но само сакате да, за разделно Второ, сте како, добро, јас сум ќе да пробате нешто различно. Дозволете ми да го копирате целиот мој pset1 директориумот во pset1 резерви, така што ако Јас се заокружи нарезници работите, не можам да врати се назад во мојата копија на директориумот. Постојат посоодветни начини на versioning поддршка на Вашиот код, но ова е секогаш брз начин да се само да се направи дека имате копија на нешто дека сте за да го измените. Па ехо е исто така еден-оф команда која вид на sillily само ќе се печати на командната линија токму она што сакавте да ехо. Па ехо Здраво. Ние само ќе се печати Здраво. Ехо Здраво светот. Ние ќе се печати Здраво светот. Кој доаѓа во употреба кога ќе започне комбинирање команди. И повторно, не очекувајте да се целосно се разбере ова сеуште, но тоа е нешто да се види. А потоа, ако сте Googling за примери или да сфатите што сакате да направите нешто, тоа може да биде корисно. Па ајде, како пример, така ls, цртичка, л. Па тука гледам излез на ЛС, цртичка, л. И јас велам, ОК, јас сакам да продавница, во којашто во датотека. Сето ова излез тука, сакам да се стави во посебен фајл. Значи ова малку поголема од симбол е она што ние ќе треба да се јавам. Ние сме пренасочување на излез во датотека. Ајде да се јавите на датотека бла, затоа што тоа е она што јас имаат тенденција да секогаш го наречеме. Па сега можеме да видиме ние имаме поднесе бла, токму тука. И ако ја отвори, јас ќе видам што е точно на излез од командата дека само што трчаше. И слично, можете да - ако ова беше излез на датотека, овој е да се добие влез од датотека. Што е команда која јас - JOSEPH: Мислам дека можете да го користите помалку или повеќе, веројатно. Роб: Но, како за само помалку бла? Не знам. Ако дојде во ова сценарио, како има psets дека тоа е корисно за. JOSEPH: Можете да цевка во ехо. Цевка на датотеката во ехо да ја видите. Роб: Тоа е луле. JOSEPH: Извини. Роб: Во ред. Значи ова е излез на датотека. Ова е да се добие текстот од датотеката и го предаде на програмата. И ќе видите овој човек. Значи ова е вид на прави и двете одеднаш. И всушност, јас ќе се воведе две нови команди само за да го искористи тоа. Историјата е корисна команда која е само ќе испечатите листата на ништо што некогаш сум го извршите командата линија. Па ќе видиме тука сè што имам се одржува целиот овој период. Многу ли е. И уште една корисна команда е grep дека нејзината цел е да пребарување преку текст во потрага по модели, добро, во потрага по она што ви сакате да барате. И така корисна употреба тука е, да речеме ние сакаме да го дофати историја. И сакам да се погледне за команди каде што - што е корисна за да барате? JOSEPH: [нечујни]? Роб: Или ајде да се погледне за сите допре, за која било причина. Значи тоа е она што ќе изгледа. А вие не мора да се целосно разбирам тоа. Но, идејата е тука, историјата е давање иста излезна тоа го правеше тука каде што е печатење на целата историја на сето она што некогаш сум ја стартувате. Ние тогаш се поминува тоа - па наместо тоа печатење на екран, ние сакаме да мине на команда grep кој е во потрага по сите случаи на зборот допир. И така со користење на овој комбинација на алатки историја и grep, можам да видам, во ред, тука е сите на команди некогаш сум ја се кандидира, и тука е малку заеднички еден. Ние сме на дното. И тоа е, исто така, ми дава команда Јас само се стрча кои имаа Зборот допир во неа. Но цевката е прилично корисна работа за комбинирање на повеќе програми. А всушност, тоа е кратенка за ајде мене излез историјата да поднесе бла, и дозволете ми да grep со користење на датотека бла како и она што сакам да се погледне во текот. Па цевката е само кратенка за овие две команди. Да. ЗВУЧНИК 4: [нечујни]? Роб: Да. Што е - Ох. Ајде да се тестираат. Па мачка, куче, риба. Па сакам да grep. Цртичка, R, повторно, ќе биде рекурзивно, па сакам да се спушти надолу сите директориуми. Сакам да рекурзивно grep за сите - и дозволете ми привремено добие ова надвор од патот. Игнорираат мене. OK. Па сакам да привремено grep за сите случаи на зборот риба. И така тука она што јас го правам е grepping рекурзивно за зборот риба. И ѕвезда значи над сите овие слики во овој директориум. И така тоа ми даде Дозвола одбиен, поради тоа што не е дозволено да се прочита дека особено датотека. Но, тоа се пронајдени риби во датотека, на тестот. Јас, исто така може да се каже, посебно, јас само сакате да се погледне во датотеката бла, во кој случај тоа нема да најдам ништо. Јас само сакам да се погледне во датотеката, тест. Тоа ќе најдете риба. Тоа е прилично корисна команда да знаете воопшто. Постојат некои алтернативи на grep кои би требало да бидат повеќе програмер пријателски, но се трудам да се уште да се врати на grep. Прашања? OK. Дали постојат други команди? Ох. Само еднократна што јас секогаш најдете да биде забавно е Cal. Така забележите кога јас сум во оваа прекрасна полн екран, немам како врвот лентата со алатки или ништо. Значи Cal само ми дава убаво малку календар кој е во право сега отсечени, претпоставувам. Но убаво малку команда. JOSEPH: Тоа е [нечујни]. Други команди кои може да имаат види вклучуваат ѕвекот и ги направи. Ќе одиме над нив во повеќе детали подоцна. Но, ако сте биле работат на на PSET, треба да бидат запознаени со нив. Роб: Во ред. Прашања во врска со командната линија работи? Во ред е. Па ајде да се движи кон некои C-поврзани работи. Променливи математика. OK. Значи исто како и имавме математика во нула, исто така можете да го користите математика во C. Пред да се дојде до таа во целост, па променливи. Се сеќавам дека секогаш кога ќе прогласат променлива како int x или y плови, можете мора да го даде внесете пред името на променливата. Па видови видовме досега се int, плови, двојно, долго долго, што јас всушност не знам дали ние сме види дека досега. Постојат некои други оние. Ние сме се види знак. Таму е краток, кој е како тоа е спротивно на долго долго каде што тоа е помал од цел број. Ние исто така се гледа стринг. Значи она што е посебно за стринг? Зошто јас би рекол дека е не е доста како int? ЗВУЧНИК 4: Тоа навистина не постои. Роб: Да. Значи единствената причина имаме низа е затоа што кога ќе се направи хаш, вклучуваат cs50.h. И ќе видиме примери на ова подоцна - ох, тоа не се справува со тоа добро - каде cs50.h прави нешто по должината на линиите на видот дефиниција, знак ѕвезда, стринг. И така тоа е велејќи дека ние дури и не знаете што е знак ѕвезда е сеуште. Но, ова е велејќи дека ние сакаме стринг. Секое место сте биле со стринг, би можеле да се користат знак ѕвезда, која всушност е тип кој постои во C јазикот. Но, ние ќе дојдеме до тоа. Ох, и тоа оди десен бек. Уредни. Па истото со bool каде вистински и лажни. Тоа не е навистина вградениот тип во C. Наместо тоа, тоа е само, значи овој треба вредноста нула? Тогаш ние само ќе се разгледа тоа да биде лажна. Дали ова има вредност - добро, значи овој треба било вредност што не е нула? Тогаш ние ќе го сметаат за да биде вистина. Така што едно е точно, две е точно, ништо нула е вистина. Значи тоа се тие. Прашања за прогласување променливи и променлива видови и сето тоа? Да. ЗВУЧНИК 4: За долго долго, во книгата, тој рече дека мораше да биде долго долго int. Но, само долго долго ќе работите? Роб: Значи овие тип изменувачи. Па int x. Така и ние може да се каже непотпишана int x. Можеме да кажеме краток int x. Можеме да кажеме долго долго int x. Но доста било која од овие работи кои ги само рече, непотпишана int, кратки int, долго долго int, можете да се ослободите од ИНТ и тоа само ќе ја преземе дека ќе значеше Инт. Па непотпишана X, кој едноставно значи - знаете како нормално со int, може да се каже x е еднаква на негативните 3? Со непотпишана int, дека не можеш. JOSEPH: И повторно, за камерата, Прашањето е, она што е разликата помеѓу долго долго int и само долго долго? Роб: Да. Па јас ќе речиси никогаш пишуваат долго долго int. Јас ќе напишам долго долго. JOSEPH: Било какви прашања? Роб: OK. Толку глупо малку потсетување на тоа е како декларираме променлива и се иницијализира променлива и се изјасни друг променлива и се иницијализира сите во еден чекор тоа. Па декларација на променливата и иницијализација променлива немаат да но може да биде во иста линија. Значи имаме стандард математика оператори дека сте навикнати да - плус, минус, јаз, пати. Постои, исто така modulo, кој ќе видиме. Не постои, барем во Ц, вграден во власта степенување коректорски знак оператор. Па, таму е коректорски знак оператор, но тоа не е моќ. JOSEPH: Но, тоа не е степенување, Да. Роб: Не користете го коректорски знак да се претпостави дека тоа значи како квадрат или whatever. Па некои работи да се има ум за поделба. Јас ќе застане. Така прогласи иницијализира одговор. Па ние велиме плови одговор е еднаква на 1 поделено со 10. Печати одговор на две децимални места. И ова е вид на нешто што јас би човекот printf да дознаам дека она што е грижам се%, дот, 2е значи? И тоа само значи, добро, игнорирање на 0,2. И%, f е она што ние ги користиме да се печати да се плови. 0,2 е велејќи дека, печатење дека плови со две децимални места. Значи оваа програма има баг, и може да го виделе ова досега во некои пред CS разбира. Но што е тоа баг? ЗВУЧНИК 5: Нулта. Роб: Да. Значи, кога велиме, одговорот е еднаква на 1 поделено со 10, сакаме одговор да биде 0,1. Но 1 поделено со 10, 1 е цел број, 10 е цел број. И така, кога правиме цел број поделено со цел број, ние ќе се вратам цел број. Значи 1 поделено со 10 е 0,1. Бидејќи тоа треба да ни даде цел број, тоа е само ќе да фрлаат дека децимално место и да кажам дека одговорот е 0. И така, кога ние печати одговори тука, тоа се случува да се печати 0.00. JOSEPH: И само како забелешка, тоа всушност фрла она што е по децимална точка. Значи, ако наместо имаше 6 поделено со 10, што можеле да помислат дека тоа ќе ви даде 0,6, а потоа ќе се заокружи на 1. Но, всушност, она што се случува кога пишувате задачи е тоа што таа капки што е по децималната точка. Значи 0,6 не стане 0. Роб: Да. И ние ќе каже скратувајќи за тоа. Значи секогаш кога ќе го дадат на int, на децимална се скратени. Па фикс за тоа - постои всушност две. И јас одам да го стори тоа второ, затоа што ова е многу полесно поправам. Значи една фикс е да се користи плови во поделбата. И навистина, имате само да се направи еден од нив плови. Но тоа е малку појасна само да се направи двете од нив лебди. Значи 1,0 поделено со 10,0 е поделба две плови. Значи одговорот ќе завршат да бидат плови, и така ќе правилно печати 0,10 тука. Нешто што не работат толку добро за тоа е, добро, сигурно, тоа беше лесно доволно да го конвертирате 1 на плови со тоа што 1.0. Но, што ако, наместо имавме два цели броја како int x е еднаква на 1 и int y е еднакво на 10, а потоа сакавме да се x поделено со y? Така што не е лесно да се само направи x.0 или нешто слично. Па фикс за кои е лиење. Па кастинг е начин во C за претворање на од една променлива видот на друг. Па еве, 1 е цел број. И со ставање на овој плови пред тоа, ние сме кастинг 1 до плови. Па така ова ќе се претвори 1 до 1,0. И ова ќе се претвори 10 до 10.0. А потоа работите се однесуваат слично на претходната верзија ние само покажа каде што, како што се очекува, ќе го добиеме 0,10 и тоа ќе се печати тоа. И можеме да го направите ова со променливи, исто така. Значи можеме да кажеме, плови х поделено со плови y. JOSEPH: Било какви прашања? Роб: Значи исто како и во редовни математика, имаме оператор предност. Па во математика, ти си поголема веројатност да го наречеме ред на операции. Еве, на официјалната термин е оператор предност. Но операторот предност, или повеќето оператори, е како што би очекувале. Значи исто како во математика, 2 пати 10 е ќе треба да се групираат поблиску отколку овој 10 поделено со 2, а потоа 2. Редоследот на операциите, тоа ќе го стори 2 пати 10, 10 поделено со 2, а потоа тоа ќе го стори 20 плус 5 плус 2. Па тоа е како што се очекуваше, а можете да го користите заграда во групата изрази. Не можете да користите загради во групата изрази. Да? ЗВУЧНИК 5: Можеш ли да всушност само да се вратиме една секунда? Можете да го дадат int во стринг? Роб: Значи во C, можете да го дадат ништо дека сакате да го нешто што сакате. Тоа не значи дека тоа е добра работа да се направи. Па кога ќе фрли int да стринг, тоа значи - и ние ќе се влезе во оваа многу потемелно - JOSEPH: Многу подоцна. Роб: Не сакав да кажам многу подоцна, па се обидов да ги променам моите реченица. Ние ќе се влезе во неа многу потемелно подоцна каде навистина, кога имате стринг променлива - па низа може да се произволно долго, нели? И ние сме биле велејќи дека int е четири бајти и долго долго е осум bytes и плови е четири бајти. Па стринг, исто како int, само што има одреден број на бајти на него. И дека ќе биде четири бајти. Но низа може да биде прилично произволно долго, нели? Значи Здраво светот веќе, ако тоа е 10 карактери или што и да, тоа е веќе ќе биде во текот на 4 бајти Јас може да се вклопат во низа. И така како жици навистина работи е дека тие се таму каде што во меморија што низа се чува. И така, овде, кога велам низа x еднакво Здраво светот, во внатрешноста на x е само велејќи, ох, Здраво светот се чуваат на ова место во меморијата. Значи, ако ние се обидуваме да го дадат цел број на жица, па ние се обидуваме да го протолкува некои случајни дел од меморијата како стринг. И дека речиси секогаш крши работи. JOSEPH: Но, ако тоа ги збунува вас, ние ќе го покрива повеќе во длабочина подоцна. Роб: Да. Ова е местото каде што се случува да се влезе во совети. И дека е значаен парче на две недели од овој курс. ЗВУЧНИК 6: Дали работи како објекти на други јазици или не навистина? Роб: Значи на други јазици, предмети ќе бидат претставени со покажувачи. Тоа не е една иста работа, иако. Било кој мисли? JOSEPH: Не Не мисли. Роб: OK. JOSEPH: Next. Роб: Само одат со тоа. Во ред е. Па modulo. Исто како и ние имаме плус, минус, делат и размножуваат. Па modulo е оној што може Не сум ја видел досега. И тоа само вели, им даде на ме на остатокот од. Значи 55% 10. Остатокот од прави 55 поделени од 10 ќе биде 5. Значи 55% 10 е 5. И 3% 5 ќе биде 3. 8% 8 ќе биде 0. 16% 15 ќе биде 1. JOSEPH: Една работа е да се напомене со ова, исто така, тоа не би можеле да работат како што се очекува ако користите негативен број. Толку негативни 5% 4, некои луѓе Можеби мислите дека е - што ние би помислиле негативни 5% 4 ќе биде? ЗВУЧНИК 5: Еден. JOSEPH: Значи некои луѓе велат едно, некои луѓе велат негативна. Но, она што - Роб: Јас дури и не ќе има рече еден од нив. JOSEPH: Два, жалам. Некои луѓе велат - Роб: Три. JOSEPH: Три? Роб: Негативни - она што беше - негативни пет - JOSEPH: Три, три, три. Жал. Бидејќи modulo, генерално, кога сте види на друго место, тоа обично значи се вратат позитивно број, нели? Роб: Значи, кога велиме во математика,% 10, тие имаат тенденција да сакаат да ви даде - ако ние современи од 10, тогаш ние очекуваме да добие број помеѓу 0 и 9. Овде, што не е случај дека ќе добиете негативни броеви се вратија. JOSEPH: Значи негативното 5% 4 ќе биде негативен 1. Роб: Но, тоа е ретка дека сте МО-ИНГ негативни броеви да почне. Прескокнете го овој. JOSEPH: Да. Роб: Meh. OK. Значи едно последно нешто да се истакне за плови е тоа е опасно однесување, но лебди не се точно застапеност. Па ќе се вратам на бајти повторно, се сеќавам дека int е секогаш четири бајти и плови е секогаш четири бајти. Значи пример Лукас е прилично добар. Значи мислам на 1 поделено со 3. Па 0,3333333. Ако јас само 32 бита, како може Јас се сместат 0,33333 точно? И, можеби, за која било причина, ви велам, во ред, добро, да речеме дека ова особено 1011001, ајде да само да кажам дека треба да биде 0,333333. Па, имате само ограничен број на оние делови, така што е невозможно да се претставуваат секоја подвижна запирка вредност дадена само 32 бита. Па, тоа е невозможно да се претставува било подвижна запирка вредност дадена бесконечна - Па, со оглед било конечен број на битови. Значи прашањето тука е, добро, кога ние се користи да се печати со две децимални места, ние не правилно го добиете одговорот 0,10. Но под капакот на моторот, тоа е навистина се чуваат како е можно поблиску до 0,10 оние битови може да ги претставуваат. Е тоа на следниот слајд? Или не е тоа? JOSEPH: Да, тоа е тоа. Роб: Blegh, blegh. JOSEPH: Да, може да се само повлече забелешките се малку. Роб: јас сум само ќе да зумирате во на последниот на тоа. Ох, господе, тоа е [нечујни]. Па тој број. Тоа е она што ќе бидат испечатени ако трчаме таа програма. И ќе забележите дека не е навистина голема работа ако ние сме само се грижат за како 02:58 децимални места. Како што само првично печатени 0,10, и тоа е причината зошто сме го виделе ништо лошо. Но еднаш сме го започне да добива во точно, точниот број дека тоа е претставуваат, гледаме дека тоа не може да точно претставуваат 0,1. И дел од проблемот тука е како, сите во право, тоа е во ред, но, добро, Прво, што ако ние се обидовме да го направиме, Одговорот е еднаква еднаква на 0,1? Е дека ќе се врати вистински или лажни? И така тоа е тешко да се каже. Мислам дека тоа всушност би можеле да се вратат точно. Ќе го првиот - Не знам. Одговорот е штом еднаш ќе почнете занимаваат со подвижна запирка вредности, вие многу многу не треба да се користи еднаквост затоа што на оваа непрецизност. И за сите што знаете, тоа е стоти децимално место дека лебдат точка не беше во можност правилно да се справи. И така еднаквост само ќе успее дури и иако бројот - ако сте биле користење на точната бројка, бројот треба се токму истото. Тоа е во текот на како 50 пресметки со користење на овие пловечки точка вредности, грешката може да се изгради и горе и нагоре, и работи едноставно сфаќајте погрешно. JOSEPH: И таму биле навистина Познати примери на ова случување. Како НАСА инженери добиле овој погрешно, предизвикувајќи ракети да експлодира во воздухот, откако сте биле лансирани. И многу прашања како што. Па је. ЗВУЧНИК 6: Кога ќе се каже 0,3 ѓ, не го скрати останатите? Или не го заокружуваат нагоре или надолу? Роб: Ќе printf околу неа? JOSEPH: Мислам printf truncates. Роб: OK. Па ние слично може да оди во спротивна насока на тоа каде, во овој случај, најблиску тоа би можело да претставуваат 0,1 беше со овој број. Најблиску тоа би можело да биде во можност да претставува 0,2 во спротивна насока, ,199999996356 или нешто слично. Па ако отидовме во таа насока на работи, тогаш printf 0,3 ѓ ќе се врати 1,99 наместо 2,00. JOSEPH: И јас не сум целосно сигурни за тоа. Можеби ќе сакате да се напише еден мал, малку програма за само провери тоа. Роб: Иако, она што сме сигурни е дека ако сте се обиделе да го дадат дека до цел број, и леење на int ќе да предизвика таа да се скрати на децимална ако ќе се обидат да го дадат 1.9999999 до int, ќе добиете 1. И така обично треба да се користи круг функција во математика библиотека. Прашања? OK. JOSEPH: Значи да се пресели на условите и Булова изрази. Па сте виделе овие пред. И всушност, дозволете ми да сум сигурен дека моите компјутер е во право формат овде. Простор. Жал ми е, ние ќе треба да се занимаваат со малку со исклучување на рабовите. Но, да, вие момци го виделе ова пред во Скреч. Значи ова токму тука е израз кој се користи во условен изјава. Така одговори поголема од нула волја ви кажам точно или неточно. И овие се навистина важни, бидејќи што ни овозможи да се воведе логика во нашиот код. Така на пример, ова е програма напишано во Скреч дека го прашува корисникот за цел број и им кажува дали на број дека тие ви даде е позитивен или негативен број. И конверзија овде за да ја видите е прво печатење на изјавата, ми даде број. , А потоа можете да ги прашате за цел број. А потоа ја користите условен логика над тука за да се провери дали тој број е всушност поголема од нула или не. Значи тука имаме Булова израз внатрешноста на условна Ако изјава. Дали има било какви прашања? Дали постојат било какви прашања во врска со тоа? OK. Па таму е повеќе од само поголема од, се разбира. Можете да изгради Булова изрази користење на повеќето од видови на работи што можете би помислил на часот по математика. Па поголем од. Кој треба да биде помалку од. Жал. И растојанието. Роб: не дај Боже ќе го оставиме тоа. JOSEPH: Во ред. Па поголем од, помалку од, поголема од или еднаква на, помалку од или еднаква на. Ние ги користиме двојно изнесува за да се провери за еднаквост, бидејќи еден е еднакво на средства задача, нели? Да. А потоа ние исто така може да не е еднакво на користење извичник, еднакви. И ова извичник симбол може исто така да биде продолжен, така што ако сакате за да го превртите било кој вид на Булова изразување, можете да го направите тоа. Па ова ќе се оцени на точно само ако одговорот е помалку од или еднаков на нула. Било какви прашања за тоа? OK. Така што исто така може да се комбинираат овие изрази со користење на логички и и логички или. Значи ова е само симбол и, која треба да биде Shift, 7. И ова е симбол цевка, која е не е со мали букви Л Тоа е една дека е во право над Enter копчето. Па можете да користите две од овие да го симболизира Логичка и логичката или. Значи ова само ќе се вратат точно ако одговорот е еден, два, три или четири. И ова само ќе се врати точно ако одговорот е надвор од тоа на двете страни. Па тоа не е еден, два, три, или четири. И начинот на кој ќе се користи дека во изразот - Роб: Или нула или пет. JOSEPH: Нулта или пет. Жал. Да, да, да. OK. И овде сега, на ист начин да ќе го користи тој израз, помал израз страна на Ако условната изјава, исто така, ќе го користат ист начин од страна само да го стави во внатрешноста на заградите на ако изјава. Значи ова printf само ќе оган ако одговорот е еден, два, три или четири. Било какви прашања на комбинирање на изрази? Па таму е уште еден условен Конструирај ние го нарекуваме Ако / друг. Значи, во основа, ова сега значи, во ред, ако нешто што сакав да се провери не беше точно, тогаш оди на друг и вршат таа друга акција. Значи во конкретниов случај, го прашав на корисникот за цел број. Е цел број поголем од нула? Да? Добро, тогаш тие ја искористија позитивен број. Ако не, тогаш тоа мора да има е негативен или нула. Па што сте го одбрале негативен број или нула во овој случај. Да. Или нула. А потоа ние исто така имаме Ако / Друго, Ако и друго. Па ова ни овозможува да се изврши низа на работи само ако први пропадне. Значи во овој случај, сега правиме последните оној што го изберете нула. Значи, ако тие ни скинале позитивно, ниту негативен број, тогаш тие мора да собрал нула. Па тоа само оди надолу синџир вака. Така пример за тоа како Ако е различен од - АКО / Друго е различен од само низа од Иф. И ова е заеднички прашање кое луѓето прашуваат е, добро, ако добиете како 95 во CS50, што ова ќе Програмата ви кажам? ЗВУЧНИК 5: Вие доби А JOSEPH: Да. Имаш секој еден од оние право. Ти да дојдеш А, имаш Б, ти доби C и D, нели? Значи сите овие се оценува во ред. Така, додека 95 е поголем од 90, тоа е исто така, повеќе од 80, тоа е, исто така, поголема од 70, и тоа е и поголем од 60. Значи ли сите оние оценки. И претпоставувам што би само сакаат А На начин да се поправи тоа е да се замени оние со друг / Ако е. Значи во ова сценарио, гледа дека 95 е поголема од 90, а потоа го прави не се оцени остатокот на извештаи. Било какви прашања во врска со тоа? Па таму е уште еден условен вид на структура што ја имаме тука што ние јавете се прекинувачот изјава. Значи ова ви овозможува да се провери во основа што вредноста на голем број ќе се стави во прекинувачот изјава е. Значи во ова сценарио, ние сме префрлување на н, и ние велиме, ох, ако n е , а потоа печати таа изјава. А потоа се скрши, што значи излез од прекинувачот изјава. Ако тоа не беше, а потоа, добро, само на крајот ги проверите сите овие случаи. И така се проверува дали е еден или два или три, и тоа отпечатоци соодветно. И она што оваа стандардно клучни зборови овде средства е ако тие не влезат во кои било од оние, а потоа велат Невалиден. Па да речеме го прашувам за n и корисникот ми дава четири. Па, тоа се совпаѓа ниту еден од тие случаи, така што ќе се печати она што е во стандардно секција. Да, прашање? ЗВУЧНИК 5: Може да ви користи Буловата изрази наместо еден, два или три? JOSEPH: Значи, прашањето е можете да го користите Булова изрази наместо на еден, два и три? И во C, јас ти верувам не може да го направи тоа. Но и во други јазици, кои можеби ќе судрите на крајот на семестар како JavaScript, можеш. Па, вие ќе треба да се пресмета прв таа вредност, а потоа го користат во префрлате изјава. Да? Роб: Значи дел од корист на прекинувач извештаи е мислам на тоа, ако го направи ова како Ако / друго, па како ако n е еднаков на е еднаков на една или whatever. Друг / Ако n е еднаков еднакво на два, сеедно. Друг / Ако n е еднаков еднаква на три. Па начинот на кој на програмата ќе се кандидира тоа е секвенцијално ќе одат надолу таа листа и да се провери, е n еден? Не бе. Е n две? Не бе. Е n три? Да. Го направите тоа. Додека со прекинувач извештаи, тоа е во можност да ги собере да биде навистина брзо. И штом таа вели прекинувач, таа вели, во ред, n е два, јас сум веднаш ќе скокаат таму каде што Јас сум би требало да започне извршување. Јас не одам да се прво проверете, е n еден, е n две? Таа веднаш да почнете да правите она што би требало да се направи. И поради тоа, не може да земе Булова услови. Или на друго место ќе треба да направите секвенцијален, како, сите во право, е n поголема од нула? Друго е n поголема од 10 или whatever. JOSEPH: Во овој случај, ако се користи Ако / друго, ако е, тогаш исклучете би се кандидира околу три пати побрзо отколку Ако / друго, ако. Ние можеме да реализираме прекинувачот во таква на начин на кој ние не се скрши по секој од овие случаи. Значи во овој случај, јас сум поделба на броеви кои ние го избираме во еден и две не се голем број и три од голем број. Така што во овој случај, ако n е еден или два, тоа ќе го погоди случај и тогаш ќе падне преку, бидејќи нема пауза. И тоа ќе се заокружи тука. Значи, ако ние да изберете еден, тоа ќе го стори на printf и потоа пауза, така што никој од ова е погубен. И, се разбира, ако влезат во три или нешто друго, тогаш тоа ќе го прескокне тие и не одам таму, и тоа ќе се изврши наместо соодветните линија. Дали постојат било какви прашања во врска со тоа? Да? ЗВУЧНИК 4: Дали можете да добиете грешка, ако имаше пауза по случај една, туку тоа не имаш нешто за тоа да се направи? JOSEPH: Значи, прашањето е ќе добиете грешка, ако имате пауза по случај еден но нема ништо да се направи? А одговорот е не. Вие не всушност, ќе добиеш грешка. Да, мм hmm. Па како вид на малку промена тука, Одам да се стави printf тука. Whoops. Така што ова ќе печати ако Јас се стави еден во како влез? Да. Тоа ќе ви каже дека тоа не се голем број два пати, нели? Бидејќи тоа ќе го погоди дека првиот случај, тоа не ќе се скрши, и тоа ќе падне до вториот случај. Било какви прашања во врска со тоа? Роб: Дали имате едно друго прашање? JOSEPH: Добро, се излади. Во ред е. Па таму е нешто друго што ние го нарекуваме троичен оператор кој е во основа на Алтернативен синтакса да се прави Ако и тогаш на друго место. И тоа ви овозможува да го прават тоа сите на една линија. Значи во оваа конкретна програма, Прашувам корисникот за n. И ако n е поголем од 100, велам ги тие ја искористија голем број. Друг да им каже тие зедов малиот број. За да можеме да го користите овој навистина долго синтакса, стринг, С, а потоа проверете ако n е поголема од 100 и доделите тоа соодветно. Но, ние може да направи овој многу повеќе концизен со користење на оваа тројна оператор синтакса која вклучува прашање марка и дебелото црево. Значи, прашањето марка е суштина поставување на прашање, нели? Роб: Можеби зумирате на тоа. JOSEPH: Да. Добра поента. Значи ова е троичен оператор. Јас прв пат го поставуваме прашањето, е n поголема од 100? Ако е така, тогаш јас се изврши првиот дел пред дебелото црево. Ако не е, тогаш јас се изврши Вториот дел по дебелото црево. Па ако n е поголема од 100, потоа ја зема висока и става дека во низа е. Ако n е помалку од 100, што зема низок а потоа го става тоа во низа е. Така што ќе кондензира овој голем парче долу во само дека една линија. ЗВУЧНИК 5: Дали е тоа популарна? JOSEPH: Да, тоа е доста популарни, за работи каде во суштина дека сакате да го направи една задача врз основа на некој вид на состојба. И во овој случај, ние се обидувавме за да доделите вредност на низа s. Тоа не е толку - Претпоставувам дека навистина не сакале во други случаи. Но тоа е особено корисно за оваа задача. Роб: Тоа е прилично заедничка шема каде што треба некои променлива која ви се случува да се каже, ако нешто, во собата оваа променлива една вредност; друг, во собата оваа променлива друга вредност. А тоа е сценарио каде се користи троичен. JOSEPH: И вие ќе бидете заштеда многу линии, нели? И тоа само прави вашиот код веројатно малку повеќе да се чита. Да, прашање? ЗВУЧНИК 6: За троичен, може да одат, Стринг и еднаквите с, прашалник? А потоа би можеле да имаат, да речеме, пет различни опции. И во зависност од она што бројот на n беше, би ја одбрале еден од оние? JOSEPH: Значи, прашањето е, дали има вид на синтакса каде што можете да направите низа Кликнете ОК еднаква на n, а потоа имаат повеќе од две опции по тоа прашање марка? И едноставен одговор е не, таму не е навистина добар начин да го направите тоа, освен ако дека сакате да го гнездо повеќе троичен операторите во еден од друг. Можете да го направите како N поголема од 100, прашалник, а потоа уште тројна оператор, n е поголема од 50, прашалник и гнездо на тој начин. Но, во тоа сценарио, кодот е добивање на вид на прочите и неуредна, и тоа би можело да биде подобро да се оди само до АКО / Друго изјава во тој момент. Роб: И, исто така, како од страна на белешка, PHP погрешно го спроведува троичен оператор како што вгнезден ternaries дури и не работат како што треба. JOSEPH: Да. Па тоа добива малку збунувачки, особено кога одите на различни јазици. Роб: Тоа е збунувачки доволно јазици се во ред за тоа. JOSEPH: Значи всушност, само да се разјаснат, Дали сите знаете што % S не овде? Било какви прашања во врска со тоа? Претпоставувам само за камерата,% s во основа ни овозможува да се стави случаеви за низа. А потоа на крајот, ние се каже дека променлива сакаме да се стави во овој место носителот е ОК. Така што во основа ги зема на и тоа го става во тука. И тогаш тоа ќе испечатите, сте го одбрале висок или сте го одбрале мал број. OK. Па јамки да ви овозможи да ги вршат работите во кружни движења, нели? Може да се соочуваат со овој во Нула во форма на Forever петелки или Повторете се додека или Повторете одредена број на пати. Значи, зошто е ова добро за нас? Па, во C, да речеме имаме овој песна спроведува во Скреч дека пее, ова е песна дека никогаш не завршува. Тоа само продолжува и натаму и вечно и засекогаш. Па, навистина не може да се направи програма дека има бесконечен број на printf изјави во тоа, нели? Така што во овој особено сценарио, еден начин дека можете да направите оваа работа и да се направи тоа се печати засекогаш е да се наместо да користите додека јамка. Па додека јамка ќе се изврши што е во телото на две загради дека припаѓа на тоа врз основа на што состојбата е. Така што во овој конкретен пример порано, ако ние сакаме да печати ја оваа засекогаш, што може да правиме? Па, сигурна сум, нели? Па овој вид на комбинација на идејата на некои Булова израз заедно со јамка. И ние дознавме за Булова изрази порано. Значи секогаш кога состојбата во внатрешноста на дека додека останува вистина, овој циклус ќе се изврши и на и на. И во овој случај, ако ние само го снабдување со точно, ова предизвикува бесконечен јамка која отпечатоци на песната и натаму и како што саканиот пред без има програма со која има бесконечен број на printf извештаи, што е не е можно. Па повеќе убедливо, иако, можете да го користите ова со променлив и состојба. Па да речеме ние сакаме да се повтори фраза, целосно смахнат, 10 пати. Така што можете да направите со време јамка е мора прво да се иницијализира со контра променлива надвор од Додека јамка до 10. А потоа во основа, секој пат кога ќе одам преку Додека телефонска линија, можете да испечатите изјава, а потоа можете да се намали на контра променлива до на крајот, во одреден момент, откако ќе се одземе јас доволно пати, 1 од I доволно пати - и само да се разјаснат, јас минус минус значи дека е еднаква јас минус 1. Што во основа ќе донесе јас се спушти до точка каде што некогаш ќе се погоди нула, ова состојба не е вистина и па тоа излегува надвор од јамка. Така целосно смахнат отпечатоци само 10 пати. Какви прашања во врска додека јамка? OK. Значи постои начин можеме да го направиме она што ние едноставно направи во повеќе концизен начин со она што ние го нарекуваме За јамка. Па За циклус се состои од иницијализација, состојба, и ажурирање, исто како што имаше пред во овој Додека јамка. Па ајде да ги разгледаме. Во овој Додека јамка, имавме иницијализација, тогаш имавме услов да ја провери. А потоа имавме ажурирање чекор на врвот. Со За јамка, ова во основа се овие три работи и кондензира тоа долу во една линија. Така првото нешто што го прави тоа во За телефонска линија е иницијализација. А потоа ќе се направи точка-запирка, а потоа да го направите на состојбата, која е јас поголема од нула оди таму, а потоа ажурирање чекор. Значи ова добива изведена на самиот крај на јамка телото. Значи овие две програми се суштина еквивалент. Било какви прашања? Значи она што е една разлика меѓу овие две? Секој може да го истакнам? Тоа може да биде малку суптилни. Тоа е само многу мала разлика. Да? ЗВУЧНИК 5: Вие не ќе можат да ги користат јас променлива надвор од За јамка [Нечујни]? JOSEPH: Токму така. Па ова е нешто ние ќе дојдеме до подоцна наречен променлива опсегот. Но во суштина, ова int i животи надвор од оваа Додека јамка. Па еднаш ова додека јамка е направено извршување, ќе бидете во можност да го користите подоцна на во програмата. Додека со тоа за јамка, ова int i е scoped внатрешноста на оваа За јамка. И поради тоа што е внатре на овој дел на За јамка, која започнува на голема заграда и завршува со кадрава голема заграда таму. Нешто што е прогласена во внатрешноста на тука не може да се користи надвор. Значи, ако јас се обидувам да го користам надвор, тоа ќе кажи ми, непријавени симбол. А во суштина, јас не би да биде во можност да го користам. Роб: И добро, пред 10 години, во буквално сите случаи, големите загради се она што се користи за да се утврди обемот на променливата. Па таму, int i еднакво на 10 е прогласена во внатрешноста на оваа во собата на тркалезните загради. И така тогаш колку што ќе се обидат да се користи јас пред овој кадрава голема заграда, тоа е во ред. Можете да видите кога ќе напишете направи, можете види цртичка, цртичка, СПБ, еднаква, C99. Па тоа е понова верзија на C, кој GCC има имплементирано што исто така дава оваа кратенка. Значи ова се користи за да не се дозволи во В И можете да видите зошто, бидејќи ова int I е надвор од оваа кадрава голема заграда, но тоа е уште се смета да биде во опсегот на овие големи загради. Но, ова е многу погодно работа, и така тоа е добра екстензија. JOSEPH: Било какви прашања? OK. Значи она што е покорисно е дека понекогаш сакаш вид на динамика во вашата телефонска линија, нели? Вие не сакате само да мора да се печати целосно смахнат цело време, можете сакате да одбројува од 10 или така нешто. И така можете да го користите контра променлива внатре во тоа јамка, како и. И во овој случај, оваа програма е само одбројува од 10 сите на патот надолу. И она што не го не ги испечатите? Тоа не печати нула, право, затоа што кога - Да, тоа, исто така, не печати 11. Па тоа не печати нула, затоа што кога Јас е нула, се сеќавам, тоа го оценува состојбата пред да оди на да се изврши јамка телото. И кога ќе е нула, ова е неточно, па тоа не испечатите одбројува нула, тоа само отпечатоци од броење долу 10 сите на патот до 1. Ако ние всушност сакаа тоа да се печати нула, тогаш ние ќе се стави знак за еднаквост По ова поголема од знак. OK. Значи еден од начините да се направи влез валидација, која е кога ќе побара од корисникот да се направи нешто, вие сакате да бидете сигурни дека тие следат вашите упатства, е да се користи додека јамка, нели? Значи во конкретниов случај, Прашувам за позитивен број, а потоа сум чекање за влез. А потоа ги проверив Додека влез е помала од нула, да ги задржи барајќи од нив. Толку колку што тие ми даде голем број тоа не е позитивно, да ги задржи прашува, задржи прашува, да ги задржи прашувам. Но она што е вид на чудно за ова? Или она што не изгледа оптимално за оваа структура, токму тука? Некој? Да? ЗВУЧНИК 6: Ти си се повторува настава двапати. JOSEPH: Право. Значи имаме две printf изјави тука, нели? Па таму е начинот на кој ние би можеле да добијат тоа само одредување на оној кој ќе го направи нашата кодот полесно да се чита и малку повеќе чист. И тогаш ние не би требало да се Влегувај двапати, како и. И еден начин можете да го направите ова е со помош на не-Додека јамка. И на Do-Додека јамка во основа е поинаква форма на време јамка каде она што е во рамките на тркалезните загради добива извршува барем еднаш. Значи тука, изјавувам, int влез, надвор во прв план. А потоа јас само да кажам, ова инструкции додека влез е помала од нула. Така хитови направи првата. Таа секогаш ќе се изврши ова најмалку еднаш, така што секогаш ќе побара од корисникот за влез на барем еднаш. И тогаш тоа го оценува дека влез, и тоа оди во круг. Да, прашање? ЗВУЧНИК 6: Дали постои начин да го направи тоа [Нечујни] видови, како ако се каже, GetString, а некој [нечујни] има ли начин да се [нечујни] JOSEPH: Значи, прашањето е, дали има начин да го направите влез валидација ако корисникот не се стави во право тип на променлива? Значи, ако ние ја бараме int и тие ни даде низа наместо тоа. И во функции кои ги спроведуваме за вас, GetInt, GetString во сите тие функции, тие, всушност, веќе направи тој вид на основен тип влез валидација под хауба. Значи, ако сте со користење на функции кои сме даде тебе, ти навистина не мора да. Но, ако сакате да се погледне повеќе во тоа како всушност можете да го направите тоа, можете да барате под хаубата на датотеката I/O-- не поднесе, стандард I / O функции како читање од стандарден влез и стандарден излез. И можете да добиете подобра смисла за тоа како можете да го направите тоа. Роб: Едно прашање, сепак, е специјално со примерот што рече, да очекуваме низа и јас внесете Инт. Како вие би ја каже разликата меѓу намерно сакајќи низа 123 наспроти сакаат ИНТ 123? Па стринг, тоа е доста нема валидација, тоа е само она што тие влезе ќе интерпретираат како стринг. Int е полесно, бидејќи без разлика на влез ве однесе од корисникот, вие сте секогаш имајќи стринг. И така што низа тогаш може да провери, се сите овие всушност нумерички цифри? JOSEPH: OK. Било какви прашања во врска со Do-Додека јамка? Роб: О, и ова е, исто така, - да се вратам на обемот, малку заеднички грешка се обидува да го користите некои локални променлива од рамките на овој Do-Додека јамка внатрешноста на оваа состојба. А всушност, ако ние се отрујам ова и рече, int влез еднаква на GetInt, а потоа компајлерот ќе се развикам нас, бидејќи влез не постои надвор од опсегот на овие големи загради. JOSEPH: И тоа е причината зошто ние треба оваа постава тука. OK. Така што исто така може да се пробие на јамка на почетокот ако сакате да. Па ова е еден поинаков начин на спроведување она што ние едноставно се спроведува. И наместо користење на состојба во рамките на загради, ние сме со користење на Ако изјава во внатрешноста на телото на Do-Додека јамка. И во основа, кога влезот е конечно поголема од нула, ние ќе се пробие на јамка. И така ние ќе одат сите на патот надолу тука. И можете да видите дека тоа ќе веројатно се претпочита во овој сценарио, бидејќи тоа е малку малку почиста и малку малку полесно за читање. Со оглед на тоа, може да се вид имаат дополнителни линии во неа. Тоа е само малку погрда, Претпоставувам, во некоја смисла. Да, прашање? ЗВУЧНИК 4: Ќе се скрши само што се сте надвор од еден сет на загради? JOSEPH: Право. Значи, прашањето е ќе се скрши само да ви од еден циклус? А одговорот е да. Значи, ако имате вгнездени јамки, за На пример, ако имам за int i изнесува 0 до 10, а потоа за int j еднаква 0 до 10, ако се пробие на внатрешниот јамка, јас сепак ќе одам на надворешниот јамка. Па тоа ќе продолжиме вршење на операции на надвор. Било какви прашања во врска со тоа? Да? ЗВУЧНИК 5: Но, се скрши само функции за големи загради, а не за други изјави? [Нечујни] JOSEPH: Значи, прашањето е ќе се скрши само функција за петелки што е спротивно на други изјави од типот ако? И да, тоа е случај, бидејќи ти си кршење надвор од јамка, десно, во некоја смисла. Роб: Во огромно мнозинство на случаи, тоа е ова е вид на Ако нешто, тогаш се скрши. Значи, вие не мора да се разбие да се применуваат на на Ако тоа е завиткување околу неа. И, исто така, ова не е многу на јамка, но запомнете дека прекинувачи се исто така избувнал од страна паузи. Видовме паузи се користат со прекинувачи порано. JOSEPH: И ти исто така може да ги користат во Додека петелките и За петелки. Било какви прашања? OK. Значи следниот up е функции. Така што може да се користи еден од овие BYOB блокови во вашиот одбројување. И ова всушност им овозможува на можете да дефинирате група на инструкции треба да се следи. И она што мислам со тоа е ајде да размислиме назад кон математика, десно, алгебра. Имате она што ние го нарекуваме функција на x, некои променлива, и да речеме ова функција е f на x е еднаква на x плус 5. Така што може да замислите ѓ на x како овој црн кутија, која трае 15 и потоа произведува 20. Така поопшто, функцијата е нешто што е потребно некои влезови и потоа произведува некои резултати. И зошто се функции добро? Тие се добри за голем број на причини. Па не некој сакаат да ги преземат прободе во она што организацијата значи? Во однос на тоа зошто функции се корисни? Да? ЗВУЧНИК 4: Тоа го прави вашиот кодот повеќе читлив. JOSEPH: Право. Значи една од работите е тоа го прави вашиот код се чита, нели? Наместо како int x е еднаква на x пати х пати х, можам да имам коцка на x, што е повеќе може да се чита и повеќе разбирлив за читателот. Организација е, исто така, во однос на расцепувањето на вашиот код во податлив делови, така што наместо да се обидува да спроведување сето ова во еден долг секција Во главната, може да се вид да го подели во како, Добро, ајде да се напише функција да коцка нешто, ајде да се напише функционираат на плоштад нешто. На тој начин можете да го подели на мали, малку делови кои може да се справи што е спротивно на се обидува да се справи со голем проблем на сите одеднаш. Роб: Или дури и мал, малку делови кои вие и партнерот може да се справи. JOSEPH: Да. Роб: Така, наместо на двете се обидуваш да имплант еден функционира во исто време. JOSEPH: Поедноставување. Секој сака да земе се погоди? Да? ЗВУЧНИК 5: Повеќе повторување. JOSEPH: Право. Значи едно нешто што можете да направите со поедноставување е дека тоа е вид на на на истото рамниште како ре-употребливост е дека еднаш јас пишувам коцка функција, можам да само го користите дека одново и одново и одново повторно во мојата програма, наместо на пишување x пати х пати х одново и одново и одново. И поедноставување тука, исто така, само значи тоа го прави вашиот код вид на полесно да се debug штом ќе се подели ова горе во функции. Затоа што тогаш ќе може да се локализираат каде вашите проблеми вид на се. Било какви прашања? Значи уште една идеја е апстракција, нели? Оваа црна кутија. Како не знаеш што GetInt не да добијат влез од корисникот? Ние сме навистина не ви кажав, нели? Сите ние сме ви кажале е GetInt не токму она што го вели тоа го прави. Па дури и ако ние не ви кажам како тоа функционира, ти сеуште знаат. Значи во конкретниов случај, тоа е на четворни функција која го прави различни нешта за влез за производство на излез. И можете да ја зголемат бројот со множење него од страна на четири. Или можете да она што ние го нарекуваме малку го префрли од страна на две. И ние ќе ги покрие овој малку подоцна. И нема потреба да се знае како овој функција всушност функционира како долго како што работи како што е наведено. Значи под хауба, би можел да биде како, се врати влез пати осум поделено со две. И вие не би знаеле, нели? Сите што треба да знаете е тоа го прави она што го кажува. Значи тоа е корисна работа за апстракција. И уште нешто е вид на оваа идеја на локализирање на вашиот код на еден особено секција. Значи, ако имате проблем, не го стори мора да одат сите над вашиот код се обидува за да го надминете каде е проблемот. Значи во овој случај, јас се спроведува коцка погрешно. Мислев коцка беше множење од страна на три. Значи во овој случај, ова е една програма дека само го множење со три насекаде. И таму е друга програма која има констатирано коцка надвор во функција. Па сега ако сакам да се поправи мојата грешка тука, морам да се поправи секоја линија на код во оваа програма. Додека на друга страна, ако јас го користам функција, јас само треба да се промени она што не беше во ред на едно место. Така во компјутерската наука, ние јавете влезови и излези. Влезови се нарекуваат параметри или аргументи, и излези се нарекуваат се вратат вредностите. И ќе видиме колку овој ни помага вид на дефинира функција во вториот. Значи ова е дефиницијата на функцијата за местење Рубикова коцка. Така што е потребно за влез, а потоа го враќа тој број пати се три пати. Па ајде да се скрши оваа надолу. Па ние имаме функцијата header, која основа се состои од три работи. Значи имаме параметри, кои се, како што реков порано, влезови во оваа функција. А потоа ние им даде на функцијата име. Во овој случај, се вика коцка. А потоа ние се определи што типот на вратената вредност е. Така што во овој случај, мојот коцка функција го во цел број и, исто така, се враќа цел број. Значи, ако јас се помине во два, два е цел број, го враќа осум до мене, што е цел број. Па се врати видот име параметри. Прашања во врска со тоа? И тогаш вратената вредност е всушност наведени на крајот, велејќи враќање , а потоа враќање она што содржи вратената вредност. Значи во овој случај, ако ние го стави сите заедно, функција го во параметри, се вика нешто, а го враќа нешто што е од типот дека ние велат дека тоа требаше да биде. Било какви прашања? Така како ние да се користи некоја функција? Па, ние се напише функција и потоа ние го користиме во нашата програма, нели? Па јас го нарече коцка, и тогаш можам да користам коцка. Но она што е важно да се напомене е дека цел прашања. Ако имам коцка подолу главната, тоа е случува да се кандидира во коцка. И во овој момент, нема ништо наречен коцка во програмата, а тоа е само ќе биде како, имам никаква идеја што коцката е. Па затоа ќе ти кажам, имплицитни декларација на функција. Тоа е грешка која се појавува. И така во овој случај, коцката е подолу Главната, па тоа не се случува да знае за тоа. ЗВУЧНИК 5: Значи главната обично дефинирани последната функција? JOSEPH: Значи, прашањето е, е главната обично последната нешто што би се дефинира? И не. Тоа е затоа што ние обично се допаѓа главните да се биде на врвот, нели? Затоа што тоа е првото нешто што сакате програмер отворање на програма за да ја видите. И така како ние да се реши ова прашање на што сакате главна за да се биде на врвот, но функции што го сакаме, ние ги сакате да биде под главната сепак да биде во можност да го користите ги внатрешноста на главниот? Па, ние ги користиме она што ние го нарекуваме функција прототип. Па што функција прототип суштина е е прв пат зема она што потпис или функцијата header на она што сакаме да се имплементира надолу тука, и ние го стави на на врвот на програмата. Значи во овој случај, можеме да речеме дека, добро, подоцна во нашата програма, ние ќе да се направи ветување за спроведување на оваа функција наречена int коцка, која ги зема цел број влез. Па сега, бидејќи тоа е над главната, Главната, тоа се случува да се каже, добро де, подоцна во програмата, која ќе биде таму за да можам да се однесуваат кон него, па ќе се само нека одат преку сега за сега. А потоа на дното, ние спроведување коцка. А потоа главната само ќе кажам, добро, тоа ќе го решите на врската овие два симболи заедно. И ние ќе ги покрие она што значи подоцна. И така тоа ќе знаеш дека ова е коцка функција која треба да се користи. Роб: На [нечујни] за кои сакаат главните на дното или врвот, сум видел и двете. Постојат работи кои само се допаѓа да се стави главен на дното. Но еднаш проект добива особено голем, обично главната е во поднесе сите свои. И во тој момент, како int коцка линија би - внатрешноста на stdio.h еден куп на линии исто како што int коцка int влез линија. И така тие прототипови работи што можете имаат тенденција да се стави во насловот датотеки, во која точка, тоа не е важно. Па, тоа не е важно. Оние секогаш одат на врвот. И ако главните не е датотека сите свои, вие не мора да се грижите за ставање индивидуална функција прототипи во датотеката. JOSEPH: И ние ќе дојдеме до тоа малку малку подоцна, кога Роб ќе почне да зборува за составување. И така таму е исто така разликата помеѓу параметар и аргумент. И параметар е само она што ние го нарекуваме овие влезови кога ние се дефинира функција. И ние ја нарекуваме аргумент кога ние всушност ќе поминат во функција. Значи во овој случај, тоа е параметар, како што веќе рековме. И кога ние всушност го користите таму, коцка на x, тогаш X сам по себе е она што ние го нарекуваме аргумент на функцијата коцка. Роб: Значи аргументи параметар се - постои оваа разлика, многу меша наизменично. Во овој момент, за мене, тоа е како еден од оние зборови кои кога ќе го видите во диви, не можам да им помогне, но веднаш прашањето дали тие го користат тоа во правилна насока, бидејќи Разликата е суптилна доволно дека само секој се стреми - Јас скоро секогаш велат аргумент без оглед на она што сакам да кажам. JOSEPH: И функции се исто така корисни за она што ние го нарекуваме несакани ефекти. Така функција може да се земе без влезови, и тоа исто така може да произведе нема излези. Значи во конкретниов случај, јас сум дефинирање на потпрограм дека нема се врати вредност. А со цел да се каже дека, ние ги користиме она што ние го нарекуваме празнина овде. И така пропратен ефект на оваа функција е дека тоа само отпечатоци работи до страницата. Тоа всушност не ги преземат сите влезови, и тоа не всушност произведе било излези. Но, ова би можело да биде корисно во смисла ако сакате да, на пример, дебагирање нешто во вашата програма, ако сакате да се напише малку потпрограм дека отпечатоци од, да речеме, содржината меморија или нешто слично. И така овие несакани ефекти се понекогаш корисни надвор од контекстот само сакале влезови и излези. Било какви прашања? И да се стави крај на овој сегмент, што значи оваа програма се направи? Јас ќе ви даде момци неколку секунди за да се чита преку неа. На многу основни ниво, она што сакате да го го кажам е дека тоа свопови x и y, нели? Па, како и многумина од вас всушност мислам ова ќе разменуваат x и y? Кренете рака. Никој. OK. Кој мисли дека тоа ќе не се разменуваат x и y? И збирот на тоа е не на целата соба. Па некои луѓе не се сигурни. OK. Тоа е разумен. Па ајде да одиме преку она што се случува кога вие всушност се јавите функции прв во со цел да се одговори на ова прашање. Значи тоа е она што меморија вид на изгледа. Ова е вид на како поедноставен модел на каква меморија како изгледа кога ќе ја стартувате програмата. Значи има нешто што се нарекува магацинот долу тука и нешто што се нарекува грамада. И овие растат кон средината на меморија. Така што во овој конкретен случај, кога ќе се јавите на функција, тоа добива стави на магацинот. А потоа она што е содржано во таа функција останува во она што ние го нарекуваме дека магацинот рамка функцијата. И така да се добие убав визуелизација на ова, let's - на пример, имавме програма главниот порано. И во внатрешноста на главниот, што се нарекува коцка. Значи главната прв ќе оди на магацинот рамка, затоа што тоа е првата функција што се вика. И тогаш кога коцка е наречен внатрешноста на Главната, таа добива стави на врвот на главната внатрешноста на меморија. Па што ќе забележите е дека коцката има свој параметри и сопствени локалното население. Значи, кога всушност ќе помине нешто да функција, параметри дека добива се копии на она што беше донесен од главната. И да се вид на се објасни ова, нека прошетка низ програмата. Па ние имаме магацинот, тоа е само оџакот дел. И она што го правиме е ние прво се иницијализира x и y да еден и два. Па ние имаме овие мали кутии. Тие се седи во магацинот главните е рамка на магацинот. Тие содржат еден и два. Сега ние го нарекуваме, swap. Што се случува е дека ние помине x и y во swap, и swap создава свој копии на оние варијабли да се користи во внатрешноста на своите магацинот рамка. Па сега таму, имаме што ја содржи вредноста која x има и b, која содржи вредност дека y имал. Значи еден, два. И ќе забележите дека ова е посебен од x и y во внатрешноста на главниот. Па ние сега се создаде привремена променлива да содржи. Ние постави еднаква на б, така што промени од еден до два. А потоа ние постави б еднакви да температура, која е една. А потоа ние сега излезете надвор на оваа функција. Кога ќе излезете надвор од функција, магацинот рамка добива појави надвор од магацинот. Ние ја нарекуваме им помогнам. Те турнам магацинот рамка врз оџакот и ќе pop ако надвор од магацинот. И така она што се случува е она што беше во таа магацинот рамка вид на само оди во пламен. И така што повеќе не постои. Но, она што ќе забележиме? Ние всушност никогаш не се промени вредности на x и y, право? Па оние остана локално до главната. И со полагање работи во трампа, ние всушност никогаш не се менува тие вредности. И она што ние го нарекуваме овој? Ние го нарекуваме овој праќање на вредност. Па во C, кога ќе помине работи во функции, таа ги поминува од вредност и прави копија на нив за функцијата за употреба. И ние ќе учат за нешто што се нарекува праќање преку референца подоцна, но тоа е начин може да се реши овој проблем. Но, ние не ќе се грижи за дека подоцна. Роб: И всушност, тој термин, минувајќи со упатување, па C дури и не мора поминува референцирање. Ц исклучиво го поминува вредност. Без разлика на она што го правите, вие сте секогаш поминува копија од нешто. Тоа е само дека, како што вид на споменатите дека пред со покажувачи и дека стрингот е навистина само четири бајти покажува кон некаде во меморијата. Па, ако имам овој стринг и тоа е ми кажуваше дека е местото каде што низа - Па, ако имам покажувач на овој место во меморијата, тогаш јас може да донесе копија од таа покажувачот до некоја функција, и таа функција се уште не знае каде во меморија што е. Па и двете од овие совети се укажува на истото место во меморијата, и тоа е како ние ќе бидете во можност да ја менувате нештата надвор од тековната магацинот рамка. JOSEPH: Дали сакате да го направите составувањето? Роб: Не, тоа е 05:30. JOSEPH: OK. Тоа е 05:30. OK. Па ние ќе ги покрие составувањето Претпоставувам дека во следниот дел, или вашиот дел лидер ќе во тој момент. И - Роб: Било какви прашања? JOSEPH: Било какви прашања? Да? ЗВУЧНИК 5: Користење на жици од CS50, било функции кои сакаме да ги користите за оние, што ќе биде како C функции. CS50 не помина во и направени никакви дополнителни. Роб: Точни. Било кој од Ц како [нечујни], можете ќе ги користат овие на нашиот жици. JOSEPH: И едно последно нешто што сакате да го се спомене е дека имаме стил водич за оваа класа. Роб: О, да. JOSEPH: Значи, ако си дојден од програмирање позадина пред тоа, може да има одредени конвенции кога сте пишување код како ставање загради во иста линија или одредени начини на вовлекување или именување на вашите променливи. Во оваа класа, ние сакаме да го следат специфичен стил водич само затоа што, Па, ако излезеш и да работат во индустријата, сте ќе треба да се очекува да го следат стилот водич на Компанијата на која и да одите да. Како на пример, Фејсбук мислам има особено вид на именување конвенција. И има разлики меѓу камила обвивка променливи и како одвојувајќи ги со подвлечено. И, исто така, мислам дека е најважно, како на пример, вовлекување, нели? Ние го правиме големи загради започне каде состојбата е, и тие се на следната линија. И ние исто така се стави големи загради во дури и ако тоа е само една линија. И многу пати, постојат начини да се направи тоа каде што можете да ги напуштат овие загради исклучување ако тоа е само една линија под Доколку изјава. Но, во оваа класа, ние сакаме да го следат специфичен стил водич само за да се добие користи за да се тој вид на работа. Роб: Да, и Стил 50 ќе спроведување на овој стил водич, и ние сме ќе ги користи Стил 50 да одделение вашиот код. Па тоа го прави работите полесно за нас и се надевам дека не треба да се направат работите што многу полошо за вас со оглед на стандардизирани стил не треба да биде таа нереално. JOSEPH: И, конечно, да се најде стил Водич, одете на manual.cs50.net/style. И је. ЗВУЧНИК 4: Дали ќе се спроведе било знаци во еден ред? Роб: Да. JOSEPH: За жал, момци. Роб: Тоа е како еден од единствените. Во овој момент, јас сум во ред со 120. Јас сум ОК со велејќи 120 знаци во еден ред. Јас разбирам дека се некои граница. Мислам дека 80 е толку мал, но ние сме го спроведува. JOSEPH: Лично, мислам дека со Ц, 80 карактери е повеќе OK. Откако ќе почнете да добивате на други јазици како JavaScript и PHP, не така е разумно да се ограничи само до 80 карактери. OK. Па, тоа беше супер секција. Сака ли некој бонбони? ЗВУЧНИК 4: Да.