ROB: Добре. Добре дошли в първия раздел. Аз съм Роб. JOSEPH: Аз съм Йосиф. ROB: Така че ние ще се потопите право инча Първото нещо, което да се говори за е уреда. Така че се надяваме, че повечето от вас са го изтеглили вече. Но можете да видите инструкциите в cs50.net/appliance. О, Боже, сега съм стеснителен. Аз все още го чуя. JOSEPH: Уау, това звучи като това е дезориентиран. ROB: Така че някои хора са били с проблеми с него, така че не чакайте, докато последната минута на проблема настроен на опитате и решаване на уреда и констатацията, че това не е работа. JOSEPH: И ако нещо не работи и имате нужда от помощ, можете да отидете на cs50.net/discussion къде сме има форум, където можете да публикувате въпросите си. И ние ще стигнем до тях в крайна сметка. ROB: Добре. Така че това е, което Appliance изглежда. Отново, това е просто една напълно отделна операционната система в каквото и операционна система ви се изпълняват на вашия лаптоп. И основните неща, които ще се използва са Gedit. Така че се надяваме, че това вече се се превърне в познатия сайт. Терминалът. И вие можете да стартирате Chrome в рамките на уреда. Налице са няколко души които са докладвали интернет не работи в уреда. И някои от тях са просто предположих че не е трябвало да бъде интернет в уреда. Но да, има се предполага, да бъде интернет. Аз ще го кажа в момента, но това не е така наистина означава нищо. Ако в интернет не работи, това е, което сте склонни да се наложи да тичам да го оправя. Ако имате интернет въпроси, не се я спомняте, или просто да го оставите на Обсъждане и ние ще кажем, че тече. Но в интернет трябва да се работи. Така че единственото друго нещо - да, нищо друго е наистина от значение. Но аз просто исках да подчертая, че - виж в този долния десен ъгъл. Така че всеки един от вашите устройства, следва да има IP адрес. И по-късно през семестъра, това IP адрес ще стане по-значима, когато вие работите в уеб р-сет, защото вие ще бъдете в състояние за достъп до уебсайт, върху което работите от вашия местно Chrome с помощта на този IP адрес. Но това, което ми харесва да се използва IP адреса за - и не е нужно да се направи това, аз Просто искам да го подчертая, - е тук. Така че това е един терминален прозорец на моя Mac, това не е в Appliance изобщо. И вие можете да погледнете какво тази команда прави. Но аз отивам да SSH директно да ми Appliance. Аз не знам какво е ПР. JOSEPH: 168 - 168.224.1.0. ROB: Така че след като свърша с това, влезте инча Сега, по същество, е идентичен с терминален прозорец в рамките на моята техника. Така че аз почти никога не работи от самата апарат. Просто винаги съм го изпълняват във фонов режим минимизиран и SSHed в нея. Проблемът с това е, че не се случва да бъде в състояние да използват Gedit лесно пряко от това. Но ако искате да бъдете истински готино хакер, тогава трябва да се използва, най- командния ред текстов редактор, така или иначе. Така Vim и Emacs и Nano, всички от тях различни алтернативи. Nano има тенденция да бъде най-лесният. И аз мисля, че не разполага с оцветяване на синтаксиса. О, не, това напълно прави. Така че можете да използвате Nano, защото че едно е доста лесно. Виждаш ли всички тези команди в дъното. Този малък символ морков. Ако не сте го виждали преди, ще вероятно го виждам много сега. Това обикновено означава контрол моркова, като отдолу ляво на вашата клавиатура контрол характер. Така че тук ми казва тук - О, това не е отрязан, ако аз я увеличите инча Така Control, X е как Отивам, за да излезете. И тя казва, че може да удари Y за Да, за спестяване, N за номер Така че това е Nano. Vim и Emacs са склонни да бъдат малко по- сложен и поразителен. Но можете да свикнете с него, и след това ще го обичам. Така че това е така. JOSEPH: Няма нужда да го правиш. ROB: Да. Вие сте свободни да използвате за Gedit на остатък от семестъра. Така че всякакви въпроси, свързани с уреди? Или имате ли някакви идеи за това, какво друго Необходимо е да се говори за около уреда? Да. SPEAKER 1: Когато SSHed във вашия нещо, беше Crimson парола? ROB: Да. Паролата за почти всичко в уреда ще да бъде Crimson. SPEAKER 2: Инсталирайте като истински IDE върху уреда, ще работи? ROB: Предполагам, че Eclipse не разполага със Fedora версия, като в този случай, да, можете да направите това. Това вероятно не е наистина си заслужава. SPEAKER 2: OK. Така че това е може би по-лесно, ако исках да използвате Eclipse, просто използвайте туземеца и след което да качите до - ROB: О, това също е вероятно по-лесно. Но можете да го работи в рамките на уреда. JOSEPH: И за камерата, въпросът е, може ли да се инсталира друг IDE вътрешността на уреда? ROB: Eclipse бъдеш Например на един IDE. Всякакви други въпроси Appliance? Добре. Така че ние сега ще преминем към командния ред интерфейс, свързани с неща, така CLI. И отново, аз съм просто ще работят в тук, защото това е идентичен работи в терминален прозорец в рамките на уреда. Как гледа този шрифт? Това достатъчно ли е голям? Добре. Така че има много команди, които Трябва да се получи доста използван за през семестъра. Големият два за навигация са ли, списък файловете в тази директория, както и CD, така че промените директорията. Така че може да се промени на работния плот и след това много често срещан модел е CD с директория и веднага ли Какво има в указателя. Хората също понякога не осъзнават че Tab завършване е нещо. Така че, като CD, вх, а след това удари Tab. Аз почти никога не напишете цялото нещо. И след това, ако продължавам да удря Tab отново, той автоматично ще начало обявата за мен. Така че мога CD vhosts, локалния хост. И това е просто ще - в случай, че не са чували термина преди, директория е просто друга дума за папка. Така че сега, ако се видим - нека да донесе, че до върха. Така че сега, ако се видим в скоби, вие виж малката тилда, наклонена черта, vhost, наклонена черта, локалния хост. Така тилда, който се отнася в моята домашна директория. Това е указател, че сте , когато сте SSH инча Това е директорията, в която сте, когато ти отвори терминал. Това е мястото, където да започнете. И така, аз съм вътре в моята домашна директория, и аз съм вътре на vhost указател вътре на моята домашна директория. И тогава аз съм вътре в локалното домакин директория вътре в това. Така че някои други полезни неща с CD - или добре, като цяло, така че точка, винаги се отнася до текущата директория. Cd, точка е доста безполезно команда. Но това се променя към текущата директория. По-полезно от гледна точка на CD е точка, точка, която е просто отидете до една директория. И имайте предвид, че тези - Искам да кажа, псевдоними, но те символи, точка, и точка, точка, тези работа за почти всяка команда, вие сте ще се мисли за тичане. Така че, като CD е вероятно, където ще бъде използвайки най-много, но те не са неща, които просто CD разбира. Това е доста много нещо цялата си командния ред разбира. Много програми разбере точка и точка, точка. Така че други полезни такива - CD, тире. Така, че ще ме отведе до последна директория, която бях инча Така че понякога аз ще направя нещо подобно, О, аз съм на работа тук. И виждам някаква грешка с нещо, и Аз ще отида да го разследва, като отидете на някои случайни директория някъде. И аз не знам дали това ще пусни ме да вляза там. Това ще го направя. Така че след това аз правя каквото си искам в тази директория. Бла, бла, бла, бла, бла. И аз бях като, добре, аз искам да се върна там, където бях. CD, тире, и това ми носи връщам. Така че аз отивам да се хвърлят много от тях при вас днес. Аз не очаквам да запомните всички от тях. Това е нещо просто знам , че те съществуват. И след това по-късно, когато сте като, Хм, аз искам да се върнем към директория, че бях само на, о, чакай, нещо такова, което съществува. Вие не трябва да само да въведете в цялата директория отново. JOSEPH: И в крайна сметка просто ще ги използват отново и отново, и това ще стане мускулна памет. ROB: Да. Е, как казах и преди, че тилда е вашата домашна директория. Така че мога CD, тилда. Но аз дори не трябва да се направи това, ако аз просто - Ще се върна до директорията, така това не е безсмислено например. Но ако аз просто правя CD, това е също така същото като отидете на моя дом директория. Правя Command, K. JOSEPH: Можете също така да напишете ясно, на дума, но тя трябва да го изчистите. ROB: И аз мисля, че също Control, L също го прави. Така че много различни начини. Мисля, че има някои различия, където ясно и контрол, L просто ще наистина го избута до върха и Все още мога да превъртите назад. Command, K буквално унищожава всичко, а вие не може да превъртите назад. Най-малкото, това е как тя работи в iTerm2. Аз не знам колко други неща - о. С SSHing, така че ако сте на Windows, ти започваш да се наложи да изтеглите PuTTY За да SSH от Windows не прави има като вграден SSH инструмент. От Macs, можете просто SSH директно от терминален прозорец. OK. Въпроси? С ли, така че нещо, за да свикнете с повечето от тези команди е - добре, аз просто ще направя един. Ls, тире, л. Така тире, л е това, което ще да се обадя на флаг LS. И много от тези команди има знамена , че може да премине към тях. Така че в този случай, тире, л е знаме че той казва да ми даде пълна списък на цялата информация на тези файлове. Така ние виждаме, че тук е десктоп промяна на 30 юли в 12:54. Downloads беше променена на 6 септември. Това са текущия размер и байта от тези директории. Не е нужно да се разбере всичко това. Това нещо в ляво, тези drwx е, че ще стане много по-голямо значение по-късно, когато трябва да се справят с - че има нещо общо с които има разрешения да погледнем на тези файлове. И така, ако не сте били единственият ползвател на този компютър, вие ще бъдете в състояние да да речем, ОК, аз би трябвало да бъде само един позволено да погледнете този файл или съм ще позволи на всеки, да погледнем в този файл. Така че някой друг на моя компютър Посетете този файл. Аз дори не знам какво е това - какво прави това? JOSEPH: Аз не съм съвсем сигурен, всъщност. ROB: Нямам представа. JOSEPH: Но ако не знаете, там е полезна команда, която можете да използвате да ви кажа какво означава изхода. И ако напишете в човека преди командата - така M-A-N. ROB: Man. Така човек е още един това е много полезно. И човек, LS. Така страниците на човека, те имат и двете команди, които ти започваш да се използва в командния ред, и те също имат функции, които ще бъдат от значение с C. Така че можете да MAN - и аз не обърна внимание 3. Но човек 3 ФОРМАТ ще донесе нагоре по C версия на ФОРМАТ. Но ако аз просто правя човек ФОРМАТ, това е ще доведе до командния ФОРМАТ , което се случва в командния ред. Така човек, LS. Страниците на човек може да бъде доста поразителен. Тук, обаче, ще видите тази обява на всички тези знамена че ли разбира. Така че, ако ние отидем непокрит, л, и - Аз съм просто ще хвърли това на вас. Но за да се търси, искате за първи път се появи на въпроса марки или бутон наклонена черта. Така че наклонена черта. И тогава може да търси за каквото си искам. Така че аз отивам да намали за пробив, л. И там беше. Така че използването на дълъг списък формат. Това не ми помогне да разбера какво че определена колона означаваше, но аз Предполагам, някъде тук това би могло да обясни това. Така че използването на синтетични страници за всяка команда че не веднага да разбере. Аз съм сигурен, че може дори човек, мъж. Интерфейс за онлайн справочници. О, един последен едно, че е може би малко по- Съответства ли, тире, а. Така че, ако забележите, аз просто правя ли, Получавам тези пет файлове. Ако го направя ли, непокрит, а, I получите много повече файлове. Така че това нещо общо между всички тези нови файлове е точката предварително. Така че конвенцията е, че един файл, който започва с е скрита една точка. Така че, вие не искате да видите този файл, вие Не искам да го имам бъркотия с директорията обява. Това е само когато изрично да поиска, Всичко е наред, LS, тире, едно, покажи ми. The А означава всички файлове, включително и скрити такива. Така някои други команди. О, въпроси по тази точка? Да. SPEAKER 3: Когато направите ли, А, каква е точка, точката? ROB: Oh. Така че това е, което аз говорех. Това е едно и също нещо, когато Мога да обичам CD, точка, точка. Така че, технически погледнато, точка и точка, точка са файлове, които съществуват във всеки един директорията, където файлът точка се отнася в текущата директория. Така че, ако аз CD, точка, аз съм просто ще да остане в указателя. И точка, точка винаги се отнася до предишния указател едно ниво нагоре. Така че, ако аз отида в дневници и LS, тире, Ал, Ще видя точка, точка. CD до точка, точка ме връща към предишната директория. Да. OK. Така че още един доста важен команда е RM. Така че това е, което ние ще да използвате, за да премахнете. И нека действително направя друг команда първо. Така защитен режим. MKDIR е как можете да създаване на директории. И аз ще се създаде временна директория и иди в тази временна директория. И както се очаква, че е празен. Но ако аз ли, тире, а, аз все още имат точка и точка, точка, точка, защото се отнася до текущата директория. И точка, точка се отнася до предишния директория. И тези, които винаги ще съществува, без значение директорията, в който се намирате И това е напълно ненужно команда, но докосване. Аз просто го използва, защото това е лесен начин за създаване на файлове. Така докоснете, докоснете б, докоснете с е просто ще създаде три файла нарича, В и С, които са напълно празни. Така точката на мен създаването тези в първо място е просто така, че РМ е как можем да ги премахнете. Така че, RM, а. Това ще ме питате, извадете редовно празен файл? И тогава аз ще кажа Да. Така че, ако аз знам със сигурност, че искам да изтриете този файл, без да се налага да бъде подкана, извадете редовно празен файл?, След това RM, тире, е ще бъде флаг, който казва, принуди Remove без Дори ме накара, о, вие сте Сигурни ли сте, че искате да изтриете файла? Да, сигурен съм. Така че, RM, тире, еб просто ще го направя, без да иска. Така че нека да направим още няколко директории. защитен режим, ТМР2, CD, ТМР2, докосне, докосване б. OK. Така че сега искам да се премахне ТМР2 като директория. Така RM ТМР2. Вие не можете да премахнете ТМР2, тя е директория. Така че въпросът тук е, че РМ не прави веднага работа по директории. Тя е предназначена само за файлове, като не-файловете в директорията. И така, какво можем да направим тук е RM, тире, R. Това означава рекурсивно, които биха могли да не означава нищо за теб, все още. Но когато стигнем до рекурсия, това ще означава повече. Така че, RM, тире, R, ТМР2 ще рекурсивно отидат в тази директория. Така се спускат в директорията ТМР2? Да, нека да отидат в това. Искаме ли да се премахне ТМР2 / а? Да. Искаме ли да се премахне ТМР2 / б? Да. Сега искаме да се премахне на ТМР2 директория? Да. И така сега директорията и всичко вътре на това е била отстранена. Има технически команда RMDIR , които можете да използвате, за да премахнете директории, но тя работи само на празни директории или иначе. И за да се види, че, нека просто направи защитен режим, ТМР2 отново. ТМР2, докоснете. OK. Така че, ако се опитате да премахнете dirtmp2, тя ще казват, директория не е празна. Така че аз почти никога не използвайте Remove реж. команда така или иначе, защото RM, тире, R ще работи на празни директории и не-празни директории. И също така, ако аз не искам да трябва да проверете, че целият процес на низходящ в указателя и премахване на всеки отделен файл, RM, тире, RF, ТМР2. И сега го няма. Нещо, което да бъдете внимателни за е RM, тире, RF. И това ме плаши дори да го напишете, защото, ако случайно Въведете удари или нещо такова. Така че, RM, тире, RF, тилда би, без да ме накара, на F не подкани мен, той автоматично ще премахне цялата ми домашна директория и всичко в него. Така че може да си мислите, че това е глупаво нещо да направя. И добре, че е така. Но това може да се случи много лесно, като злополука, ако, да речем, аз исках да се премахне моя черта, vhost директория. И точно в бързо пишете, Аз случайно го направя. Това ще премахне рекурсивно двете ми домашна директория и директорията vhost в тази конкретна директория, която току-що се случва да не съществува в момента. Но това все пак ще се премахне цялата ми домашна директория. Поне като не се налага на F, че ще ме подкани първи. И щях да бъда като, о, не, аз Не искам да го правя. Но хората, наклонена черта, включително ми са склонни да влязат в навик винаги RF-Ing. Дори редовни файлове, които мога просто да RM, C, че са склонни просто да RM, тире, RF, хим. Просто бъдете внимателни, когато сте RF-Ing. SPEAKER 4: Какво означава C направя? ROB: C е Говоря за това C файл в тази директория, че RM, хим. JOSEPH: И по-опасно, ако използвате една звезда, тя се отнася към всичко в указателя. Така че това, което аз често са склонни да направите, е аз ще го направя отидете в директорията и аз искам да премахнете всички файлове там. Така че, RM, тире, RF, звезда. ROB: Да. Rm, тире, RF, звезда. JOSEPH: И ако не сте внимателни какво ви е текущата директория - Аз не бях в Temp, но аз бях случайно в моята домашна директория, тогава аз ще премахне всичко в моята домашна директория. И всъщност съм направил това преди, и Мисля, че съм правил това преди или Jay е направил това преди. ROB: Аз съм случайно премахнати - така игнорира тази команда за малко. JOSEPH: Не е забавно. ROB: Така че в бин директорията на наклонена черта е китка на двоични файлове, където ще има бъдат запознати такива като трясък. Е, звъня и в общи линии всички от тях неща, които аз съм работещ на командата Онлайн са в тази наклонена черта бин директория. JOSEPH: Харесвам ли е тук. ROB: Е DOT, наклонена черта, би ли изброят тази директория. JOSEPH: Rm е също в тази директория. ROB: По невнимание съм RM, RF-ЕД бен, което премахна всяка команда мога вероятно някога искате. Кои тогава аз просто преинсталирате нова техника в този момент. JOSEPH: Така че бъдете много внимателни, когато използвате тази команда. ПУБЛИКАТА: [недоловим]? ROB: Да. Това също е лош навик да влезе. Ако забележите, аз съм сега - добре, че не може да забележите, но ми увеличение в може би може. Така че аз сега съм корен @ уред. Така jharvard е потребителят искаме винаги да се използва. Root е потребителят, който има разрешение да направи абсолютно нищо. Така че забележите, когато съм jharvard, ако се опитам да CD - Какво е указател, че? О, корен е добър пример. Така че, CD, корен. Разрешението е отказано. Защото, ако се вгледаме в този списък - и отново, че не е нужно да се напълно разбирам това. Но тези три тирета казват че не позволявайте на всяко друго потребител в тази директория. И директорията се случва да да бъдат притежавани от потребителя корен. Така че това, че аз съм jharvard и не един, който не е корен е разрешено в тази директория, това означава, че аз съм Ще получите разрешение отрече, когато опитайте да CD в нея. Така че, когато аз съм корен, имам разрешение да направи абсолютно всичко, включително изтриете важни файлове на уреда и унищожи цялото нещо. Така че това е лош навик да влезе просто се скитат наоколо си операционна система, като корен. Аз го правя така или иначе. Въпроси? И ще излезете от корен, остани като jharvard. OK. Повече съответните команди. Така че се връщам в нашата температура, на MV команда стои постъпка. Можете да преместите. Сега ние искаме да го наречем б, така че сега тя се нарича б. Или може би искате да преместите б до една директория. Така че сега тази директория е празна. Ще се върна към моята домашна директория, и ние виждаме, че б е в тук, защото на домашна директория е една директория нагоре от директорията, която б е бил инча Има също така и CP. Така че CP е копирате супер раздел, точка, текст. Мога да го наречем е, точка, текст. Сега ние имаме и двете супер раздел, точка, текст, и S, точка, текст. Това също работи на директории. I RF-ЕД в един файл. Така CP - Ами, първо нека се опитаме кп, ПТУ, ТМР2. Така че, като се пропуска директорията ПТУ. Така че, подобно на RM, поведението по подразбиране е да не работят на директории. И отново, подобно на РМ, по подразбиране поведение - добре, все го да работи с директории е, тире-R далеч. Така копирате рекурсивно Времянката директория в ТМР2. И така, сега имаме TMP, така и ТМР2, и че не е полезно, тъй като TMP беше празна, на първо място. ТМР2. Сега нека да копирате ПТУ в ТМР2. И ние виждаме, че ТМР2 също има файла а, защото на указателя и всичко вътре, че директория е копиран. И това може да бъде малко полезен ако, да речем, че работиш на проблем зададете един - или всъщност, по-късно проблемните комплекти са още по-важно, тъй като там ще бъде един куп на файлове и неща. Но просто искате да, за разделно второ, вие сте като, добре, аз съм Ще се опитам нещо различно. Нека само да копирате целия си pset1 директория в pset1 архивиране, така че ако Аз в крайна сметка завинтване нещата, мога се върна в моя гръб директория. Там са по-подходящи начини за версии архивиране на кода си, но това е винаги по-бърз начин да се направи само уверете, че имате копие на нещо че сте на път да се промени. Така че ехото е също команда еднократни че вид sillily просто ще печатат на командния ред точно какво което исках да повторя. Така ехо здрасти. Ние просто ще отпечатате здрасти. Echo здравей свят. Ще отпечатаме здравей свят. Това влиза в употреба, когато сте начало комбиниране команди. И пак, не очаквайте да ви изцяло разберем това все още, но това е какво да се види. И след това, ако сте Googling за примери или ти осъзнаваш, което искате да направите нещо, то може да бъде полезно. Така че нека, като пример, така ли, тире, л. Така че тук аз виждам изхода на LS, тире, л. И аз казвам, ОК, аз искам да съхраняване на тази във файл. Всичко на този изход тук, искам да постави в отделен файл. Така че това малко по-голяма от символ е това, което ние ще се обадя. Ние сме пренасочване на изход във файл. Да се ​​обадим на файл бла, защото това е това, което съм склонен винаги да го наричат. Така че сега ние виждаме, че имаме подаде дрън точно тук. И ако аз го отворите, ще видите, че е точно на изхода от командата че аз просто се завтече. И по същия начин, можете да - ако това е изход към файл, тази се получи входа от файл. Какво е команда, която I - JOSEPH: Мисля, че можете да използвате по-малко или повече, най-вероятно. ROB: Но какво ще кажете за малко по-малко бла? Не знам. Ако дойдете в този сценарий, като Има psets, че това е полезно за. JOSEPH: Можете да го тръба в ехо. Pipe файла в ехо, за да го видите. ROB: Това е тръба. JOSEPH: Съжалявам. ROB: Добре. Така че това е изход към файл. Това е получите текста от файла и да го предаде на програмата. И вие ще видите този човек. Така че това е вид правиш и двете едновременно. И всъщност, аз ще въведе два нови команди, само за да се възползват от нея. Историята е удобна команда, която е само ще отпечата списък на нещо, което някога съм стартирате команден ред. Така ние виждаме, тук всичко, което имам се провежда цялото това време. Много LS-те години. И друга полезна команда е Впиши че неговата цел е да се търси над текст търсите модели, добре, търси каквото и да искате да търсите. И така удобна употреба тук е, да речем ние искаме да вземем историята. И аз искам да гледам за командите където I - това, което е полезно едно да се търси? JOSEPH: [недоловим]? ROB: Или нека просто погледнете за всички докосва, независимо по каква причина. Така че това е, което тя ще изглежда така. И не е нужно напълно да Разбирам това. Но идеята е тук, историята дава същия изход го е направил тук където е отпечатване на цялата история на всичко, което някога съм се изпълнява. След това се минава, че - Така че, вместо да го отпечатате на екрана, ние искаме да премине, че към команда Впиши който търси всички екземпляри на думата докосване. И така, с помощта на тази комбинация от инструменти история и Впиши, мога да видя, OK, Тук е всичко, от командите съм някога тичам, и тук е малко по-често срещан. Ние сме на дъното. И това също ми дава командата Аз просто се завтече, че е имал Думата докосване в него. Но тръбата е доста полезно нещо за комбиниране на няколко програми. И всъщност, това е пряк път за наем, ми изход историята, за да подаде дрън, и нека Впиши използвайки файл бла на като това, което аз искам да гледам през. Така че тръбата е просто пряк път за тези две команди. Да. SPEAKER 4: [недоловим]? ROB: Да. Какво е - Oh. Нека да се тестват. Така че, котка, куче, риба. Така че аз искам да Впиши. Dash, R, отново, ще бъде рекурсивно, така че аз искам да се спуска надолу всички директории. Искам да рекурсивно Впиши за всички - и нека ме временно да това от пътя. Игнорирай мен. OK. Така че аз искам да временно Впиши за всички екземпляри на думата риба. И така, ето какво правя е grepping рекурсивно за думата рибата. И звезда означава над всички тези файлове в тази директория. И така тя ми даде Разрешението е отказано, защото това не е позволено да се прочете, че определен файл. Но го намерих риба в файл, тест. Аз също може да се каже, по-специално, само аз искам да гледам в файл бла част, по- който случай той няма да намерите нищо. Аз само искам да гледам в файл, тест. Тя ще намерите риба. Това е доста полезна команда да знам като цяло. Има няколко алтернативи за GREP , които се очаква да бъдат по- програмист приятелски, но съм склонен все още да падне обратно на Впиши. Въпроси? OK. Има ли други команди? Oh. Просто еднократно едно, че аз винаги намирам за забавно е кал. Така че забележите, когато аз съм в този прекрасен режим на цял екран, нямам като горната лента с инструменти или нищо. Така кал просто ми дава един хубав малък календар, който е прав сега отсече, предполагам. Но хубаво малко команда. JOSEPH: Това е [недоловим]. Други команди, които може да се наложи виждал включват трясък и да направи. Ние ще отидем над тях по-подробно по-късно. Но ако сте работили на на PSET, трябва да сте запознати с тези. ROB: Добре. Въпроси за команден ред неща? Добре. Така че нека да преминем към някои C-свързани неща. Променливи математика. OK. Така че просто като имахме математика в Scratch, можете да използвате и математика в C. Преди да стигнем до това изцяло, така променливи. Не забравяйте, че всеки път, когато обяви променлива като Int X или Y плувка, можете Трябва да се даде го въведете преди името на променливата. Така видове, които сме виждали досега са ПНА, поплавък, двойни, дълго, дълго, което аз всъщност не знам дали ще съм Вижда се, че досега. Има и други такива. Ние сме видите Чар. Има една дума, която е като това е най- противоположна на дълъг дълъг, когато това е по-малък от цяло число. Видяхме също низ. И така, какво е специален за низ? Защо бих казал, че е не съвсем като Int? SPEAKER 4: Тя не съществува в действителност. ROB: Да. Така че единствената причина имаме низ е така, защото, когато правиш хашиш, включва cs50.h. И ние ще видите примери за това по-късно - ох, че не се справя толкова добре - където cs50.h прави нещо по подобие на вид Def, Чар звезда, низ. И така, това казва, че ние дори не знам какво е още един знак звезда. Но това се казва искаме низ. Всяко място, на което бях с низ, вие може да са използвали Чар звезда, което всъщност е вид, че съществува в езика C. Но ние ще се заемем с това. О, и тя отива връщам. Neat. Така че едно и също нещо с булев където истина и лъжа. Това всъщност не е вграден тип в C. Вместо това, това е просто, има това нулата стойност? Тогава ние просто ще разгледа това, че е невярна. Дали това има стойност - Е, има това всяко стойност, която не е нула? След това ние ще го считат за вярно. Така един е вярно, две е вярно, нещо различно от нула е вярно. Така че тези, които са тези. Въпроси за обявяване на променливи и променливи видове и всичко това? Да. SPEAKER 4: За дълго, дълго, в книгата, той каза, че това трябваше да бъде дълго, дълго вътр. Но просто дълго време ще работят? ROB: Така че тези тип модификатори. Така Int х. Така че ние можем да кажем, грозен Int х. Можем да кажем кратко Int х. Можем да кажем, дълго, дълго Int х. Но почти всички от тези неща, току-що каза, грозен Int, кратко Int, дълго, дълго Int, можете да се отървете от на INT и то просто ще приемем, че имаш предвид вътр. Така неподписани X, която просто означава - Знаете ли как обикновено с едно цяло число, може да се каже х е равно на негативното 3? С грозен Int, че не можеш. JOSEPH: И отново за камерата, на въпрос е, каква е разликата между дълго, дълго Int и просто дълго време? ROB: Да. Така че аз ще го направя почти никога пиша дълго, дълго вътр. Аз ще напиша дълго, дълго. JOSEPH: Имате ли въпроси? ROB: OK. Така че глупаво малко напомняне за това е как декларираме променлива и се инициализира променливата и декларирам друг променлива и се инициализира всичко в една стъпка. Така че декларацията на променливата и променливата за инициализация не е нужно да, но може да бъде на една и съща линия. Така че ние имаме стандартни математически оператори че сте свикнали - плюс, минус, деление, пъти. Има също така модул, който ще видим. Не е, най-малко в C, вграден във властта оператор карета степенуване. Е, има един оператор карета, но това не е власт. JOSEPH: Но това не е степенуване, Да. ROB: Не използвайте каретката да се предположи, че това означава като квадрат или нещо такова. Така че някои неща, които трябва да имате против за разделение. Ще устои. Така обявен инициализира отговор. Така че ние казваш плувка отговор е равно на 1, разделена на 10. Печат отговор до два знака след десетичната запетая. И това е едно от нещата, които съм би човека ФОРМАТ за да разбера, че какво по дяволите прави%, точка, 2е предвид? И това просто означава, добре, игнорирайки 0.2. А%, е е това, което ние използваме да отпечатате да плува. На 0.2 се казва, че за печат изплуват два знака след десетичната запетая. Така че тази програма има бъг, и може да съм виждал това и преди в някои преди CS разбира се. Но какъв е този бъг? SPEAKER 5: Нула. ROB: Да. Така че, когато ние казваме, отговор се равнява на 1 делено на 10, ние искаме отговори да бъде 0,1. Но един разделен от 10, 1 е число 10 е цяло число. И така, когато правим цяло число, разделено на цяло число, ние ще се върнем цяло число. Така един разделен от 10 е 0.1. Тъй като тя се нуждае, за да ни даде цяло число, тя просто ще изхвърлите, че знак след десетичната запетая и да кажа, че отговорът е 0. И така, когато се печата отговоря тук, то се случва да отпечатате 0.00. JOSEPH: И само като бележка, тя всъщност изхвърля това, което е след десетичната точка. Така че, ако вместо това сте имали 6 делено на 10, може би си мислите, че ще ви даде 0.6 и тогава ще закръглят до 1. Но всъщност, това, което се случва, когато го напишете задачите, които е, че тя падне това, което е след десетичната запетая. Така че 0.6 не стане 0. ROB: Да. И ние ще кажем пресечен за това. Така че, когато те хвърлих едно цяло число, десетичната част се отрязва. Така че уговорката за това - има всъщност два. И аз ще направя, че второто, защото това е много по-лесен оправя. Така че една корекция е да използвате плувки в разделението. И наистина, вие само трябва да направи една от тях средства. Но това е малко по-ясно просто да направи и двете от тях плува. Така 1.0 разделен от 10.0 е се раздели на две шамандури. Така че отговорът ще свърши като с плаваща запетая, и така че ще разпечата правилно 0.10 тук. Нещо, което не работи толкова добре за това е, добре, разбира се, беше лесно достатъчно, за да я превърне в 1 до плувка, като я прави 1.0. Но какво ще стане ако вместо това имахме две числа като Int х е равно на 1 и Int Y е равно на 10, а след това, което искахме да се х разделено на Y? Така че това не е лесно просто да направи x.0 или нещо такова. Така че уговорката за която е кастинг. Така леене е начин в C да конвертирате от една променлива вид в друг. Така че тук, едно е цяло число. И с въвеждането на този плувка пред това, ние сме леене 1 до налични средства. И така, това ще конвертирате на 1 до 1.0. И това ще конвертирате от 10 до 10.0. И тогава нещата се държат подобно на предишна версия ние просто показа където, както се очаква, ще получите 0.10 и това ще отпечата това. И ние можем да направим това с променливи, също. Така че можем да кажем, флоат х разделено на плувка у. JOSEPH: Имате ли въпроси? ROB: Така че точно като в редовното математика, имаме предимство на операторите. Така че в клас по математика, вие сте по-вероятно да го наречем цел на операциите. Ето, официалният термин е предимство на операторите. Но предимството на оператор, или най-много оператори, е, както бихте очаквали. Така че точно като в математиката, два пъти 10 е ще бъдат групирани по-тясно, отколкото това 10 разделен от 2 и след това 2. Редът на операциите, ще направи 2 10 пъти, 10, разделена на две, и след това той ще направи 20 плюс 5 плюс 2. Така че това е, както се очаква, и можете да използвате скоби за групиране на изразяване. Не можете да използвате квадратни скоби да групирате изрази. Да? SPEAKER 5: Бихте ли всъщност Просто се върнете на едно малко? Можете ли да хвърли едно цяло число в низ? ROB: Така че в C, можете да хвърля всичко искате да всичко, което искате. Това не означава, че е хубаво нещо да се направи. Така че, когато хвърли Int да низ, това означава, че - и ние ще стигнем в тази много по-внимателно - JOSEPH: Много по-късно. ROB: Аз не искам да кажа, много по-късно, така че аз се опитах да променя моята присъда. Ние ще влязат в него много по-старателно по-късно, когато наистина, когато имате низ променлива - така че един низ може да бъде произволно дълго, нали? И ние сме били казва, че едно цяло число е четири байта и дълго време е осем байта и поплавък е четири байта. Така че един низ, точно като едно цяло число, има само определен брой байтове в него. И това ще бъде четири байта. Но един низ може да бъде доста произволно дълго, нали? Така здравей свят вече, ако това е 10 знаци или каквото и да, това е вече ще бъде над 4 байта I може да се побере в низ. И така, как струни наистина работят е, че те са там, където в паметта, че низ се съхраняват. И така тук, когато казвам низ х равнява здравей свят, вътре в х е Просто казвам, о, здравей свят се съхранява На този определено място в паметта. Така че, ако ние се опитваме да хвърли цяло число до низ, а след това ние се опитваме да тълкуваме някои случайни част от паметта като низ. И това почти винаги чупи неща. JOSEPH: Но ако това обърква вас, ние ще го покриваща по-задълбочено по-късно. ROB: Да. Това е мястото, където отиваш да влязат в указатели. И, което е значителен парче на две седмици след това, разбира се. SPEAKER 6: Има ли работа като обекти на други езици или не съвсем? ROB: Така че в други езици, обекти ще бъдат представени с помощта на указатели. Това не е едно и също нещо, все пак. Някакви идеи? JOSEPH: Не. Никакви мисли. ROB: OK. JOSEPH: Next. ROB: Просто отидете с това. Добре. Така че по модул. Точно като имаме плюс, минус, разделят, и да се размножават. Така че по модул е ​​едно вие може не сте виждали преди. И тя просто казва, дай ми остатъка от. Така 55% 10. Останалата част от това 55 разделено от 10 ще бъде 5. Така 55% 10 е 5. И 3% 5 ще бъде 3. 8% 8 ще бъде 0. 16% 15 ще бъде 1. JOSEPH: Едно нещо е да се отбележи с това, също е, че не може да работи, както се очаква ако използвате отрицателно число. Така отрицателен 5% 4, някои хора Може би си мислите, че е - какво бихте си помислили отрицателен 5% 4 ще бъде? SPEAKER 5: One. JOSEPH: Така че някои хора казват едно, някои хора казват, че един отрицателен. Но това, което - ROB: Не бих дори имат каза един от тях. JOSEPH: Two, съжалявам. Някои хора казват - ROB: Three. JOSEPH: Three? ROB: Negative - каква е - отрицателно пет - JOSEPH: Три, три, три. Извинете. Защото по модул, обикновено, когато сте го виждал другаде, това обикновено означава, връща положително число, нали? ROB: Така че, когато ние казваме, по математика, 10% е, те са склонни да искам да ти дам - ако ние моден с 10, а след това ние очакваме да получи число между 0 и 9. В тук, това не е вярно, че ви ще получите отрицателни числа върнати. JOSEPH: Така отрицателен 5% 4 ще бъде отрицателен 1. ROB: Но това е рядък, че ти си мод-ция отрицателни числа, за да се започне. Пропусни това. JOSEPH: Да. ROB: Meh. OK. Така че едно последно нещо да се отбележи, за плувки е, че това е опасно поведение, поплавъци но не са точно представителство. Така че се връщам в байта пак, не забравяйте, че Int е винаги четири байта и плувка е винаги четири байта. Така например Лукас е доста добър. Така че мисля, че на едно разделено на три. Така 0,3333333. Ако имам само 32 бита, как може Да съхранявам 0.33333 точно? И може би, по някаква причина, вие казвате, Добре, добре, нека просто кажем, че този конкретен 1011001, нека Просто казвам, че трябва да бъде 0,333333. Е, имате само ограничен брой тези битове, така че е невъзможно да се представляват всеки един с плаваща точка стойност, при само 32 бита. Е, това е невъзможно да представлява никаква плаваща запетая стойност дадена безкрайна - добре, имайки предвид всеки краен брой битове. Така че въпросът тук е, добре, когато се използва да печатат на два знака след десетичната запетая, ние е правилно получите отговор 0.10. Но под капака, това е наистина се съхраняват възможно най-близо до 0.10 като тези бита могат да представляват. Дали това на следващия слайд? Или не е? JOSEPH: Да, това е така. ROB: Blegh, blegh. JOSEPH: Да, може просто да дръпнете бележките малко. ROB: Отивам да я увеличите в на последния за това. О, Боже, това е [недоловим]. Така че този номер. Това е, което ще се отпечатва ако стартирате тази програма. И забележи, че не е наистина голяма работа ако ние само се грижат за подобно 2-3 знака след десетичната запетая. Както ние само първоначално отпечатани 0.10, и това е защо ние не видя нищо нередно. Но щом веднъж започнат да получават в точна, точно число, че това е представляващ, ние виждаме, че тя не може да точно представляват 0.1. И част от проблема тук е като, Добре, това е добре, но, добре, първо, какво ще стане ако ние се опитахме да направим, отговор се равнява на 0.1 се равнява? Това ще върне вярно или невярно? И така че е трудно да се каже. Мисля, че всъщност може да се върне вярно. Ще го първия - Не знам. Отговорът е, след като започнете да се занимават с плаваща запетая стойности, вие доста много не трябва да се използва равенство поради това неточност. И за всичко, което знам, че е стотна знак след десетичната запетая, че плаваща запетая не е в състояние правилно да се справя. И така равенство просто ще се провали дори че броят - ако бяхте Използването на точни числа, числата трябва са едни и същи. Той е в течение на около 50 изчисления с използване на тези плаващи точкови стойности, грешката може да се изгради нагоре и нагоре и нагоре, и нещата просто се объркат. JOSEPH: И там са били наистина известните примери за това да се случи. Подобно на НАСА инженери са придобили това грешни, причинявайки ракетите да се взривят в въздуха, след като са били стартира. И много въпроси като това. Така че, да. SPEAKER 6: Когато казвате 0,3 F, пък съкращава останалите? Или пък закръгли в посока нагоре или надолу? ROB: Ще ФОРМАТ около него? JOSEPH: Мисля, че ФОРМАТ отрязъци. ROB: OK. Така че по подобен начин можем да отидем в обратната посока на това, където в този случай, най-близо той може да представлява 0.1 е с този номер. Най-близкото, че може да бъде в състояние да представляват 0,2 е в обратното посока, 0,199999996356 или нещо такова. Така че, ако ние отидохме в тази посока на неща, тогава ФОРМАТ 0.3 е да се върнат 1.99 вместо 2.00. JOSEPH: И аз не съм съвсем сигурен за това. Вие може да искате да напишете една малка, малка програма, за да проверя. ROB: Макар че, това, което ние сме сигурни, е, че ако сте се опитали да се хвърли, че до ПНА, и леене на Int ще доведе до това да се съкрати десетичната, ако опитате да хвърли 1.9999999 на ПНА, вие ще получите едно. И така, вие трябва по принцип да се използва кръг функция в математиката библиотеката. Въпроси? OK. JOSEPH: Така да преминат към условия и булеви изрази. Така че със сигурност сте забелязали преди. И всъщност, нека да се уверете, че ми компютър е в правилния формат тук. Space. За съжаление, ние ще трябва да се справят с малко с изключване по краищата. Но, да, вие сте виждали това преди в Scratch. Така че това тук е израз който се използва в условен израз. Така отговори по-голяма от нула, ще ви кажа, вярно или невярно. И те са наистина важни, защото те ни позволяват да се въведе логика в нашия код. Така например, това е програма написан на Scratch че пита потребителя за цяло число и им казва дали цяло число, че са ти дали е положително или отрицателно число. И превръщането над тук, за да видите, е първо разпечатате отчета, дай ми цяло число. И тогава можете да ги помолите за цяло число. И тогава можете да използвате условно логика над тук, за да се провери дали този брой всъщност по-голямо от нула или не. Така че тук имаме Булев израз във вътрешността на условна Ако изявление. Има ли някакви въпроси? Има ли някакви въпроси относно това? OK. Така че има нещо повече от по-голяма от, разбира се. Можете да изгради булеви изрази използване на повечето от видовете неща, които можете ще мисля за по математика. Така по-голям от. Това би трябвало да бъде по-малко от. Извинете. И разстоянието. ROB: дай боже да го напусне. JOSEPH: Добре. Така по-голям от по-малко от по-голямо от, или равен на по-малко малко или равно на. Ние използваме двойни равни, за да проверите за равенство, защото единствен равнява средства задача, нали? Да. И тогава ние също може да не се равнява на използване на удивителен знак, равни. И този символ удивителен знак може да също да бъде удължен, така че, ако искате да обърнете някаква Булева изразяване, можете да направите това. Така че това ще се оцени истинската само ако отговорът е по-малко от или равна на нула. Всякакви въпроси, свързани с това? OK. Така че можете да комбинирате тези изрази, използващи логично и и логично Or. Така че това е само символ и, което трябва да бъде Shift, 7. И това е символ на тръбата, която е не по-ниска случай L. Това е една това е точно над вашия Въведете ключ. Така че можете да използвате два от тях, за да символизира логически и логическото Or. Така че това само ще се върне вярно, ако отговор е един, два, три или четири. И това само ще се върне вярно, ако отговор е извън, че върху едната страна. Така че това не е един, два, три или четири. И начина, по който можете да използвате че в израз - ROB: Или нула или пет. JOSEPH: Нула или пет. Извинете. Да, да, да. OK. И тук сега, същото ли начин ще използвам този израз, по-малък изразяване страна на Ако условно изявление, вие също ще го използват същия начин, като просто я постави вътре в скобите на изложението IF. Така че това ФОРМАТ само ще уволня, ако отговор е един, два, три или четири. Всякакви въпроси за комбиниране изрази? Така че има и друг условен конструкт, което наричаме Ако / Else. Така че основно, това вече означава, OK, ако нещо, което аз исках да проверя не е вярно, тогава отидете на друго и извършите това друго действие. Така че в този конкретен случай, аз попитах потребителя за число. Е цяло число, по-голямо от нула? Да? Е, след това те качват положително число. Ако не, тогава той трябва да има е отрицателен или нулев. Така че си избрал отрицателно число или нула в този случай. Да. Или нула. И тогава ние също имаме Ако / Else, Ако и Else. Така че това ни позволява да изпълнява поредица от неща, само ако първите, които се провалят. Така че в този случай, сега ние го правим последната една те взема нула. Така че, ако те нито качват положително, нито отрицателно число, то те трябва да се качват нула. Така че просто слиза на верига като тази. Така че, един пример за това как една Ако е различно от - Ако една / Else е различен от просто поредица от инвестиционните фондове. И това е често срещан въпрос, който хора си задават е, добре, ако можете да получите като 95 в CS50, какво това ще програма ви кажа? SPEAKER 5: Имаш A. JOSEPH: Да. Трябва всеки един един от тези права. Имаш A, имаш B, можете имам C и D, нали? Така че всичко това се оценява в ред. Така че, докато 95 е по-голяма от 90, е също по-голяма от 80, тя също е по-голяма от 70, и това е също по-голяма от 60. Така че имаш всички тези степени. И аз предполагам, че ще само искам А. Начинът, по който да се определи, че е да се замени тези с Else / Ако "S. Така че в този сценарий, той вижда, че 95 е по-голяма от 90, и след това го прави не оценява останалите на отчет. Всякакви въпроси за това? Така че има и друг условен вид структура, която имаме тук, които ние наричаме изявление превключвател. Така че, това ви позволява да проверите основно каква е стойността на редица сложите в отчета за преминаване е. Така че в този сценарий, ние сме превключване на N, и което казваме, о, ако н е един, след това да отпечатате това изявление. И след това почивка, което означава излизане от отчета за ключ. Ако не беше един, а след това, добре, просто в крайна сметка се покажат всички тези случаи. И така, той проверява дали това е една или две или три, и го отпечатва съответно. И какво е това по подразбиране дума тук средства е, ако те не влизат във всички на тези, тогава кажи Invalid. Така че нека да кажем, аз питам за N и потребителят ми дава четири. Е, тя отговаря на нито един от тези случаи, така че ще разпечатате Какво има в раздел подразбиране. Да, въпрос? SPEAKER 5: Можете ли да използвате Булева вместо изрази една, две или три? JOSEPH: Така че въпросът е може ли да се използва Булеви изрази, вместо на един, две и три? И в C, че ти вярвам Не мога да направя това. Но в други езици, които можете да срещнете в края на семестър като JavaScript, можете. Е, вие ще трябва да се изчисли първо тази стойност и след това да го използвате в превключвате изявление. Да? ROB: Така че част от полза на превключвател отчети се сетиш, ако си направил това като Ако / Else, така както ако п е равно на се равнява на една или нещо такова. Else / Ако N е равно на е равно на две, няма значение. Else / Ако N е равно на е равно на три. Така че начина, по който програмата ще го изпълним е последователно ще слизат този списък и да се провери, е п едно? Nope. Е п две? Nope. Е п три? Да. Направете това. Като има предвид, с превключвател изявления, че е всъщност можете да компилирате тя да бъде много по-бързо. И веднага след като тя казва, комутатор, то казва, добре, п е две, аз съм веднага ще скочи до мястото, където Аз би трябвало да започне да изпълнява. Аз няма да се проверява първо, е н едно, е п две? Той може веднага да започнете да правите това, което е трябвало да се направи. И заради това, че не може предприеме булеви условия. Или пък, че ще трябва да направите последователно, като, добре, е п по-голяма от нула? Else е п-голяма от 10 или нещо такова. JOSEPH: В този случай, ако се използва Ако / Else, Ако, тогава ключа би тече около три пъти по-бързо, отколкото ако / Else, АКО. Ние можем да организираме ключа по такъв така, че ние не се прекъсне след всеки един от случаите. Така че в този случай, аз съм се раздели номера, които ние избираме в една и два не са голям брой и три са голям брой. Така в този случай, ако п е едно или две, то ще се появи на делото и след това ще попада чрез, защото няма прекъсване. И това ще свърши тук. Така че, ако ние вземем един, той ще направи ФОРМАТ и след това почивка, така че нито едно от това се изпълнява. И разбира се, ако те влязат в три или нещо друго, то ще прескочи тези и да не отида там, и да го вместо това ще се изпълни съответния ред. Има ли някакви въпроси относно това? Да? SPEAKER 4: Ще получите съобщение за грешка, ако имаше прекъсване в случай една, но тя не са имали нещо за него да се направи? JOSEPH: Така че въпросът е ще можете да получите грешка, ако имате прекъсване в случай, че един, но няма какво да направя? И отговорът е не. Вие всъщност няма да получите съобщение за грешка. Да, mm хмм. Така че като нещо като малка промяна тук, Отивам да се сложи ФОРМАТ тук. Опа. Така че това, което би този печат, ако Сложих един в като вход? Да. Тя ще ви кажа, че не е взела голям брой пъти, нали? Защото това ще удари, че първият случай, той не би нарушил, и то ще падне чрез към втория случай. Всякакви въпроси за това? ROB: Знаете ли, имам още един въпрос? JOSEPH: OK, се охлади. Добре. Така че има нещо друго, което наричаме третичния оператор, който е в основата на алтернативен синтаксис за правене Ако и след Else. И тя ви позволява да направите всичко това на един ред. Така в тази програма, Питам потребителя за п. И ако н е по-голяма от 100, казвам тях, те взели голям брой. Иначе аз им казвам, те качват по-малък брой. Така че ние можем да използваме това наистина дълго синтаксис, низ, S, а след това проверете дали н е по-голяма от 100 и възлага то съответно. Но ние можем да направим това много по-кратки с помощта на тази трикомпонентна синтаксис оператор която включва въпросната марка и на дебелото черво. Така че въпросът марка е по същество задаване на въпрос, нали? ROB: Може би се фокусирам върху това. JOSEPH: Да. Добър въпрос. Така че това е третичния оператор. Аз първо си зададем въпроса, п е по-голямо от 100? Ако е така, тогава аз изпълни първия част преди дебелото черво. Ако не е, тогава аз се изпълни втората част, след като дебелото черво. Така че, ако п е по-голямо от 100, след това го взима висока и поставя че в низ ите. Ако п е по-малко от 100, той избира ниско и след това се слага в низ ите. Така че ще се кондензира това голямо парче надолу в току-що, че една линия. SPEAKER 5: това е популярен? JOSEPH: Да, това е доста популярен за неща, където по същество, които искате да ми задача въз основа на някакво състояние. И в този случай, ние се опитвахме да се придаде стойност на низ ите. Това не е така - Предполагам, че аз наистина не предпочитам то в други случаи. Но това е особено полезно за тази задача. ROB: Това е доста общ модел където имате някаква променлива, която ти започваш да се каже, ако нещо, настройте тази променлива до една стойност; друго, задайте тази променлива с друга стойност. И това е сценарият където се използва трикомпонентна. JOSEPH: И вие сте спестяване много линии, нали? И тя просто прави своя код може би малко по-разбираемо. Да, въпрос? SPEAKER 6: За трикомпонентна, може ли да отида, струнни и равни S, въпросителен знак? И тогава може да има, да речем, пет различни варианта. И в зависимост от това, което броят на п е, бихте ли избрали един от тези? JOSEPH: Така че въпросът е, има ли сортиране на синтаксиса, където можете да направите низ S е равно на N, а след това да има повече от две опции след това въпросителен знак? И един прост отговор е не, че не е наистина добър начин да се направи това, освен ако не искате да гнездят множествена трикомпонентна оператори в един от друг. Може да се направи като п-голяма от 100, въпросителен знак, и после още една трикомпонентни оператор, п-голяма от 50, въпросителен знак, и гнездо него по този начин. Но в този сценарий, вашият код е получаване вид нечетлив и разхвърлян, и тя може да бъде по-добре просто да отидете на Ако една / Else изявление в този момент. ROB: И също така, като страничен бележка, PHP неправилно прилага трикомпонентни оператор, така че вложени ternaries дори не работят както трябва. JOSEPH: Да. Така тя получава малко объркващо, особено когато отидеш на различни езици. ROB: Това е объркващо достатъчно, че езици са погрешни за него. JOSEPH: Така че всъщност, само за да се изясни, е всички да знаят, че това, което % И прави тук? Всякакви въпроси за това? Предполагам, че само за камерата, на% S основно ни позволява да се сложи контейнер за низ. И след това в края на краищата, ние се уточни, че променлива искаме да се сложи в тази държач място е с.. Така че в общи линии се е и тя го слага в тук. И тогава той ще отпечата, ти избра високо или сте избрали по-малък брой. OK. Така вериги позволяват да извършвате неща в кръгови движения, нали? Може да са се сблъсквали в тази Scratch под формата на Forever шлейфове или повтаря, докато се повтаря или конкретен брой пъти. Така че, защо е тази добра за нас? Е, в C, нека да кажем, че имаме този песен изпълнена в Scratch че пее, това е песента която никога не свършва. Тя просто продължава и на и вечно и завинаги. Е, наистина не може да направи програма че има безкраен брой ФОРМАТ твърдения в това, нали? Така в този сценарий, един начин че бихте могли да направите тази работа и да го отпечатате завинаги е да вместо това използвайте Докато контур. Така че една линия, докато ще се изпълни това, което е в тялото на две скоби, че принадлежи към него въз основа на това, което състоянието е. Така че в този конкретен пример преди, ако ние искаме да отпечатате това завинаги, какво може да направим? Е, разбира се, нали? Така че този вид съчетава идеята на някои Булев израз заедно с линия. И ние научихме за Булева изрази по-рано. Така че, когато състоянието вътре в Въпреки че остава вярно, този цикъл ще изпълни на и на и на. И в този случай, ако ние просто го доставя с истина, това причинява безкрайно цикъл, който отпечатва песента и върху и тъй като ние желания преди, без да с програма, която е безкрайна брой ФОРМАТ отчети, което е не е възможно. Така че по-атрактивен, макар че, можете да използвате това с променлива и състояние. Така че нека да кажем, че искаме да се повтаря фраза, напълно смахнат, 10 пъти. И така, какво можете да направите с линия, докато е можете първо да се инициализира брояч променлива извън Докато контур до 10. И тогава в общи линии, всеки път, когато отидете Докато през примката, можете да разпечатате отчета и след това можете да намали брояч променлива докато в края в някакъв момент, след като извадим достатъчно I пъти, един от I достатъчно пъти - и само за да се изясни, аз минус минус означава, че аз съм се равнява на минус 1. Това в общи линии ще свали на точка, в която веднъж ударих нула, това условие вече не е вярна и така че излиза от примката. Така че напълно смахнат отпечатва само 10 пъти. Всякакви въпроси относно Докато цикъл? OK. Така че има начин, ние можем да правим това, което току-що направи в по-кратък начин с това, което ние наричаме За контур. Така че за линия се състои от инициализация, състояние, и актуализация, точно като имахме преди Докато в този цикъл. Така че нека хвърлим един поглед. В тази линия, докато имахме инициализация, а след това имахме условие, че ние проверихме. И тогава имахме актуализация стъпка в горната част. С За контур, това основно се тези три неща и се кондензира надолу в една линия. Така че първото нещо, което го прави в на За контур е инициализация. И след това, което правите и запетая, а след това нали условието, което е I по-голяма от нула отива там, и след етапа на актуализация. Така че това стане, извършвана на самия край на тялото на цикъла. Така че тези две програми са по същество еквивалент. Някакви въпроси? Така че това, което е една разлика между тези две? Може ли някой да го посоча? Тя може да бъде малко коварен. Това е само една много малка разлика. Да? SPEAKER 5: Вие няма да може да се използва променливата I извън За контур [Недоловим]? JOSEPH: Точно така. Така че това е нещо, което ние ще се заемем с наречен по-късно променливи. Но по същество, това INT живота I извън този Докато контур. Така че след като тази линия, докато се извършва изпълнение, ще бъде в състояние да използвам по-късно на в програмата. Като има предвид с това за цикъл, този Int I е с обхват вътре в този За контур. И тъй като тя е в рамките на тази част на линия За, който започва в скобите и завършва с къдрава скоба там. Всичко, което е обявено за вътрешността на тук не може да се използва навън. Така че, ако се опитам да използвам извън, тя ще кажи ми, недеклариран символ. И по същество, аз не бих да бъде в състояние да го използвам. ROB: И добре, преди 10 години, в буквално всички случаи, фигурни скоби са това, което се използва за да се определи обхвата на променлива. Така че там, ПНА I равнява 10 е обявена във вътрешността на тази набор от фигурни скоби. И така, след толкова дълго, колкото се опитват да използват I преди това къдрава скоба, това е добре. Може да видите, когато въвеждате направи, вие виж тире, тире, STD, се равнява, c99. Така, че е по-нова версия на C, че GCC е изпълнила това също дава този пряк път. Така че това се използва, за да не се допуска в C. И можете да видите защо, защото това Int I е извън този къдрава скоба, но тя все още се счита, че е в обхват на тези фигурни скоби. Но това е много удобно нещо, и така това е добър разширение. JOSEPH: Имате ли въпроси? OK. Така че това, което е по-полезно е, че понякога искате нещо динамика в си линия, нали? Вие не искате да отпечатате само непременно напълно смахнат през цялото време, можете Искам да отброява от 10 или нещо такова. И така можете да използвате брояч променливата във вътрешността на тази линия, както добре. И в този случай, тази програма само отброява от 10 по целия път надолу. И това, което не го отпечатате? Тя не се отпечатва нула, Точно така, защото, когато - Да, също така не се отпечатва 11. Така че не се отпечатва нула, защото, когато I е равна на нула, не забравяйте, тя се оценява състоянието преди тя отива на за изпълнение на тялото на цикъла. И когато е нула, това е невярно, така тя не разпечатате отброява нула, тя просто отпечатва броене намалял с 10 по целия път надолу към 1. Ако ние всъщност исках да отпечатате нула, След това ние ще постави знак за равенство след това по-голяма, отколкото знак. OK. Така че един от начините да направите валидиране вход, който е, когато ти поиска от потребителя да направи нещо, което искате да се уверете, че те следвайте инструкциите ви, е да се използва примката Макар, нали? Така че в този конкретен случай, аз ви питам за положително число и тогава аз съм чака за вход. И тогава аз проверих Докато входът е по-малко от нула, да ги питаш. Така че, стига да ми даде номер че не е положителен, да питам, продължават да питат, да питам. Но това, което е нещо странно в това? Или това, което не изглежда оптимално за тази структура точно тук? Някой? Да? SPEAKER 6: Вие сте повтаряне инструкцията два пъти. JOSEPH: Точно така. Така че ние имаме две ФОРМАТ отчети тук, нали? Така че има начин бихме могли да получите това само до един, че ще направи нашия код по-лесно да се чете и малко по-чиста. И тогава ние не би трябвало да Вземи са в два пъти по-добре. И един начин можете да направите това е с помощта на Do-Докато контур. И Do-линия, докато е в основата на различна форма на една линия, докато, когато каквото и да е в рамките на фигурни скоби се изпълни поне веднъж. Така че тук, аз декларирам, вътр вход, извън първия. И тогава казах, направи това указания, докато вход е по-малко от нула. Така го удари на Do първи. Тя винаги ще се изпълни това най-малко веднъж, така че винаги ще поиска от потребителя за въвеждане на най-малко веднъж. И тогава го оценява, че вход, и продължава в кръг. Да, въпрос? SPEAKER 6: Има ли начин да го направя [Недоловим] видове, като, ако ви кажа, GetString, и някой [недоловим] има ли начин да [недоловим] JOSEPH: Така че въпросът е, има ли начин да се направи валидиране вход, ако потребителят не поставя в правото тип на променлива? Така че, ако ние питаме за едно цяло число и те ни даде низ вместо. И във функциите, които ние приложат за вас, GetInt, GetString във всички тези функции, те всъщност вече направи такова основната входно тип валидиране под капака. Така че, ако сте с помощта на функциите, които ние ви е дал, вие наистина не се налага. Но ако искате да изглеждате по-как всъщност можете да направите това, можете да погледнете под капака на файла I/O-- не подаде, стандартните I / O функции като четене от стандартния вход и стандартния изход. И вие можете да получите по-добро чувство как можете да направите това. ROB: Един въпрос, обаче, е специално с примера ти Казах, че се очаква низ и аз въведете вътр. Как да ви кажа разликата между умишлено искат на низ 123 в сравнение с желанието на вътр 123? Така низ, това е доста много, че няма валидиране, това е просто каквото си вписано ви ще интерпретира като низ. Int е по-лесно, защото без значение на вход ви отведе от потребителя, вие сте винаги като низ. И така, че низ след това можете да проверите, всички сме от тях всъщност числови цифри? JOSEPH: OK. Всякакви въпроси относно Do-линия, докато? ROB: О, и това е също така - Връщам се обхват, донякъде обща грешка се опитва да използва някой местен променлива от рамките на този Do-Докато контур във вътрешността на това състояние. И всъщност, ако ние просто се отърва от това и каза, вход вътр равнява GetInt, компилаторът ще крещя ни, защото вход не съществува извън обхвата на тези фигурни скоби. JOSEPH: И това е защо ние нужда от този състав тук. OK. Така че можете да се измъкнат от контур рано, ако искате да. Това е различен начин на прилагане на това, което ние просто изпълнява. И вместо да се използва състоянието в рамките на скоби, ние сме с помощта на Ако изявление вътре в тялото на контура на Do-малко. И в общи линии, когато на входа е най-накрая по-голяма от нула, ние ще се измъкне от примката. И така, ние ще отидем по целия чак дотук. И вие можете да видите, че това би вероятно да бъдат предпочитани в този сценарий, защото това е малко малко по-чист и по-малко малко по-лесно да се чете. Като има предвид това, сортиране на има допълнителни линии в нея. Това е само малко по-грозна, Предполагам, че, в известен смисъл. Да, въпрос? SPEAKER 4: Ще пробие получават само ви от един набор от скоби? JOSEPH: Точно така. Така че въпросът е ще се счупи само можете да получите от един цикъл? И отговорът е да. Така че, ако са вложени за цикли, за Например, ако имам За Int I е равна на 0 до 10 и след това в продължение Int J е равно на 0 до 10, ако се измъкнат от вътрешната контур, аз все още ще отидете към външния контур. Така че ще продължаваме да изпълните операции от външната страна. Всякакви въпроси за това? Да? SPEAKER 5: Но счупи само функции за фигурни скоби, не за друго твърдения? [Недоловим] JOSEPH: Така че въпросът е ще се счупи функция само за линии, за разлика от други твърдения като ако? И да, това е така, защото ти счупи от една линия, нали, в известен смисъл. ROB: В по-голямата част от случаите, това е това е вид Ако нещо, а след това почивка. Така че не трябва да се прекъсне, за да се прилага за , ако това се увиват около нея. И също така, това не е много на една линия, но не забравяйте, че ключове са също избухнала на по-паузи. Видяхме почивки се използва с ключове преди. JOSEPH: И вие можете да ги използвате Докато в примки и За примки. Някакви въпроси? OK. Така че следващият е функции. Така че може би сте използвали една от тях BYOB блокове във вашия Scratch проект. И това в общи линии позволява да определят набор от инструкции трябва да бъдат следвани. И това, което искам да кажа от това е, нека помислим обратно към математиката, нали, алгебра. Вие имате това, което ние наричаме функция на х, някаква променлива, и нека да кажа това функция е е на х е равно на х плюс 5. Така че можеш да се сетиш е на х, тъй като това черно кутия, която отнема 15 в и след това произвежда 20. Така че, по-общо, една функция е нещо, което отнема няколко входа и след това произвежда някои изходи. И защо са функции добър? Те са добри за редица причини. Същото прави и някой иска да вземе хладно оръжие на каква организация означава? По отношение на това защо функции са полезни? Да? SPEAKER 4: Той прави код по-разбираемо. JOSEPH: Точно така. Така че едно от нещата е да го прави кода си по-разбираемо, нали? Вместо да се налага като Int х е равно на х пъти х пъти х, мога да имам куб на х, което е по-разбираеми и по- разбираем за читателя. Организация е и по отношение на разделяне на вашия код в управляем порции, така че вместо да се опитва да приложи всичко това в един дълъг участък в основния, можете да вид го разделим в подобно, ОК, нека да напише функция да кубчета нещо, нека да напише функционира до площад нещо. По този начин можете да го разделим на малки, малки части, които можете да се справи като вместо да се опитва да се справи с голям проблем, всички наведнъж. ROB: Или дори и малки, малки части, които вие и партньор може да се справи. JOSEPH: Да. ROB: Така че, вместо на двете Да не се опитваш да се имплантира едно функционира в същото време. JOSEPH: Опростяване. Всеки, който иска да вземе едно предположение? Да? SPEAKER 5: Повече повторения. JOSEPH: Точно така. Така че едно нещо, което можете да правите с опростяване е, че тя е нещо по същите линии като повторна употреба е, че веднъж пиша куб функция, мога просто използвайте, че отново и отново и отново отново в моята програма, вместо да пишете х пъти х пъти х над и отново и отново. И тук също опростяване просто означава, че тя прави своя код за вид по-лесно да трасира веднъж разделите това нагоре в функции. Защото тогава можете да локализират къде проблемите си вид са. Някакви въпроси? Така че, друга идея е абстракция, нали? Тази черна кутия. Както знаете ли какво прави GetInt да получи съдействие от страна на потребителя? Ние наистина не са ви казах, нали? Всичко, което съм ви казал, е GetInt прави точно това, което тя казва, че е така. Така че, дори ако не ви кажа как тя работи, вие все още знаят. Така че в този конкретен случай, това е четворна функция, която прави различни неща за вход да произвеждат продукция. И вие можете да учетвори редица като се умножи по четири. Или можеш, което ние наричаме малко го смени по две. И ние ще разгледаме този малко по-късно. И няма нужда да знаете как това функция всъщност работи толкова дълго, колкото работи, както е посочено. Така че под капака, мога да бъда като се върнете входни пъти осем, разделено на две. И вие няма да знаете, нали? Всичко, което трябва да знаете е, тя прави това, което казва. Така че това е полезно нещо за абстракция. И още нещо е нещо на тази идея локализирането на кода си за един специално раздел. Така че, ако имате проблем, не знаеш Трябва да вървя цял вашия код опитва за да се определи къде е проблемът беше. Така че в този случай, въведох кубчета погрешно. Мислех куб бе умножаване от три. Така че в този случай, това е една програма че току-що се е умножи по три навсякъде. И там е друга програма, която има заложен куб навън в една функция. И така, сега, ако аз искам да поправя грешката си тук, аз трябва да се определи всеки един ред от код в тази програма. Като има предвид, от друга страна, ако използвате функция, аз само трябва да се промени какво не е наред на едно място. Така в областта на компютърните науки, ние наричаме входове и изходи. Входове се наричат ​​параметри или аргументи, и изходи, се наричат връщат стойности. И ние ще видим как това ни помага сортиране на определяне на функция в секунда. Така че това е дефиниция на функция за джуркате. Така че е необходимо за въвеждане, и след това той се връща този брой пъти се три пъти. Така че нека да се разбие. Така че ние имаме един удар с глава на функция, която състои основно от три неща. Така че ние имаме параметрите, които са, както казах и преди, вложения в тази функция. И след това ние даваме на функцията име. В този случай, тя се нарича куб. И тогава ние се уточни какъв вид на върнатата стойност е. Така че в този случай, мой куб функция се в цяло число и също връща цяло число. Така че, ако премине в два, два е цяло число, той се връща осем до мен, което е цяло число. Така се върне тип параметри име. Въпроси за това? И след това на върнатата стойност е всъщност определен в края, като казва връщане и след това се връщат каквото съдържа стойността на замяна. Така че в този случай, ако ние я тури всички заедно, функция отнема в параметри, тя се нарича нещо, и връща нещо, което е от вида че ние казваме, че ще бъде. Някакви въпроси? И как ще се използва функция? Е, ние пишем функция и след това ние го използваме в нашата програма, нали? Така че аз го нарече куб, и тогава мога да използвам куб. Но това, което е важно да се отбележи, е, че въпросите за поръчки. Ако имам куб под главната, това е Ще се сблъскате с куб. И в този момент, няма нищо наречен куб в програмата, и това е просто ще бъде като, имам никаква представа какво е куб. Така тя ще ви каже, имплицитно декларация на функция. Това е грешката, че се появи. И така, в този случай, на кубчета е под Основната, така че не става да знае за това. SPEAKER 5: Така че основната е обикновено дефинирани последната функция? JOSEPH: Така че въпросът е, е главната обикновено последната нещо, което ще се определи? И никой. Това е така, защото ние обикновено искали основната да бъде на върха, нали? Защото това е първият ви нещо искат отваряне на програмиста програма, за да се види. И така, как да се реши този проблем, ние от Искам Основната да бъде на върха, но функции, които искаме, ние ги искат да бъде под основната все още да може да се използва ги вътре в главната? Е, ние използваме това, което ние наричаме функция прототип. Така че това, което е функция прототип по същество се е за първи път отнема това, което подписването или заглавието на функция от това, което ние искаме да приложат надолу тук, и ние го постави в върха на програма. Така че в този случай, ние казваме, че, добре, по-късно в нашата програма, ние ще да направи обещание да приложи тази функция, наречена вътр куб, който взема вход число. Така че сега, защото това е над основната, Основната, той ще каже, ох, добре, по-късно в програмата, която ще бъде там, така че аз може да се отнася до него, така че аз ще Просто го оставете да мине през за сега. И след това в долната част, ние прилагаме куб. И тогава основната просто ще кажа, добре, че ще се справи на връзка тези два символа заедно. И ние ще разгледаме какво е това означава по-късно. И така ще знаете, че това е най- куб функция, че трябва да използвате. ROB: The [недоловим], че иска Основната в дъното или отгоре, аз съм виждал и двете. Има неща, които просто обичат да се сложи основна в долната част. Но след като даден проект получава особено голям, обикновено е в основната подаде всички свои собствени. И в този момент, като Int куб линия би - вътре stdio.h един куп на линии просто ей така Int куб вътр линеен вход. И така тези прототипи са неща, които можете са склонни да поставят в заглавни файлове, най- която точка, това няма значение. Е, това няма значение. Тези, които винаги вървят в горната част. И ако основният не е файл всички свои собствени, не е нужно да се притеснявате за пускането отделните функционални прототипи във файла. JOSEPH: И ние ще стигнем до това малко Малко по-късно, когато Роб започва да говори за съставяне. И така, има и разлика между параметър и аргумент. И параметър е точно това, което ние наричаме тези входове, когато дефинираме функцията. И ние го наричаме аргумент, когато ние всъщност тя да премине в функцията. Така в този случай, това е параметър, както казахме преди. И когато ние всъщност го използва там, куб на х, то х е само по себе това, което ние наричаме аргумент на куба функция. ROB: Така че аргументи параметри са - има тази разлика, много объркани взаимозаменяемо. В този момент, за мен, това е като един от тези думи, че когато аз го виждам в дивата природа, не мога да помогна, но веднага въпрос дали те са го използвате в правилния контекст, понеже разликата е достатъчно коварен, че само всеки има тенденция - Аз почти винаги казвам аргумент независимо от това, което искам да кажа. Йосиф и функции също са полезни за това, което ние наричаме странични ефекти. Така че една функция може да не се предприемат входове и то също може да не произвеждат продукция. Така че в този конкретен случай, аз съм определяне на функция, която не върне стойност. И за да се уточни, че, ние използваме това, което ние наричаме празнота тук. И така страничен ефект на тази функция е, че тя просто отпечатва неща до страницата. Тя всъщност не поема никаква входове, и то не всъщност предизвиква никакви изходи. Но това може да бъде полезно в смисъл ако искате, например, отстраняване на грешки нещо във вашата програма, ако искате да пиша малко подпрограма, че отпечатва, да речем, съдържанието на паметта или нещо такова. И така тези странични ефекти, които понякога са полезно извън контекста просто искал входове и изходи. Някакви въпроси? И за да се сложи край на това определен сегмент, какво прави тази програма да направя? Ще ви дам няколко момчета секунди, за да четат през него. На много базово ниво, което искаме да кажа, е, че той суапове х и у, нали? Така че колко от вас всъщност мисля това ще сменяте X и Y? Вдигнете ръка. Никой. OK. Кой си мисли, че това ще стане не сменяте X и Y? И сумата на която беше не цялото помещение. Така че някои хора не са сигурни. OK. Това е разумен. Така че нека да мине през това, което се случва, когато всъщност наричаме функции на първо място в За да се отговори на този въпрос. Така че това е, което памет вид прилича. Това е нещо като опростен модел от това, което изглежда като памет, когато стартирате програмата. Така че има нещо, наречено стека тук и нещо, наречено на куп. И те растат в посока средата на паметта. Така че в този конкретен случай, когато ти се обадя функция, тя получава сложи на купчината. И след това каквото се съдържа в тази функция остава в това, което ние наричаме това стека рамка функция на. И така, за да получите хубава визуализация на това, let's - например, имахме Основната програма по-рано. И вътре в основната, се обадихме куб. Така че основната би първо да отида в стека рамката, защото това е първата функция това се нарича. И тогава, когато куб се нарича вътре Основната, той се поставя на върха на главната вътрешна памет. Така че това, което ще забележите, е, че куб има свои параметри и неговата собствени местни жители. Така че, когато вие всъщност минава нещо, което да функция, параметрите, че получава са копия на това, което беше премина в от основната. И някак да се обясни това, нека ходи чрез програма. Така че ние имаме комина; това е само частта стак. И това, което правим е, че ние първо се инициализира X и Y една и две. Така че ние имаме тези малки кутийки. Те седят в стека основната си рамката на стека. Те съдържат една и две. Сега ние наричаме суап. Какво се случва, е, че ние премине х и у в суап, и суап създава свои собствени копия на тези променливи, които да се използват вътре на своя стак рамка. Така че сега там, ние имаме една, която съдържа стойността, която X има и В, , която съдържа стойността, която у имал. Така че една, две. И вие ще забележите, че това е отделен от х и у вътрешната страна на главния. Така че ние сега се създаде временна променлива да съдържа. Ние си поставяме, равна на В, така че промени от един до два. И след това ние се създаде б равен до температура, която е една. И тогава вече ние излезете на тази функция. Когато излезете от функция, стека рамка получава изскочил от стека. Наричаме го натиснете. Можете да натиснете стека рамка върху купчината и поп, ако от стека. И така, това, което се случва, е, че всичко, Именно в този стак рамка нещо просто отива в пламъци. И така, че вече не съществува. Но какво ще забележите? Ние всъщност никога не се променя стойности на х и у, нали? Така че тези, които останаха местно до главната. И чрез преминаване неща в замяна, ние всъщност никога не е променила тези ценности. И какво ние наричаме това? Ние наричаме това преминаване по стойност. Така че в C, когато премине неща в функции, той ги предава по стойност и прави копие от тях за функцията за използване. И ние ще научите за нещо, наречено преминаване от справка по-късно, но това е начин можете да решите този проблем. Но ние няма да се притеснявате за че докато по-късно. ROB: И всъщност, това понятие, минаваща чрез препратка, така че C дори няма преминаване чрез съотнасяне. С изключително е преминаване от стойност. Без значение какво правиш, винаги сте минаваща копие на нещо. Това е точно това, сякаш съм нещо като споменах че преди с указатели и че един низ е наистина само четири байтове сочейки някъде в паметта. Е, ако имам този низ и това е ми каза, че е мястото, където низ - добре, ако имам този указател към този поставите в паметта, а след това може да премине на копие на тази указател към функция, и тази функция все още не знае къде в памет е то. Така че и двете от тези насоки са насочени на едно и също място в паметта, и това е как ние ще бъдем в състояние да се променят нещата отвъд текущата стека рамка. JOSEPH: Искате ли да се направи събиране? ROB: Не, това е 05:30. JOSEPH: OK. Това е 05:30. OK. Така че ние ще покрива съставянето Предполагам, че в следващия раздел, или си част Лидер ще в този момент. И - ROB: Имате ли въпроси? JOSEPH: Имате ли въпроси? Да? SPEAKER 5: Използване на низове от CS50, всеки функции, които искаме да се използва за тези, които ще бъдат като C функции. CS50 не е отишло в и направи допълнителна. ROB: Правилно. Всеки на C като [недоловим], можете ще използва тези на нашите струни. JOSEPH: И едно последно нещо, което искам да се споменава, е, че ние имаме ръководство за стил за този клас. ROB: О, да. JOSEPH: Така че, ако сте се от програмиране фон и преди, може да има определени конвенции, когато пишеш код като пускането скоби на една и съща линия или конкретни начини на редовете или именуване на променливите си. В този клас, ние искаме да следваме специфичен стил на ръководство, просто защото, добре, ако излезеш и да работят в промишленост, ти започваш да се очаква, да следват ръководството на стила на компания, на която можете да отидете. Като например, Facebook мисля, има особен вид именуване конвенция. И има разлики между камила обсадни променливи и точно като отделяща ги от подчертаване. И също така, мисля, че най-важното е, че като за пример, отстъп, нали? Ние фигурни скоби се появяват, когато състоянието е, и те са на следващия ред. И ние също така да сложите фигурни скоби в дори ако това е само една линия. И много пъти, има начини да се правят то, където можете да оставите тези тиранти отстъпка, ако това е само един ред в рамките на изложението If. Но в този клас, ние искаме да следваме специфичен стил на ръководство само така можете да получите използва за такива неща. ROB: Да, и Style 50 ще прилагане на това ръководство за стил, и ние сме Ще използвам Style 50 до степен на кода ви. Така че това прави нещата по-лесни за нас и надявам се не трябва да правят неща, които много по-лошо за вас като се има предвид стандартизиран стил не трябва да бъде, че нереалистично. JOSEPH: И най-накрая, да се намери стила Ръководство, отидете на manual.cs50.net/style. И да. SPEAKER 4: Смятате ли да наложат никакви символи на ред? ROB: Да. JOSEPH: Съжалявам, момчета. ROB: Това е като един от единствените. В този момент, аз съм ОК с 120. Аз съм ОК с казвайки 120 символа на ред. Разбрах, че е някакъв лимит. Мисля, че 80 е толкова малка, но ние сме го налагане. JOSEPH: Лично аз мисля, че с C, 80 знака е по-ОК. След като започнете да получавате до друг езици като JavaScript и PHP, а не така разумно да се ограничи само то до 80 символа. OK. Е, това беше супер секция. Някой иска бонбони? SPEAKER 4: Да.