ROB Боудън: Това е най- по-удобно раздел, но това не означава, че ако Чувствам се като ти не си по-удобно няма да се научат неща тук. Така че нека да започнем. Имате ли пързалки няма право в нещата. Am I за да просто да го вземе точно сега? Превключване лаптопи. ALLISON: Вие не искате да въвеждане на себе си, Роб? ROB Боудън: О, аз съм Роб. Това е петата ми година TF-ING CS50. GABRIEL: Аз съм Гавриил. Аз съм главата TF на CS50. Бях TF миналата година и тази година. ALLISON: И аз съм Алисън, а това е моята втора година TF-ING CS50. ROB Боудън: Добре, така че това нещо в ляво, се надяваме, че съм го виждал преди. Ако не е, защото го изтеглите за себе си, би трябвало да сте го виждали в лекция. Така че това е най-CS50 уреда и той Направих нещо като описание на това в лекция. Но в общи линии това е точно за вас използвате операционна система в рамките на вашата операционна система, така че ние може да ви даде програми, без да е необходимо да се притеснявате, о, е това ще работи както на Windows и Mac, или ако някои от вас са вече използват Linux, Linux. Това е просто трябваше да бъде обща игра поле, така че всеки има точно същата среда. Така че, ако не сте го направили изтеглили тази вече, трябва да го изтеглите, защото сте ще се нуждаят от нея за набора проблем. И това е два гигабайта изтеглите, така че това може да отнеме известно време. От Харвард тя ще отиде бързо. Така CS50 уред. Сега в началото, ние ще говорим за просто един куп командния ред неща, и така от това, искам да кажа работи в тази малка среда тук. И забележи всички неща Аз казвам точно тук точно сега ще работи, ако сте вътре терминал вътрешността на уреда, или ако сте вътре прозореца на Gedit терминал вътрешността на уреда. Така че тези среди са идентични. Но аз ще отида трета маршрут. И забележи тук тази малко IP адрес тук. Така че не е нужно да се направите това, но това IP address-- сега, ако I-- освен той е блокиран от това нещо. ОК, така, че IP адрес повече в терминал here-- така този терминал над тук е терминал в моя Mac. Така че това е по никакъв начин в момента свързани с уреда изобщо. И ако сте на Windows, а след това сте ще трябва да изтеглите нещо специално за това, по-специално хората са склонни да използвате Putty, P-U-T-T-Y. Така че това, което аз ще направя, е вид SSH и след това, че IP адрес. Е, jharvard в този IP адрес. Така 192.168.24.220. Това страшно съобщение, игнорирайте го. Просто напишете да. Това е CS50 в кутия. Тя пита за вашата парола. И така, в много от тези ситуации, където той пита за парола, [недоловим]. Имаме много въпроси, когато това е тя казва, че всъщност не е типичен. Тя не ви покажа героите на паролата, докато пишете, ако не друго, за функцията за защита, защото ако някой търси през рамото си и те виждат звезда звезда звезда звезда, а след това те Знам, че си парола е четири символа. Така че идеята е, че ще поиска ви за вашата парола, тип. Това няма да се покаже ти героите, но всъщност ги приемат. В този случай, всеки ти време някога подкана за парола занимаваща се с уреда, на парола ще бъде червено. Така пурпурно. И сега тук, вътре в този прозорец, който е в моя Mac, Аз съм основно като точно същата гледка както вътре в терминала в уреда. Така че не е нужно да правите това. Можете да направите всичко, което искам вътрешността на уреда. Аз почти никога не правя нищо в уреда. Аз почти винаги се сведе до минимум, че и сега Аз съм на работа SSH в уреда. Ако не друго, ако имат по-бавен компютър, можете да забележите разликата. Аз правя това, защото аз предпочитам този терминален прозорец. Той има и някои функции, като Мога да разделя прозореца, и сега мога да SSH в през уреда. Имам две SSH става наведнъж. Ако компютърът ви е особено бавен и вие работите в уреда, и ти осъзнаваш, че това е наистина laggy, независимо. Претендира да е много по-бързо ако сте SSH-ЕД вътре. Но в противен случай може да работи така или иначе. АУДИТОРИЯ: Какво SSH означава това? ROB Боудън: Secure черупки, нещо подобно? Какво SSH означава това? GABRIEL: Secure Shell. ALLISON: Това е просто защитена обвивка. ROB Боудън: Secure Shell. Това е протокол, който you-- е сигурен протокол, така кодирано. Хората не могат да Snoop мрежата и виж какво можеш да кажеш за нещо сте SSH-ЕД да. И в действителност, в по-стари дни от CS50, така че през 2009 г. когато бях първокурсник, начинът, по който сте работили на CS50 проблемните комплекти, ви е SSH-ЕД в някаква сървъра че дадохме възможност за достъп до тях, и сте работили там. Така че не сте имали тази графичен уред. Вие не трябва Gedit. Вие не трябва всички тези неща, които можете да визуално точка и натиснете. Трябваше да работя в този интерфейс. Аз предпочитам да работя в този интерфейс. Така че част от това, което ще да се стремят към по точно сега един куп на команди, които трябва да да започне да се запознаят с най- отидете заедно в курса. И честно казано, след като свикнете с тях, толкова по-бързо работят в тази среда отколкото да се работи с търсачка, плъзгане и кликнете върху неща. Така че ние сме тук. Сега просто SSH-ЕД в, и така по подразбиране ви location-- Видях някои от тези команди в клас, но ние ще отидем всички от тях отново. Местоположението по подразбиране сме в е собствената директория. И директория, просто друга дума за папка. Така че ние сме в началната директория. Въведете ли, списък на файловете в тази директория. Очевидно съм създал blah.c рано. Така че ние имаме един настолен директория. Вие забележите оцветяване на синтаксиса? Светлосиният открояването показва директория и правата бяло показва просто обикновен файл. Така че там ще бъде някои други цветове, които виждате. Изпълним файл вероятно ще да бъде зелен или нещо подобно. ОК, така че ние сме в началната директория. Сега, ако искам да отида в друг директория, CD е командата, което искам. Така промените директорията, и след това премине на името на директорията че искате да отидете в. Така че тук имаме четири опции. Мога да отида на изтегляния, а сега виждаме, тук е актуализиран този вмъкнат да кажа, че съм в ~ / сваляне. Така че това, което е тилда? Това е съкращение за вашата домашна директория. Така че почти всичко, което правите ще се да бъде по отношение на вашата домашна директория, и хората с увреждания е само команда Аз използвам веднъж в годината, в която просто отпечатва текущата директория. И така, вие виждате, че тук ~ / Сваляне наистина разпознатите да / дом / jharvard / сваляне. Така / Начало / jharvard е моята домашна директория. Така че ние можем CD разпръснати точка. Сега точка точка е специална директория винаги се отнася до една директория нагоре. Така че, ако аз съм в ~ / сваляне, тогава CD точка точка ще ми донесе да Тилда. Какво мислим CD точка точка ще ме отведе до сега? Това ще ми донесе да / дом. Така Тилда от печат работна директория, Аз съм в момента / Начало / jharvard. една директория нагоре от това, Сега той казва тук / дом. Сега CD точка точка. Сега съм в главната директория, и вие не може да го направи отново. Вие просто ще остане в кореновата директория завинаги. Кореновата директория разполага с цял куп неща, които, ако искате да разгледа, можете. Така например, ако отида в контейнер, който съдържа всички тези бинарни файлове, като LS, и CD, и всички тези неща. Така че тези команди трябва да съществува някъде в системата, и това е в директорията / бин. Но почти всичко, което правите е ще бъде от вашата домашна директория. И CD без никакви аргументи да било, може да се каже CD ~, не е нужно да. CD ще ви донесе обратно към вашата домашна директория. Един последен един. CD - ще ви върна последната директория, че си вътре. Така че аз просто cd'd два пъти в един ред, така че моят последната директория е собствената директория. Ако отида да намали бин, а сега нека да отиде и в употреба. Потребителят акция. Нека да отидем на потребителя акция. Сега съм вече в потребителското акция. CD -, отново в боклук. Така че това става особено полезно когато have-- и това ще включите. Така потребителското акции, обратно бин, акции за боклук. Така че това става полезен. Можете да откриете себе си като много, много, много вложени директории. И вие искате да направите нещо много бързо в горната директория. Отиваш в тази директория, уверете промени и подобни неща, и сега искате да отидете обратно до мястото, където сте били. CD -. Винаги съм разочарован когато се случи да отида за тази директория I Исках да си върши работата вътре. Аз винаги се разочароват, когато го направих то в две стъпки, вместо на една стъпка, защото това означава, че CD - ще да въведат в това междинно място вместо на мястото, където искам да отида. Така ние виждаме всички списък файлове. Ние знаем как да се получи около досега. Така че сега, нека да говорим за редактиране на файлове. Така че в този курс, вие сте почти винаги се очаква да използват Gedit. Ако искате, можете да се предприеме следващата стъпка и започнете да учите текст командния ред редактор. Така че съществуват различни възможности. И тези, които са вероятно ще бъде от значение за вас, имаме Nano, Vim и Emacs. Така че Nano е начинаещите командния ред текстов редактор. Така Nano да вървим по blah.c съм създал по-рано. Това е просто, този стандарт C файл. И вие виждате един куп неща става в долната част на екрана, и очевидно blah.c съдържа тази C код. Така че в този конкретен редактор, това, което казва в bottom-- сега тази карета символ, виждаме това ^ G, ^ X, ^ O. Така, че в почти всички контекст, който виждате, може да се види, че каретата символ други места онлайн, за Stack Overflow, нещо подобно. Той почти винаги се отнася до контрола. Така че, за да излезете искам да направя Control X. Control X, излиза. И мога да използвам моята стрелка клавиши, за да се движите. Забележете, че не мога да се отбележи и кликнете лесно. Вие трябва да използвате стрелките клавиши, за да се движите. Може да има настройка да се отбележи и кликнете. Но нека да се направят някои промени. Сега Control X да излезете. Той ще каже, освен променения буфер. Сега бързо, Y, за да п за не. Control C за отказ. Аз просто ще кажа да. Име, за да напишете файл. По подразбиране е файла че вече е. Хит Enter. OK. Сега съм просто редактира този файл, той е спасил и е променил. Така че Nano е най-лесният текстов редактор свикнеш. Алтернативите са Vim и Emacs. Тези, които са по-високи нива на текстови редактори които имат много стръмен кривата на обучение. Така че, моето лично предпочитание е Vim. И това има голямо разнообразие от възможности. И след като веднъж свикнете към него, че никога няма да искате да отидете на всеки друг текстов редактор, защото просто има толкова много неща, достъпни за вас в тези, но това отнема много дълго време, за да се научат. Така че може би просто искате да накарате себе си точно сега, за да свикнете с него, но бих казал, че си струва. Но това е трудно. И тогава Emacs. Аз винаги се бори в Emacs, защото Знам как да направя абсолютно нищо. Очевидно Emacs не е по подразбиране инсталирана на уреда. Ние вероятно ще добавя, че като инсталации по подразбиране. След като се научат един от Vim или Emacs, има не основателна причина да всякога се учат, от друга, но това е напълно различен стил. ОК, така че това е редактиране на текстови файлове. АУДИТОРИЯ: Ако сте били остана в Vim точно сега, как we-- ROB Боудън: Има множество режими в Vim, и има цялата уроци за учене Vim. Така че, ако ви се случи да бъде в режим на вмъкване за да въведете текст, който можете да влиза, че по различни начини, но аз как можете да получите в режим на вмъкване. В или да излезе от някаква специална режим, който вие сте, просто избяга. И просто Баш избяга, за да получите от всички вложени режима си вътре. Просто OK, сега съм обратно в нормален режим. И така в нормален режим, на дебелото черво. Вие виждате, че се появи в долната част. И след това р. Така Q ще се откажат, ако сте направили промени, които I-- направих промени? Аз направих промени очевидно. Така че, ако сте направили промени, тя ще казват, че може да се сложи удивителен знак. Отивам да го наречем гръм и трясък. Така че можете да сложите забрана просто откажат, без да прави нищо, или дебелото черво WQ ще спаси и напусна. Така w като цяло е да напишете. Така пише файла. Мога да пиша и да се откажат. Или пък може да има само QX шлем, р взрив просто да се измъкнем от там, независимо за всички промени, които сте направили. Добре, така че нека сега go-- можем да създадем файлове. Нека започнем премахване на файлове. И аз просто ще се хвърлят в една бързо нова команда, докоснете. Така се докоснат Foo. Touch бар. Докоснете Баз. Ако аз ли, сега виждаме, че съществуват тези файлове. Те са напълно празни. Така докосване е просто един лесен начин на един, [недоловим]. Две, технически просто да посочи нея, тя актуализира времеви отпечатъци. Така че всеки файл, който можете да създадете има клеймото, свързани с нея. Така Баз е създаден на 14 Септември в 16:21. Сега е 16:22, така че ако Докосвам Баз отново, ние се види, че Баз беше най- наскоро променени при 16:22. А иначе аз почти никога погледнете времеви отпечатъци на файлове. Така докосване, тук съм само с помощта на да създаде някои бързи файлове. Добре, така че сега RM е команда, която ни интересува тук. И ние можем да RM Бу. Кажете премахнете редовно празен файл Бу. И ние можем да напишете Y, а сега това е премахва. RM Баз. Махни редовен празен файл Баз и тип N за не. Сега това не е отстранена. Така бар и Баз все още съществува. Foo е отишъл. GABRIEL: Продължавай. ROB Боудън: Great. Така че досадно съобщение тук, извадете редовен empty-- какво правиш там? Махни редовен празен файл. Така че, ако ние не искаме да бъде обезпокоени от това съобщение, ние може да се хвърли в тази -f флаг, и така че това е сила. И сега, ако аз -f РМ, това е няма да каже ли искате да премахнете този файл. Тя просто ще го направя. И ли, аз не виждам бар там. Сега е потенциално опасно команда. Тя има тенденция да не е твърде лошо. Ще се върнем в секунда как той може да получи наистина опасно. И нека да се създаде някаква временна директория. защитен режим, друга команда. Така защитен режим е заповед който прави директория. И сега, като LS виждаме тази хубава светлина синьо подчерта временна директория. Мога CD в темп. И мога да MKDIR Foo. CD в ​​Foo. защитен режим бар. CD в ​​бар. Така ние виждаме, ние можем лесно да получите в някои доста дълбоко гнездене. Сега как мога да премахна директория? RMDIR. Така че, ако аз просто направо се опитват да RM, както направихме с обикновен файл, RM бар ще казват, не може да премахне бар. Това е директория. Има специална команда за премахване на директории, вид. Така RMDIR бар. Сега бар е отишъл. ОК, така RMDIR аз почти никога не използват. Причината сега being-- нека направи обикновен файл бар тук. Така RMDIR Бу. RMDIR. Неуспешно премахване на Foo. Directory не е празна. Така че не можете да използвате премахнете реж на директория, че има неща в него. Така че има някои опции. Можете да отидете в тази директория, извадете всичко ръчно, а след това излезе и RMDIR директория. Това очевидно звучи досадно. Какво става, ако има хиляди на файлове в там? Е, бихте могли да RM *. Ние ще говорим за * в секунда. По същество това означава, че всички неща. Но още по-добре, така че RM-R. Така RM -r-- в много контексти, -r означава рекурсивни, които ние ще говорим за това, което рекурсивни средства в няколко седмици. Но това по същество означава траверс целостта на тази директория и премахване на всичко. Така RM-R Foo ще каже слезе в директорията Foo? Да. Махни редовен празен файл Foo / бар? Да. Махни директория Foo? Да. Така че сега Foo и всичко в него е била отстранена. Сега, може да се получи особено досадно when-- нека докосне 1, докоснете 2 докоснете 3. Може да има един куп файлове. Ако исках, можех да се създаде хиляди файлове тук. И RM-R Foo ще да бъде доста досадно. Да, да, да, да, да, да. С много повече от вас файлове бързо да видите колко пъти Аз ще трябва да въведете да. Е, ние просто видях преди това как можем да се отървете от необходимо да въведете да, -f. Така защитен режим дрън дрън CD докосване 1 2 3. ОК, така че RM-RF Foo ще сляпо премахнете Foo изцяло. Не ред. Не нищо. Foo е отишъл. Така че съм склонен да използвате тази заповядвам през цялото време. Това заяви, че е много опасно команда, защото ако го направя нещо подобно това, той няма да ви пита. Това ще бъдат унищожени. И това се случва доста често, и дори в по-високи нива CS курсове. Понякога ние ще видим нещо, когато някой казва, че случайно нашата RM RF-ЕД моя дом директория и всичките си P комплект е отишъл. И това е опустошително, но там не е кофа за боклук. Няма по нищо не за да можете да извлечете. Това е просто изчезна. Дори по-лошо би било нещо като RM-RF /. Така че ние просто обсъжда че главната директория. Той притежава всички файлове във вашата система. Нещата са склонни да получите доста разхвърлян когато извадите неща като LS, и CD, и всички от тях. АУДИТОРИЯ: Каква е разликата между RM, RF и RM * ROB Боудън: Така RM * - ALLISON: Въпрос е това, което е най- разлика между RM, RF и RM *. ROB Боудън: Така RM *. Star цяло посредством всички съдържанието на тази директория. Опитвам се да мисля за друг начини за показване звезда. Е, звезда всъщност обикновено означава съвпадна с нито един модел. Така че, ако аз имам един файл, наречен dog1, докосвайте dog2 докоснете КАТ1 докоснете КАТ2. Така ли * 1 се ще да отпечатате КАТ1 и dog1, защото тази звезда може да бъде попълнено в with-- този, трябва да бъде там, но те могат да бъдат или котка или куче. Това е жокер. Това е думата, която търся. Wild карта. Или мога да LS куче * и Аз трябва да се види dog1, dog2. Така че тези, които са в списъка на файловете които съответстват на този конкретен модел. Можете да използвате ли по този начин. Ls * звезда мачове нищо. Така че това се случва, за да отпечатате всички съдържанието на тази директория тъй като всички от тях съвпадат. Тя няма да се отпечата нищо в директории горните нива. Ако имам под директория, дрън, и докоснете 1 2 3-- така че сега ако RM * звезда, премахнете КАТ1, КАТ2, dog1, dog2. Не може да се премахне Foo. Това е директория. Така звездата се разширява до всички файлове в директорията. Така че технически RM * е като да кажеш, RM КАТ1, КАТ2, dog1, dog2, дрън. Като има предвид, RM-RF, технически звезда ще постигнем това, което искаме, но RM -rf-- ако излизате от този директория, RM-RF температура, че ще отиде в температурата и рекурсивно премахне всичко. Така че звезда е отделен в това, че Разбираемо е по-- така че това нещо че аз бягам в това нещо че ме накара за команди и след това се изпълнява и прави тях, аз наричам това черупката си. И така, тази обвивка себе си е програма. И ако исках, аз може да работи в / бин / Баш. Черупката се нарича Баш. И сега ние забелязваме нещо е леко променен, и това е, защото моите настройки за черупката са малко по-различен. Но сега съм технически работи черупка в първоначалното ми обвивка, и аз може да излезе, че черупката, а сега Аз съм назад с моя топ черупка ниво. Целта да се каже, че is-- звездата. Така че звездата е нещо, разбира от Баш. Така RM-RF, -rf флаг разбира от само RM. Той знае, че когато преминат -rf, че искате да премахнете рекурсивно всички файлове, без подсказване. Звездата се разбира нещо от Баш, че когато вие казвате RM * Баш няма да кажа хей RM *, извадете звезда. Bash ще каже RM * премахнете КАТ1, КАТ2, dog1, dog2. Тя автоматично ще се разшири всички файлове в директорията. И по същия начин тилда е друг символ, който Баш разбира. Когато казвате, CD ~, Баш разширява че за вашата домашна директория. Други въпроси досега? ОК, така че ние ще започнем става бързо. Tab завършване. Само за да го хвърли там. Много хора не го правят осъзнават това съществува. Така че, ако напишете CD Dow, I искам да навлизам в даунлоуд. Не трябва да въведете nloads. Мога само да се удари Tab. Така че, тя признава, че Dow е префикс, че не съвпада с нищо другаде в тази директория, така че ще завърши това за вас. Сега може да влезе. Аз също направи това рекурсивно. Така защитен режим дрън. Нека да отидем в дрън. защитен режим бар. Така че се връщам у дома директория, мога да видя за изтегляне. Сега удря раздела отново, автоматично ще попълни Foo. Това е единствената директория. Раздела Натискането отново, автоматично ще запълни в бар. Така че сега аз съм в (~ Downloads / Foo / бар). Така че това приключване раздела когато стигнах до работното време, и аз стоя над нечие рамо, и те ще RM D-O-W-N-L-O-A-D-S, аз умирам. Само в раздела, в раздела, в раздела, раздел. Така че определено използва раздела. И по същия начин и надолу, много хора точно това се е случило с Никога не съм се удари нагоре и надолу. Той ще мине през предходната команди, така че ако просто избяга нещо, и искате да го стартирате отново, просто задръжте нагоре, докато не стигна до него. OK. Така бързо и някои други неща. Нека се върнем в темп. Нека създадем някои файлове. Така че тук, аз съм просто няма да се изброят няколко думи. куче, котка, мяу. Нека да направим куче, риба. Така че сега представител е много полезни команди, които можете използвате, за да търсите в цялата файлове за конкретен текст, и технически можете да направите наистина сложни изрази за да съвпадат. Така че тук, ако аз Впиши и какво искам да търсите? Да кажем, че аз съм търсите за котки, и Искам да намерите всички тези файлове. И така, как мога да направя всички тези файлове? Star. Така че в един файл, имам котка. Вероятно може да има го нарече нещо по-добро, защото това изглежда като линии номера или нещо такова. Но в един файл Имам линия с котка. В файла две Имам линия с котка. Така че сега мога да погледна вътре файл един и виж О, да, този файл е имал котка. Известие файл три не е съвпадение защото котката не е там. Мога да Впиши за мяу. Подаде само две има мяу. Така че това можете да комбинирате, отново с -R, което както казах и преди често означава рекурсивно. И така мога да дойда до тук, Впиши -r за всеки случай of-- нека да редактирате това просто да се хвърлят котка там. Така Впиши-R за всеки случай на котка през тази директория. И това ще рекурсивно търси в поддиректории. Така че в Баз, има котка. При температура / 2, има котка. И за температура / 1 има котка. Така че това е търсене във файлове. Сега можете да използвате находка. И така се намери е конкретно за търси за файлове с име. Така че нека да направим още. Нека да отидем в даунлоуд. Докоснете dog1. Докоснете КАТ2. Докоснете cat_dog. Докоснете catcat. Така че аз искам да се намери всичко файлове с куче в името. Така се намери, и за най-дълго времето никога не се сетих как да намерите работи, докато най-накрая прочетете нещо, което направи толкова ясно. Така се намери, автоматично рекурсивно. Не е нужно да премине -r. Така че намери точка. Ние не сме говорили за точка все още. Като има предвид, точка точка винаги означава една директория нагоре. Dot винаги означава текущата директория. Така че мога да RM -r точка в същия начин мога да RM -rf *. В крайна сметка те постигне едно и също нещо. RM-RF точка ще премахне цялата текущата директория. OK, което аз не искам да правя там. Но намери точка. Така рекурсивно търсене на ток директория, и сега всичко след това са куп знамена, които можете използвате, за да се изключи неща от връщането. Така че намери точка връща всичко, което го може да се намери от текущата директория. Това са всички файлове рекурсивно търсене. Ще видите някои от тези в секунда. Но в случай, че се чудите как да направя това, така че Command K, най-малкото в моя терминал в Mac изчиства. Control L обикновено изчиства то за всеки вид терминал. Можете да напишете ясно. И ако някога се в странен scenario-- това се е случило с мен няколко time-- където цветовете на вашите подкани всички са побъркани, или не са в състояние да се види нищо е въведена, когато сте да пишете, защото понякога като фон цвят се настройва същият като цвета на преден план и сега не можете да видите шрифтовете. Reset е нещо, което просто връща да по подразбиране черен фон, бял отпред, или каквото и зададете тях. Така че, когато ние бяхме? Намерете точка. Така че сега всичко покрай това точка ограничава резултатите за нещо, което отговаря на даден модел. Така че тук искам да търсите всичко с името на котката. Аз нямам нищо. Защо това е така? Е, аз съм просто търсите нещо с точно име котката. Ако искате да търсите нещо че има някакъв модел, и cat-- кавичките технически не са необходими, но аз съм ги хвърлят там. Така че сега установи catcat защото това е единственото нещо, което има някаква произволна модел, последван от котка. Мога да сложа котката *, а сега намерите catcat, cat_dog, КАТ2, защото това са всички неща, с котка в началото, последвана от нищо. Можете да комбинирате. Ако искате да търсите за всички C файлове които имате, можете да направите * .c. Ние сме blah.c тук. Така че това е търсене произведения. Можете да търсите. Той има един куп знамена за допълнителни ограничения. И един от тях, да кажем -d. Така отхвърлена. О, това не е това, което искам. Не -d. Вид г. Така че намери точка - тип г. Така че, какво точно е направил е, че аз съм търсене за всички файлове в текущата директория с A-- г означава directory-- тип указател. Това връща всички директории в текущата директория. И тип F е всички редовни файлове, всички не директории. Така че това е просто пример за други начини може да ограничи търсенето друг не само името на файла. Той е бил на 30 минути. Все пак става. ALLISON: Ще бриз през. Той ще се оправи. ROB Боудън: Значи някои други неща. Сега взрив, удивителен знак. Така че като цяло means-- добре, нека да видим един пример. Така е!, Какво е това смяташ да правиш? Ами това изглежда да има повтаря находка точка -тип е. Какво ще кажете! Гр? Това просто Впиши -r котка *. Така взрив можете да използвате, за да повторите наскоро направи команда. Така че, ако пиша! GRE, че ще пуснете отново командите, които са започнали с най-GRE наскоро. И вие можете да видите всички тези команди с история. Така историята. Всички те са команди съм тече днес. И добре, че не е буквално ограничена до днес, но аз съм използвал само това уред, както е днес. Това е вашата цялост на история на вашия Баш черупки, освен това отрязва в някакъв момент. АУДИТОРИЯ: Какво ще се случи, ако го направите история [недоловим] командване и грешка в резултат все още ще отпечата the-- ROB Боудън: Да, ако е налице грешка в една от тези commands-- така че нека да кажем, че е команда грешка не е намерен. Все още се появява в историята. Добре. Други въпроси, свързани с нещо? Така че това е взрив. Сега, наистина полезна команда, човече. Така че това дава наръчник за дадена команда. Така че нека да кажем, че човек ли, така че това ми показва ли. Той изброява съдържанието на директориите. И това е мястото, където виждам, че има са тези различни флагове, които съществуват. Така ние виждаме, че LS -l съществува ако трябва да прочетете това. LS-L ми дава този пълен списък на директория с който е собственик на файла, размера на файл, модифицираната клеймото. Така ли -а е друг, че може да всъщност използват малко често. -al е най-често ми флаг това минало ли. Така-а, забележете, има много повече файлове, отколкото само на LS. LS -a. Какво е общото между всички тези файлове? Те започват с точка. Така че това е конвенция в Linux, които файлове, които започват с точка са скрити. Така че това просто означава, че когато ние просто прави ли, или ние да търсите тази директория, използвайки търсач еквивалент, или Windows Explorer еквивалент, че не искам да виждам тези дот файлове. Те просто замърсяват гледката на нещата. Така че те са скрити освен ако специално ги поиска с нещо като -a. Така че мога CD в .local и виждам че това е самата директория с споделена директория, и приложения и бла бла бла. Така DOT, файлове те са просто скрити. ОК, така че и други важни такива. Имам няколко мога да пропуснете. Нека просто много бързо се говори за неща файл пренасочване. Така че има цял комплекс серия неща, които можете да правите с тях, но само за да ги види, да речем, ехо. Друга команда. Наистина тъпо команда. Всичко, което прави е за печат, което аз го кажа да. Така ехо здрасти. Тя просто повтори здравей на екрана. Здравей, свят. Echoes здравей свят. Така че една команда или един символ, който Баш разбира е тази по-голяма, отколкото символ и че е на изхода за символ файл. Така че, ако аз изход това дрън, сега има файл наречен Foo, вътре което е здравей свят. Така забележите, че когато ехо здравей свят тръба в дрън, тя не е ехо здравей свят. Вместо това, той е бил пуснат в досието Foo. И друга команда просто за да го хвърлят в теб, кат. Това е един лесен начин да се само напълно списък на съдържанието на файла така че не е нужно да се отвори текстов редактор, за да го видите. Така съдържанието на Foo файл са здравей свят. И можех котка blah.c, съдържанието е това. Отново, това са команди, които не правят очаквате ли ги запомня. Идеята е, че сте ги виждали. Може би, върху което работите нещо, и вие сте сякаш съм болна от отварянето на този файл. Иска ми се да просто погледнете на съдържанието бързо. Можете да направите това, тогава погледнем назад и да кажа, о I спомням нещо подобно че съществува, и това е котка. Така че това се случва във файл. Сега там наистина не е кой да е добър Пример за четене от файл все още. Какво е нещо, което се нещо от стандарт? Всеки прост Linux команда? Когато стигнете до него, в няколко седмица всички piece-- добре, Тази седмица имате парче, където можете започнете да приемате вход от потребителя. И така, обикновено изпишете че въвеждане на клавиатурата. Вместо да пишете, че въвеждане на клавиатурата, вместо това можете тръба в от файл така че, когато правиш Марио, ./mario, тръба в от даден файл, и че ще стартирате програмата Марио. Не очаквах вход в клавиатурата, вместо това е просто отиваш да прочетете редове от файла Foo. Така че, по-голяма от Foo го поставя в файла Foo, и по-малко от Foo взема неща от файла дрън и използва това като принос към тази програма. И само за да го видите, ние също може да ехо Foo бар Баз, а след това вместо една по-голямо от, нека да направим две в Foo. Какво означава, че правя? Той просто добавя към файла. Така че, вместо да забележите, ако аз ехо бла в дрън и после котка дрън, това е просто дрън. Така че, когато продукцията на даден файл, напълно презаписва файла. Ако просто искате да добавите, двойно [? грейдер. ?] И на последно място е тръба. Pipe получава много по-сложна, когато тя е на изхода на една команда и го подава в следващата команда. Така че някои често срещано нещо, история. Така че, уф, аз не искам да гледам това. Покажи ми всички команди в моята история където I Впиши-ЕД за нещо. Не, това е объркващо. Покажи ми всички команди, където намерят. All намерите команди, което някога съм се завтече. Така историята. Сега историята на изхода към скрининг на този списък от команди, но аз не искам да тя извежда на екрана. Вместо това аз ще го прибирайте в Впиши. Така че нека да Впиши за всички случаи на находка. Така че сега, вместо да Впиши поемане на входа, вместо of-- Впиши е в състояние да се справят както input-- сме използвайки Впиши малко по-различно тук. Така че, вместо да пишете в списъка на неща, които искахме да търсите и каза: Впиши се приема като вход. Така че, ако аз просто Впиши се намери, то чака за мен да въведете неща. Така котка здрасти намери. Здравейте. Намери. Забележете, всеки път, когато въведете намерите тя признава, че написах находка. Така че, вместо това, ще търсене на файлове за намиране. Така че историята е сега ще извежда списък на всички команди. Ние сме пускането, че продукцията, и ние сме хранене да Впиши, и така това е изплю всички случаи на находка. Причината, поради която каза, че ще бъде объркващо е, ако I-- тя все още е объркващо. Ако Впиши за Впиши. Забележете, това е почти винаги показва командата аз просто избяга, защото тази команда Самата има Впиши вътре в него. ОК, така че всички въпроси, свързани с нещо? И аз ще го прехвърля върху по тази точка. Надяваме се това е хубаво преглед на всички команди че не е нужно да има наизуст, но това се долива твърдо 95% от това, което съм направя в командния ред. Също така имайте предвид, че на командния ред себе си, Баш е език за програмиране, и така, когато стигнете до него, Може би искате да направите наистина сложни неща. И така, има неща като контури и IFS, и всички онези, че ти започваш да се използва за със своите програмни езици. Но това е извън обхвата на настоящия раздел. ОК, така че никакви въпроси? ALLISON: None? GABRIEL: Ще to-- ALLISON: Мога да го направя на мина, ако искаш. Ние можем да видим какво се случва. ROB Боудън: Off за Алисън. ALLISON: Woo. Вие сте трудно акт да се следват, Роб. Искаш ли да се включите с вас? Или имаш, OK. Аз ще се опитам да не доста бъде толкова дълъг там. Да видим дали това ще работи, както аз искам. Може би? Haha! Да. Така че аз съм просто ще много бързо да отидете чрез променливи, Loops, условностите, и малко на компилатора. Ако имате въпроси към всяко време, моля те спри да ми. Тези момчета ще ми напомнят да се повтаря Вашия въпрос, в случай че забравите, но не трябва да бъде твърде лошо. Така променливи, да. Ние нямаме един от вашите Scratch парчета тук. Сигурен съм, че повечето от вас, ако сте имали някаква игра който сте създали с Scratch, имахте да следите на нещо като резултат, или времето, или нещо подобно. Така че тези, ярко оранжево парчета, които виждаме там са само под формата на Scratch променливи, а вие определено ще да използваме променливи във всичките си програми. Ако не сте, аз не съм наистина сигурен какво искаш да правиш. Но така или иначе, голямо нещо, определяне променливи. С С всяка променлива има да има обявен за тип, така че аз ви даде много общо един в горната част. Така вие ще имате вид и след това каквото и решите да се обадите на вашия променлива. Така че в този случай, тип във вашия списък с променливи. Имаме три примера. Чар на някои клас, на А, което е това, Сигурен съм, че всичко, което искате за да получите в този клас. Можете да дефинирате множествена променливи на един ред толкова дълго, тъй като всички те са от същия вид, която е втората ни например има когато имате три променливи, X, Y и Z. Те са всички плувки. И тогава можете също в този последен Например с инт полувремето и номер на екипи, можете да ги инициализира точно там. Така в средата на примера, където ние Просто трябва поплавък на X, Y и Z, тези, които все още не са се инициализира. Те нямат стойност. Или те имат стойности за боклук. И ако се опитате и да ги използвате, компилаторът ще ти крещя. Трябва да се декларират както и инициализира променливите си. Така че в тази последна, което правим и двете. Ние се обявява променливи за да отбележи и брой отбори, и ние сме ги инициализиране, давайки ги техните първоначални стойности на 7 и 4 съответно. Cool. Всеки добър? Awesome. ОК, така че някои конвенции. Ако вие сте прочели чрез стил 50 те са само неща, които ние бихме искали за да въведе в своя стил. Така смислени имена. Ако започнете да се обадите неща само X, Y и Z, особено както можете да получите в дълъг програми, вие сте вероятно ще обърка себе си и да бъде като това, което е тази променлива, отнасящи се до. Нямам представа какво означава това. Така че, ако той е предназначен да държи резултат, го наричат ​​отбележи. Ако тя е предназначена да държи някакъв отговор или да доведе до това да даде такова име. За линии, които ние ще получите в в следващия слайд, единични писмо променливи са добре. ROB Боудън: I, J и K са само конвенции за за вериги че всеки очаква от тях да се нарича I, J и К. Можете да се обадите them-- виждам ред колона или ред повикване понякога за два вложени цикъла, и това е също вид стандарт. Но аз и й е напълно изяснен. ALLISON: Да, аз и й вие сте напълно добре. За яснота, като в някои от вашите P комплекти, то може да има смисъл да има повече описателни неща там просто да следите от него. Но аз мисля, че, й и к мисля по-голямата част от нас всяка употреба. ROB Боудън: С тези конвенции, така стил е важно. Това е една от четирите оси на която сте степен, и тя е толкова лесно просто да отида Вашата P разположена в края и се уверете, че няма стилови грешки. Така че се уверете, че сте tabbing правилно. Уверете се, че променливите са именувани. Оставете някои коментари. Много е лесно да получите тези точки. Вие не трябва да се мисли за нещо, за да получите тези точки. Не е нужно да разбера нищо. Това е просто да изглежда доста. ALLISON: В действителност, ние има стил 50, които Ще ви кажа къде бъркаш , ако сте каша на стил и ще ви кажа точно това, което трябва да се определи и как трябва да го оправя. Това е също така просто да се каже, че това е разбира политика че ако сте в офиса часа и кода си е бъркотия, ние може да откаже да помогне вас, докато тя изглежда по-хубав. Така че започнете да се прави, поддържа последователен стил, вие също така просто ще направи живота си цяло много по-лесно, когато се опитвате да мине през отстраняване на грешки. Ако се опитвате да разбера където сте липсва фигурна скоба и те са навсякъде, вие сте просто направи своя живот по-трудно. Така че да бъде в съответствие със стил. Обещавам, че ще направят живота ви по-лесно. Това ще направи живота ни по-лесно. Всеки ще бъде много по-щастлив. И това е, което искате. GABRIEL: Вашият клас ще бъдат по-високи. ALLISON: Да, и ви клас. Ако TF е като теб, има тенденция да бъде по-благоприятна. Добре, и след това просто втората точка тук. Последователните инициализации. Така че, както видяхме, може да декларира, и инициализира неща. Множество променливи на същия ред. Едно нещо, което не бихте искали да направите, е да обяви някои променливи а не да ги инициализира на същата линия, която се инициализира други. Така че, в случай, че направи никакъв смисъл, имаме примера тук където ние сме обявяване целочислени в променливи на квартали Dimes и пари, но квартали и пари нямам първоначалната стойност. Ние не сме ги инициализира, но точно там в средата ние вече инициализира Dimes до 0. Така че или направя квартали, Dimes, пари. Или квартали равни 0. Dimes равняват на 0. Pennies равни 0, или каквото и тези начални стойности са. Big нещо със стил, да бъде последователна. В случай на съмнение, да бъде последователна. Но последва нашия стил ръководство също. Cool. Всеки добър там? АУДИТОРИЯ: Къде е ръководството за стил? ALLISON: Водачът на стил е on-- какво е сайта? GABRIEL: Мисля, че е manual.cs50.net/-- ALLISON: Style? GABRIEL: Style. Да. ALLISON: Да. Така че въпрос, къде е стил 50. manual.cs50.net/style. Да? АУДИТОРИЯ: Ако сме определянето променливи, това е ОК ако ние поставяме като [недоловим] като INT резултат и след това инт цел. Така че ще ви кажа, че сега ние сме Трябва да ги определят заедно? ALLISON: Така че въпрос, трябва имате излишни код когато дефинирате променливи като INT резултат и на следващия ред инт игра? ROB Боудън: Определено има случаите, в които съкратените код е лошо. Аз няма да разглежда че съкратените код. Аз почти никога не декларира многократно променливи в един и същи ред някога. И ако не друго, то е защото Обикновено оставям някакъв коментар обяснява какво променливата е за. Така че аз ще кажа инт полувремето наклонена черта черта. Следи от нещо такова. В общата черта черта. Така че това е много по-чудовищно по този начин да ги постави на една и съща линия. Просто никога не съм ги поставят на една и съща линия. ALLISON: Аз се чувствам като това е лични предпочитания в този момент. АУДИТОРИЯ: ли, че отивам за за вериги и такива неща ли? ROB Боудън: Както вътре? Подобно инт аз равна на 0 запетая дължина е равна на нещо? Това не е избор. С вериги за инициализация part-- така че може да се вижда само INT и е равна на 0 и запетая и по-малко от каквото и запетая и плюс плюс. Това INT и е равна на 0, технически можете също правят това, което видяхме преди със синтаксис запетая. INT и е равна на 0 запетая й се равнява на 3 запетая к равнява на 5. Вие нямате избор да се разделят че нагоре в няколко реда, и това е стандарт. Виждайки го има глоба. ALLISON: Awesome. Е, удобен Segue в цикли. Така че, да, тук имаме няколко примера на контура, че вие, момчета видяха в Scratch. И разбира се, всички тези просто може да бъде пресъздадено в C. И те на практика ви позволява да повторя някои част от код до определен състояние е изпълнено, които ние ще влезе в полето, след като за контури с условностите. Така че ние имаме три основни типа. Защото, докато и правите време, което всички ние ще мине през точно сега. Така че първото е за вериги. Така че за някои състояние, изпълнение на този блок от код. Ние имаме този страхотен малко диаграма тук на дъното. Но в общи линии имате в си за това на първа линия, ти започваш да се инициализира променливите си. Така, както ние говорихме, аз е равно на 0 или да е равен на 10. Каквото и да се нуждаем от това променлива да е ще се инициализира там, декларира и инициализира с някаква стойност. Така че ние имаме някаква състояние, което се случва за проверка на нашия променлива срещу нещо. Така че, в случай на типичен случай, когато може би искате тази част от код да изпълни пет пъти. Така че ние ще трябва INT и е равна на 0, и ние искам тя да бъде, когато аз е по-малко от 5. Така че това условие е просто ще провери дали всеки път. Ако това условие оценява да е истина, то е ще стартирате код, който е точно какво е това малко диаграма се показва. И така той изпълнява. Тя актуализира променлива, което е това, което виждаме в последната част на нашия за контур инициализация там. Така че просто ще продължи да прави това докато това условие не е изпълнено, и след това ще излезете примката и да продължи преместване на с останалата част от вашата програма. Всеки добър там? Cool. Така че ето един пример, много сходен за нещо, което току-що говорихме. Така че ние просто искате да отпечатате това е CS50 10 пъти. Така че можете да видите тук имаме ни за, а след това инициализира променливата и да бъде равна на 0. Нашето условие е проверка че е по-малко от 10. Така се оцени като вярно, когато за първи път започне, а след това се актуализира нашата променлива всеки път, когато тя всъщност изпълнява и отпечатва това е CS50. И ще се прекрати след 10 пъти. Cool. Така че, докато линии са до следващата. И, както виждате тук, ние просто трябва някои хора, но това condition-- въпрос? АУДИТОРИЯ: Как мога да скочи всъщност просто не един номер, но две числа [недоловим] аз плюс плюс плюс? ALLISON: Така че въпросът е как може да се актуализиране на променлива с повече от един в даден момент. Така че аз плюс плюс ще актуализация от по едно време. Ако искате да го актуализирате, като две, бихте могли да направите и плюс е равно на 2. ROB Боудън: Виждали ли сте плюс равнява лекция все още? АУДИТОРИЯ: [недоловим]. ALLISON: Това е ефективно едно и също нещо, както аз се равнява аз плюс 2. Така че ще го вземе и да го актуализирате по две всеки път. Plus е равна е просто нещо, ние наричаме синтактична захар. ROB Боудън: Да, тези, които съществуват за почти всички аритметични оператори. Така че аз пъти равни ще удвои броя. J разделение размер на 3 е същото като й се равнява J разделен от 3. ALLISON: Или минус е равно на 2, ще намалите стъпково аз по две всеки път. ROB Боудън: Дори мод равни. Вие не сте виждали побитовите оператори, но каретата се равнява и амперсанд равни, Всички тези съществува. ALLISON: Така че много пъти, особено с вашата първа двойка на Р комплекти, ще бъде най-вероятно увеличаване на един, така че аз плюс плюс, й плюс плюс е всичко, което ще да обикновено използвате. Но това условие е актуализация напълно в рамките на своя контрол. Можете да го актуализирате по какъвто и стъпки или по какъвто и начин да решите да. Може би дори искат тя да бъде произволен брой понякога. Но да, има много неща, които можете да направите с това. Вие не сте ограничени до и плюс плюс. ROB Боудън: Само да Знам, че съществува, той също съществува под друга форма, плюс плюс аз. Така че, ако сте някога да търсите онлайн и да се случи, за да видите плюс плюс аз, до голяма степен означава, че едно и също нещо. ALLISON: Cool. Добър? Awesome. Така че, докато цикли. Много подобни. Имате някакво условие. Основното нещо, за да забележите, тук е, вместо да се налага три различни части да се създаде, ние имаме един. Ние просто имаме някакво условие това е, което се проверява. И по същия начин, толкова дълго, колкото това условие се оценява да е вярно, кода си ще избяга. И ако това е невярно, то ще прекрати ход към следващата част от вашата програма. Така че това е вид like-- какво е добър пример за проверка за някои нормално състояние? GABRIEL: Докато вярно. ALLISON: Може да се направи, докато е вярно. Е, едно е равно на едно. ROB Боудън: Можете да направите while-- просто вместо да се използва за линия, Винаги можете да се кодира за линия в линия, докато, така че аз по-голяма от 0 или докато по-малко от 10. ALLISON: Awesome. И тогава ние сме прави, докато линии, които е чудесно за валидиране на потребителя, където искате да получите нещо от потребителското си, да видим дали това е валидно, и след това да продължи от там. Така че едно от нещата, за да знаят, е с направи, докато е, че тя ще се изпълни, и след това отново ще се изпълни Ако това условие е изпълнено. Така че може би най-добрият начин да направите това е просто да видим един пример тук. Така че, както току-що споменах, ръководство валидиране е наистина useful-- или направя догдето са наистина полезен с валидиране на потребителя. Така че това е просто ще отново да подтикне някои потребителя докато не въведете положително число, които биха могли да бъдат полезни за вашата P комплект тази седмица. И така, в този случай, когато ние първоначално стартирате тази програма, то се случва, за да отпечатате Въведете положително число. Това се случва, за да получите някои принос от страна на потребителя, и след това да се случва, за да проверите този вход срещу условието които сте задали за него. Така че в този случай ще се провери. Той ще каже, OK, е нашият принос отрицателен, или 0 или отрицателен е, който ще бъде невалиден. Така че след това ще възстанови бързо. Въпрос? АУДИТОРИЯ: Това ли е същото след като линия, докато ако просто копира този код и да го [недоловим], докато цикъл? ALLISON: Значи въпрос е би това е същото като просто известно време контур, ако бяхме само копирайте примката, докато по-горе. Така че в този случай си линия, докато е ще провери състоянието на първо място. Така че в този случай, ако ние се опитахме да пишат само като линия, докато, тя ще каже, докато вход е по-малко от едно. Но ние нямаме ресурс за това. АУДИТОРИЯ: Ако [недоловим] линия, докато включително този код, но след това се справиха кода над примката, докато също. Вие просто трябваше този код [Недоловим], докато контур. ALLISON: Това ще бъде едно и също нещо, да. Така бихте могли просто да write-- вместо да се налага на do-- да. GABRIEL: Но това е по-елегантен. ALLISON: Да, това е по-елегантен. Можете да получите в дизайна и какво ли не, но отговорът е да, можете напълно да го направя. Всякакви други въпроси? OK, хладно. Така че ние сме говорили много за условия с всички тези линии, които имаме, така че ние сме всъщност да е в условия в булеви изрази. Отново можете да използвате тези в C, така че просто вид преход от по-графичен интерфейс действително кодиране. Cool, толкова голям, ако. По принцип само ни позволява да се въведе някаква логика в нашата програма и проверка сис условия. Така че в този случай, OK, п е по-голямо от 0? Да, това е, така че може да изпълни това. Това е просто проверка на някои условие, че сте настроен, което мисля, че всички сме комфортно с проверка условия. Cool. Така че, ако друг е с другия ви, може да се каже ОК, ако това е вярно, направите това, първото нещо. Иначе искате да подразбиране и да направим нещо друго. Както и в този случай, или изберете положително число или отрицателно число. Имате само две възможности. Трябва да се изпълни независимо на това, което вашите потребителски входове. Така че може да се каже, добре, е по-голямо от 0? Cool. Печат положително число. Ако не е, отпечатайте отрицателен. Всеки добър? И тогава едно нещо да се признае, е че ако, ако условието е изпълнено, еlse-никога няма да се изпълни. Само един от тях ще изпълни в даден момент. Така че това е компромис. Не се да има и двете. Вие трябва или първото условие. Вие трябва или, ако или друго, но не и двете. Кой тогава може да направи неща, още по-сложно, защото можете да направите, ако, защото в противен случай, и след това друг. Така че в този случай, ние има три условия. И отново, само един от тях е в крайна сметка ще се изпълнява. Така че може би се чудите добре, какво ще стане ако има нещо, което може да отговори на две от тях. Може би каквото и да въвеждате удовлетворява условието Защото, ако и друго, ако. Единственото нещо, което се случва да тече ALLISON: Веднага след като го намира нещо че отговаря на условието, че за оценява да е вярно, че това, което то се случва да тече и нищо друго. Така че, ако сте имали е този брой между 0 и 5 за първата си един, или това е число между 3 и 5 за друго, ако част, и въвеждане на number-- Казах 0 и 5 and-- 4. Той ще се появи на първата. Това ще кажа ОК, това брой е между 0 и 5. Изпълнение и отпуск. Тя никога няма да се удари, че вторият вариант. Cool? Awesome. OK ние също имаме ключ отчети, ако искате да получите дори MORE-или съжалявам, превключвател е в непосредствена близост. Аз съм се пред себе си тук. Отново, ако множество блокове където, както току-що казах е веднага след като се намери състояние че е изпълнено и, ако друго, ако друго, оставя. Ако трябва да проверите няколко неща, вие сте ще искате да използвате това, защото той ще проверява всеки път тук. Така че това ще продължи до и ако е по-голяма от или равна на 90, то се случва да отпечатате това. И това ще продължи до и провери всеки един от тях. АУДИТОРИЯ: Така че това ще бъде по-бъгав от [недоловим]. Дали това ще бъде като [недоловим]? ALLISON: Въпросът е ще бъде това бъги или не това прави каквото искаш. Това наистина зависи от това, искате от вашата програма. АУДИТОРИЯ: Искам да кажа, като ако сложиш 90 инча ALLISON: Ако сложите 90-- АУДИТОРИЯ: [недоловим]. GABRIEL: Вие ще получите две неща. ALLISON: Вие ще получите две неща. Да, две. ROB Боудън: Two? ALLISON: No. ROB Боудън: Four. Ако сложите 90, тя ще ви каже, имам А, имаш B, имаш C, имаш D. АУДИТОРИЯ: [недоловим]. ALLISON: Точно така. Така че зависи от това какво Искам от вас програма. Понякога трябва да проверете няколко неща. Вие ще получите много по-дълбоко в това, което добър дизайн е като да вървиш напред. Най-важното нещо, за да осъзнават е, че този ще ви се покажат всички четири условия тук. Като има предвид, ако това е, ако друго, ако друг ако друго, това ще удари, че първият случай, той ще отпечата имаш А и да се направи. ROB Боудън: Дори и ако ние реши да промени това, ако и по-голяма или равна на 90, ако и по-голям или равен на 80, и по-малко от или равно на 89, ако N по-голяма от или равна на 70, и п-малко от или равно на 79, така че ще бъде правилно. Това ще направи това, което ние искаме, но тя все още проверява всеки го сингъл. Така че, докато в първия сценарий, ако ние въведете 90 само, ако друго, ако друго, ако, и ние влизаме 90, а след това това ще се коригира. Той ще провери първо един, печат имаш А, пропуснете всичко, защото тя вече намери този, който работи. Всички случаи са взаимно изключващи се въз основа на, ако друго, ако друго, ако. Така че ще изпълни първо, ако, след това го е направил. Ще отида до края. Като има предвид, ако се промени това, за да бъде това, което бях каза по-малко от или равно на 89. Това ще се провери първия. Това ще отпечата. Той ще провери втория. Тя няма да се отпечата. Проверка на третия. Няма да отпечатате. Проверка на четвъртата. Сега ще се отпечата. Така че в този случай, иначе, ако версия, тъй като тези случаи са взаимно изключващи се, това е по-добро използване, ако друго, ако друго, ако, защото това ще има по-малко проверки за условията от тази версия. ALLISON: Awesome. Така че друго нещо, което можем направите, е ключ отчети. Основно твърдение ключ отнема в някои променлива, в този случай тя е н и определя кои случаи да се изпълни. Така че това също е едно, когато си дела трябва да бъде вид на взаимно изключващи се. Така че в този случай, ако ние получаваме един, това е ще съответства на каквото и да variable-- независимо от стойността на п е един от тези случаи, за 1, 2, или 3, както и отпечатване на съответния ред. И след това, ако забележите тук, ние също имаме по подразбиране, които можете да на мисля като си другаде. Така че, ако изберете друг номер освен 1, 2 и 3 в този случай това е просто ще отпечатате невалиден. Вземането на решение кога да се използва IFS сравнение ако иначе в сравнение с ключове ще да бъде нещо, което вие ще виж проектиране мъдър, колкото да започнете да пишете по-сложни програми, и Няма по-твърди и бързи правила от кога да ги използвате. Това наистина зависи от вашата връзка. ROB Боудън: И точно да го хвърли там тъй като тя е по-удобно раздел. Ключове, те са склонни да be-- толкова сте ограничени в броя на начините, по които могат да ги използват, защото IFS, състоянието може да бъде доста много всичко, което искате. С превключва случаите трябва да бъдат числа, или технически те могат да бъдат символи, но символи, както ще видим, са само цифри. Така че те трябва да са числа, но ключове са много по-ефективно, отколкото ако иначе, ако друго, ако, защото дори като по примера before-- добре, примера клас изглежда добро. Ами нека да кажем тук, ние да го правим това като, ако друго, ако друго, ако сценарий. Така че, ако п е равен равен на 1, отпечатване сте избрали по-малък брой. Ако друго, ако п е равно на е равно на 2, сте избрали средно число. Иначе ако равни равнява на 3, висока. Else невалиден. Така че нека да кажем, че беше нашият сценарий. Така че нека да кажем, че ние влизаме 4, така че ние очакваме невалиден. Начинът, по който, ако друго, ако друг ако подход ще работи е проверява първото условие. Това не е удовлетворено. Така че ние проверяваме второто условие. Това не е удовлетворено. Проверка на третото условие. Не е изпълнено. Така че отиваме в останали и отпечатате невалиден. Начинът ключа работи е той съставя надолу в това, което ние ще да се обадя на маса скок. Основната идея е че когато въведете 4, тя може веднага да отидете на настройки по подразбиране. Тя не трябва да се провери ч I случай 1? Nope, че не е това. Случай 2? Не. Случай 3? Не. Default. OK, това трябва да бъде там, където съм искате, и след това се изпълни това. Не, той веднага скача на по подразбиране. Или да въведа 2, това е веднага ще отида до 2 без да се налага да мине през случай 1. Така че по този начин, реално в днешно време това е не толкова на повишаване на ефективността. Обикновено компютри са доста бързо, а това не е толкова голяма. Но е вярно, че ключове са по-бързи. Ако сте наистина се опитва да се оптимизира, да се използва ключ. ALLISON: Cool. И тогава имаме трикомпонентни оператор. Така че аз знам, че споменах по-рано думата синтактична захар. Така че това е само неща, които правят кода си много по-кратък. Така че това е един от тези случаи. Така трикомпонентни оператор е въпросителен знак дебелото черво, както виждаме в низ линия и п е равен на по-голяма от 100 въпросителен знак високо дебелото черво ниска. Така че основно как работи това е, това е п по-голяма от 100 е състояние. Така че аз мисля, че може да има смисъл. Това е все едно да питаме един въпрос. Той казва, о, е п-голяма от 100. Кой знае? И ако се изчисли на вярно, че ще ви дам първото нещо, което е включени в него, която е висока. В противен случай тя ще ви даде ниска. Така че това е само една много проста и ефективен начин да се направи като ако друго. Това е всичко, това е. И ако трябва да напиша това като ако друго условие, би било, ако п е по-голямо от 100, върнете висока. Else, върнете ниска. Това е просто много по- сбит начин да се пише. ROB Боудън: Така че този конкретен пример е, когато правиш нещо по този начин, това е моделът, когато използвам трикомпонентни много често. Така че ние не сме говорили за обхват все още, но аз мразя да виждам низ и запетая. Ако по-голяма от 100 N, S е равна висока. Else, и се равнява на ниска. Така че този модел, тези пет линии код буквално 100% от времето могат да бъдат прехвърлени в това, което е до там с трикомпонентна. Така трикомпонентни, един ред код. , Ако друго, пет. Това е пример I точка на всеки един момент. Това би чудесно място за трикомпонентна оператор. Това е толкова чист. Но хората са склонни никога да не го използвате. ALLISON: Вземете го далеч Габе. GABRIEL: Така че сега вие всички наученото в лекция тази седмица че всичко в компютър е двоичен, нали? Точно като лампите тук. Вие може да бъде включен и изключен. И от всичко, искам да кажа буквално всичко. Някои цифри и символи и низове, и дори кода, който пишете, когато той се компилира до машинен код и други подобни неща, така че всичко се свежда до 0 и 1 ". И така, когато си имаме работа с цели числа, които е нещо, което е технически много прост, ние трябва да бъдем в състояние да направи неща като ги добавите, който е може би един от най-простите неща можете да направите две числа, нали? Така че, събиране и изваждане работи само като тя работи в десетична бройна система, освен тук е двоичен, нали? Така че това е в основата на две. Така че добавете 1 плюс 1. Това дава 0 и 1 се пренася. И просто продължаваш да правиш това, така че сега идва по-интересен въпрос. Ние знаем как да се представят всички положителни числа в компютъра, но нека направим това упражнение. Прави се, че момчетата са всички през 1960 г., или нещо се опитва да създаде компютър, и трябва да излезе на начин на съхранение минус 1, например, или минус число за този въпрос. Как ще стане това? Някакви идеи? Просто хвърли нещо към мен. Да? АУДИТОРИЯ: [недоловим] определя специално, ако си [недоловим]. GABRIEL: Можете да определя специален малко, което ще бъде 0 или 1. Да кажем, че един, ако е положителна и 0, ако е отрицателна. И след това останалата част от бита е само за да съхраните номера. Cool. Така че това е много добра идея. Ние имаме, аз не знам, 200. И ако първият бит е включен, след това е плюс 200. Ако е изключена, тя е минус 200. Cool. Има само една малка проблем с това, което е, ако ние се опитваме да обобщим нещата. Така че представете си имаме 11111 тук, и ние сме сумиране това с 00100 каквото. Ако тези две са положителни, това е добре. Но след това, ако една от ги е отрицателен, като нека да кажа, че това малко тук е този, който е отговорен for-- Отивам да направи separate-- така че това означава, че този номер тук е положителна. Това означава, че този брой тук е отрицателен, нали? Но тогава, когато сте ще ги обобщим, вие Нуждаем се от, ако изявление казвайки: О, ако това е 0, След това ми сума ще бъде нещо по-различно, нали? Така че там е малко по- по-умен начин да се направи онова, което се нарича допълнение две години. Така че основно това, което ние направите, е да дефинираме минус 1 да бъде нещо, което, ако ние добавяме до 1 ни дава 0. Позволете ми да повторя това. Така че нека да кажем, че това тук е една. Какво е това, което естествено в положителни числа добавено към нас 0 дава? Какво става, ако се опитаме да го добавите към този номер? Отиваме да have-- ОК, така че нека да добавите. Отиваме да има 1 плюс 1 е 0, а след това се пренася. И тогава започваш да се получи 0 отново. Аз съм се бърка. И ти започваш да се получи 0 и 0 ° С и 0 ° С и 0 ° С и 0 ° С и 0 ° С. Много от 0-те години. В много последната, ние не сме ще бъде в състояние да го пренесе, защото да кажем, ние сме само сделки с един байт, така че само 8 бита. Така че това, което прави компютъра по подразбиране е просто забрави за това [недоловим] OK? Така че това е, което се нарича допълнение двамата си. Ние просто се определят минус 1 да бъде нещо тук, че ако се добави, че до 1 ще ви дам 0. И това е много готино защото ние наистина не трябва късно да се приложат различен вид на сума в зависимост от това дали това е отрицателно или положително число. Това прави ли смисъл? Така че едно нещо, което правим тук, за да конвертирате между положителна и отрицателна число е тогава флип всичко, и след това се добавя 1 към този номер. Ако се опитате да го направите сами върху парче хартия, ти започваш да се види, че има смисъл. Но ако вземете този брой тук, това е пет. Така че, ако обърнете всичко тук, така че 1, 1, 1, 1, 1. Flip, флип, флип. И след това се добавя 1 към него. Отивам да имат точно минус 5. OK? Този вид има смисъл, защото, ако опитате да обобщим това с броя че имахме преди, което was-- нека флип това отново. Това беше 101 и много от 0-те години. Ако се опитате да добавите тези две числа заедно, вие ще имате точно 0. OK. Всякакви въпроси? АУДИТОРИЯ: [недоловим] GABRIEL: Какво искаш да кажеш? АУДИТОРИЯ: Negative в положителен [недоловим]. GABRIEL: Не, флип и добавете 1 винаги. Да. ОК, така че героите също кодирани двоични файлове. Имаме ASCII таблица, както ви Също така видях в лекция, нали? Така че това е в основата на картографиране на нещата. И тук не мога да подчертая достатъчно че за компютър, и 65 буквално са едно и също нещо. Така че, ако аз напиша нещо като знак в се равнява на, бих могъл в същото време просто напишете 65 тук, и го би било точно същото, нали? Няма никаква разлика. Ние обикновено са склонни да се постави герои в променливите от тип. Чар, не защото те са по същество в рамките на този, но поради на човешкото конвенция. Но вие може просто да се справят с числа вместо променливи от тип Чар, и ще се оправи. Единственото действително разликата между Чар в и инт аз е, че инт има четири байта в най- системи, а Чар има един байт. Те са по същество едно и също нещо по отношение на данните. Така че това, което ще се отпечата тук? Тук ние сме печат цифра използване ФОРМАТ с плюс 1, и само като числа, символа могат да бъдат обобщени, така че символи могат да се сумират. Така че това е точно 65. Така че там ще бъде 66, и тук имаме 65 плюс малко минус голям A, което ще бъде, аз наистина не знам. Но това ще бъде точно на пропастта между главните букви и и малки букви, така че отиваме да получите малък, нали? Да. Така че това се случва, за да отпечатате характер, който е точно този. Добър? Всякакви въпроси? Тук имаме един куп различни видове за числени променливи. Ние вече говорим за инт. Float е просто начин to-- това е наистина смешно, защото когато за пръв път научих да се програмира през деня с Python, първата програма, която някога Опитах се да пиша, аз видях, че е налице тип, наречен в и тип, наречен плувка. И поплавъка е за всички реални числа. Тогава аз попитах защо трябва Което някога съм използва инт тогава? Защото, ако мога да използвам всички реални числа с плаваща запетая, Аз просто ще спре да използва цели числа, нали? Тъй като реални числа са много прилича повече родово. Оказва се, че това е не е случаят в компютри защото те са по същество различни неща. Така числа и плувки, на операции, което правите, за да ги по същество са различни, защото на начина, по който те се съхраняват, OK? Ние ще говорим малко по- малко повече за това в секунда. Така че двойно е просто по-голяма плувка. Обикновено в повечето системи, на плувка е четири байта, точно като Int. И двойно е осем байта. Дълго време е всъщност само един символ че можете да добавите тип като Int. Вие казвате, дълго, дълго Int подобно. Long дълго INT х да го направи по-дълго. Така че в повечето системи, което ще даде осем байта, вместо обичайните четири. И всъщност можете да пуснете в, така че може просто да се каже, дълго, дълго, и че работи прекалено, нали? Можете също така да правят други неща, като неподписан INT, или отново просто грозен също ще работи. И това ще направи х бъде променливо като всичко е положителен, така че наистина не може да има отрицателен номера по начина, който видяхме тук. Така след прекрасно с плаваща запетая и прецизност. Това е една от причините, поради които искате да използвате цели числа, вместо плувки, тъй като цели числа са 100% точни, нали? Това е точно този номер. За плаващи точки, ако можете каже отговор равнява 1 над 10-- Аз се случи да има точно този програма тук, float.c. Това отпечатва до 20 знака след десетичната запетая. 1 делено на 10, и че обикновено е 0.1, нали? Но тук, ако ние правим плува и след това го стартирате, ние виждаме, че това не е точно 0,1. Това е 0.149 нещо. И защо е това? Защото ти наистина не може да представлява всеки единствен възможно реално число в паметта защото има uncountably много от тях. Така че ние сме технически в състояние само да представлява краен размер от тях с ограничен обем от данни. Но това е наистина интересно. Сега това повдига въпрос за това как бихте отида за представляващ това с бита, нали? И така, как се съхраняват плувки? С числа беше лесно. Но с поплавъци искате да се увеличи обхвата, и вие искате да бъдете в състояние да представи огромен брой и много малки числа, като 0.000001 в същото време. Така че отново, същата игра. Някой има ли идея как бихме могли отида за представляващ плувка в паметта? Просто хвърли нещо. Да, моля те. АУДИТОРИЯ: [недоловим] като ако беше две цели числа и една е на [недоловим] и една благосъстоянието всичко след десетичната запетая. GABRIEL: OK, хладно. Така две различни числа. Можете да имате 12.45, така че това е 12 и 45. Ница. Какво ERE щеше да кажеш? Същото нещо? Така ли? АУДИТОРИЯ: [недоловим] нотация където се разделят на основата. GABRIEL: Научно нотация, Да, това е обикновено това, което се случва. Така че това е, което се нарича мантисата. Ето какво е всъщност номер, и след това експонентата е точно там, където запетаята е, нали? Така че това ще бъде нещо на формата на 1, 2, 3, 4, 5 пъти 10 до минус 4. Току-що разбрах that-- Да, точно така. И след това от 10 до минус 4 е ще се определи къде запетаята е, нали? В Бразилия ние използваме запетая. Тук вие използвате точка. Така че една точка. И това е готино, защото тогава можете да съсредоточи много на вашите бита на този човек тук, на мантисата, а след това, че е ще бъде действителната точност. И вие можете да направите това в десетична или въз основа на системата двоичен. Има различни начини за изпълнение на това. Въпроси? Да? АУДИТОРИЯ: Колко места след десетичната [недоловим]? GABRIEL: Това е сложен въпрос, защото той никога не е наистина 100% точни, защото, както виждате тук, за някои числа, то е 100% точни. Вярвам, че ако сложим 0.5 тук, тя ще бъде 100% точна. Това ще бъде 0,500000. Така че в този случай, той е перфектен. Но в други случаи, това е много по-съвършен. В моя опит, както и до четири, пет знака след десетичната запетая е доста точни. Ако използвате двойно, че ще бъде много по-точен от това, OK? ROB Боудън: Така че просто да се хвърлят още контекст на плувки, Никога не си спомням 100% как спец на плувки наистина работи, но аз винаги си спомням че плувки започват все разхвърлян. Така че идеята е, че когато имаш много, наистина големи числа или наистина, наистина малки номера, ние започват все по-лошо и по-лошо при разграничаването между двама близки плувки. И така, как обичам да си помисля е с плаваща запетая неточност има две плувки, че ако се опитам да ги посочите в С, въпреки факта, че те са различни номера, те ще бъдат се тълкува като един и същ номер, защото не можем да ги съхранявате по различен начин. Трябва да се използват същите бита. И така, когато стигнем до наистина, наистина големи числа, говори като 10 до 300 или нещо, то е в този момент че 10 до 300 или 5 пъти от 10 до 300 не могат да бъдат разграничени от 7 пъти 10 до 300. Така че това е една доста голяма разлика между двете числа. Но след това, когато можете да получите надолу за нормални неща обсег, Вие склонни да бъдат доста добър в диференциране. И тогава, когато можете да получите надолу наистина малка, вие също става доста лошо отново. Така че като цяло куп 0.0000, той получава доста зле. GABRIEL: Да, толкова по-бързо бележка. Никога не правете това. Никога не се опитвайте да се сравни плувките използване равни с равни, защото дори и ако те са почти същото, почти същото не е същото. Така че това, което обикновено се прави е, че изважда тях, да вземе абсолютната стойност на това, и да видим дали това е по-малък от 0.0001 или нещо подобно, нали? И готино. Знам, че много хора имат някакъв опит в Java, особено на тези, които направиха AP компютърни науки, нали? И Java е език че най-вече на базата на С, тя има няколко много големи разлики. Но за електрически вериги, както и инвестиционни фондове и подобни неща че всички те са на същия синтаксис. Имам няколко програми тук, за да покаже това. Така например, един прост здравей свят. Това е здравей свят, в C, която ви момчета определено са запознати с, и това и това е в Java. Така че в Java имаме тази обществени клас, здравей свят, и публично статично невалидни Основната и струнни аргументи. Аргументът низа ще да се яви в C много скоро. Но нека все пак не отиде там. Точно сега имаме празнота тук, което означава, че основната не се предприемат каквито и да било аргументи. И тогава имаме System.out.println, и това е вид на еквивалент за ФОРМАТ. Тук ние наистина не се нуждаете от наклонена черта п защото печат LN прави това за вас. Той добавя наклонена черта N в края на линията. Но ако отидете в нещо като, можете може да се види, че те са почти едно и също нещо. Така инициализация и състояние и актуализацията is-- ми липсваше пространство here-- те са почти едно и също нещо, с изключение на Java има и няколко по-високо ниво неща. Тук можем да направим, плюс I и Java автоматично ще направи това аз тук, което е цяло число, в низ, и след това добави две струни заедно. Тук, в C, което трябва да се направи и% D. Линията тук, за за изглежда точно същото. И ако погледнем, ако ИС също изглежда точно същото, нали? Така че истинските големи разлики са в тези неща, които можете да видите тук. Публичен статичен, празнота и След общественото клас, ако. Така че Java е това, което е нарича виртуална машина. И това е много силно въз основа на това, което се нарича обектно-ориентирано програмиране, което е много, много чести парадигма за програмиране в днешно време. И това нещо клас е това, което вие виждате, нещо от обект ориентация, е да създадете клас и след това може да се извлече обекти от този клас. Ние няма да говоря твърде много за това в CS50, но това е определено нещо наистина страхотно, особено ако искате да отидете в по-сложни уеб програмиране в края на курса, като представя окончателния си проект и някои хубави рамки и такива неща. Така че основната идея е, че Не искам отново да приложи нещо, така че да се създаде нещо, което е много широко приложение, като формата, и след това да създадете различни форми от него, и след това от всяка от тези форми, които създавате някои по-специфични форми в три размери или нещо подобно. И те имат тази йерархия те наследяват от други такива, така че всички функции и всички променливи, големия формата тук е, всички от тях ще има, както и всички от тях са ще има, и така нататък и така нататък. Така че това е основната идея. C не е това, но C ++ няма такава функция. И Java е силно повлиян от обект ориентация, така че това е защо те видя клас тук през цялото време. И другото нещо е, този Java виртуална машина. Така че това, мисля, че е много умна идея. Така че това, което хората, които изобретил Java направих е те не искат да компилирате кода си два пъти ако те трябваше да го стартирате в Windows, или Mac или Linux, така че това, което правят е, че те буквално тече нещо подобно на уреда, но наистина не виждам това да се случи. Така че те управляват виртуална машина вътрешността на вашия компютър, което е основно като мини операционна система. И тази операционна целта на системата в живота е просто да тече, което се нарича байт код. Така че, вместо в C, на начина, по който ще съставят това е направи, ако и след това пуснете ./if. Забравих наклонената черта вътре. В Java, ще направя първо Java C да го компилирате, if.c. Това не е C. Тя е точка на Java. И тогава ще трябва да не тече ./. Можете да получите този нов файл if.class, но не можете да наистина тичам if.class сега просто както направихме преди. Това не е изпълним. Вие трябва да се изпълнява. Вие трябва да я храня в програма, наречена Java, и тази програма е виртуална машина, и след това да направите if.class, или ако. Да. И тогава тя работи. ОК, така че това е един вид на виртуална машина случва. C не са това, така че ако аз трябваше да поставя тази програма в машина Windows, тя няма да работи в C. В Java го прави. Въпроси? Cool. Това е, ако за супер раздел за днес.