Роб Боуден: Це більш комфортно розділ, але це не означає, що якщо вас відчувати, що ви не зручніше Ви не дізнаєтеся речі тут. Так що давайте почнемо. Чи є у вас слайди ладиться в речі. Чи можу я збирався просто взяти його прямо зараз? Перемикання ноутбуки. Елісон: Ви не хочете, щоб представтесь, Роб? Роб Боуден: О, я Роба. Це мій п'ятий рік TF-ING CS50. Габріель: Я Гавриїл. Я керівник TF з CS50. Я був TF торік і цього року. Елісон: А я Елісон, і це мій другий рік TF-ING CS50. Роб Боуден: Гаразд, так ця річ зліва, сподіваюся, ви бачили це раніше. Якщо не через вас скачати його для себе, Ви б бачили його в лекції. Так що це CS50 прилад, і він зробив кілька з опису нього в лекції. Але в основному це просто ви працюють під управлінням операційної Система у вашій операційній Система так що ми можемо дати вам програми без необхідності турбуватися, про це працюватиме як на Windows, і Mac, або якщо деякі з вас вже з використанням Linux, Linux. Це просто, як передбачається, стати загальним ігри поле, так що кожен має точно такий же середовища. Так що якщо у вас є не скачав це вже, Ви повинні завантажити його, бо ти знадобиться його для безлічі завдань. І це два гігабайти скачати, так це може зайняти деякий час. На Гарварді він буде йти швидко. Так CS50 прилад. Тепер на початку, ми збираємося говорити про просто набір командного рядка матеріал, і так з тим, що я маю на увазі роботи в цій маленькій навколишнього середовища протягом тут. І зауважте, всі речі Я говорю тут і зараз працюватимуть, якщо ви всередині Термінал всередині машини, або якщо ви всередині вікно Gedit термінал всередині приладу. Так ці середовища є ідентичними. Але я збираюся піти в третій маршрут. І зверніть увагу, тут це трохи IP адреса прямо тут. Таким чином, ви не повинні зробити це, але це IP- address-- тепер, якщо i-- винятком він заблокований за допомогою цієї речі. ОК, так що IP-адресу більше в терміналі here-- так цей термінал за ось термінал в моїй Mac. Так що це жодною мірою в даний час пов'язаний з приладом на всіх. І якщо ви на Windows, то ви знадобиться що-небудь скачати спеціально для цього, зокрема, люди, як правило використовувати шпаклівки, Р-U-Т-Т-Y. Так що я збираюся зробити, це ввести SSH, а потім, що IP-адресу. Ну, jharvard в той IP-адресу. Так 192.168.24.220. Це страшно повідомлення, ігнорувати його. Просто введіть да. Це CS50 в коробці. Він просить пароль. І так в багатьох умовах, де він просить ввести пароль, [нерозбірливо]. У нас є багато питань, де він каже, що насправді не набравши. Вона не показує вам характери пароль при введенні, в усякому разі, в операційній системі, тому що, якщо хтось шукає через плече і вони бачать зірки зірки зірка зірка, то вони знаю, що ваш пароль це чотири символу. Таким чином, ідея це попросить Ви для вашого пароля, типу. Це не збирається показувати Ви герої, але це насправді прийняти їх. В цьому випадку, в будь-який час вам коли-небудь побачити запрошення ввести пароль справу з пристроєм, Пароль буде малиновий. Так малиновий. І ось всередині цього Вікно, яке знаходиться в моєму Mac, Я в основному мають точно такий же вигляд як всередині терміналу в приладі. Таким чином, ви не повинні робити це. Ви можете робити все, що хочу всередині машини. Я майже ніколи не роблять що-небудь в приладі. Я майже завжди мінімізувати, що і зараз Я працюю SSH в прилад. У всякому разі, якщо ви є повільний комп'ютер, Ви можете помітити різницю. Я роблю це, тому що я волію це вікно терміналу. Він має деякі функції, такі як Я можу розділити вікно, і тепер я можу SSH в через прилад. Я отримав два SSH відбувається відразу. Якщо ваш комп'ютер є особливо повільним і ви працюєте в приладі, і ви розумієте, що це дійсно гальмує, все. Як правило, набагато швидше, якщо ви SSH-е изд в. Але в іншому випадку ви можете працювати в будь-якому випадку. АУДИТОРІЯ: Що це означає SSH? Роб Боуден: Безпечні снаряди, щось подібне? Що SSH на увазі? Габріель: Безпечна оболонка. Елісон: Це просто безпечна оболонка. Роб Боуден: Безпечна оболонка. Це протокол, який you-- це безпечний протокол, так шифрується. Люди не можуть шпигувати мережі і подивимося, що ви говорите, до чого Ви SSH-е изд к. І справді, в старовину дні CS50, тому в 2009 коли я був на першому курсі, так що Ви працювали на CS50 проблемних наборів, було у вас SSH-е изд, щоб якийсь сервер що ми дали вам доступ к, і ви працювали там. Таким чином, ви не повинні це Графічний прилад. Ви не повинні Gedit. У вас не було всі ці речі, які Ви могли візуально точку та натисніть. Ви повинні були працювати в цьому інтерфейсі. Я віддаю перевагу працювати в даному інтерфейсі. Так частина того, що ми збираємося щоб йти протягом прямо зараз купа Команди, які ви повинні почати ознайомлення з як Ви просувається в курсі. І, чесно кажучи, як тільки ви звикнути до них, він так набагато швидше, щоб працювати в цьому середовищі ніж це працювати з шукачем, перетягування і натиснувши речі. Так ось ми тут. Тепер я просто SSH-е изд в, і так за замовчуванням location-- вас бачив деякі з цих команд в класі, але ми підемо по всім з них знову. За замовчуванням ми в це домашній каталог. І каталог, просто інше слово для папки. Таким чином, ми знаходимося в домашньому каталозі. Введіть Ls, список файлів В цьому каталозі. Я, мабуть, створили blah.c раніше. Тому у нас є каталог робочого столу. Ви помітите підсвічування синтаксису? Світло-блакитний підсвічування вказує каталог і прямо білий вказує тільки простий файл. Так що збираємося бути деякі інші кольори, які ви бачите. Виконуваний файл, ймовірно, буде щоб бути зеленим або щось подібне. Отже, ми знаходимося в домашньому каталозі. Тепер, якщо я хочу піти в інше каталог, CD є команда, яку я хочу. Так змінити каталог, а потім ви передати ім'я каталогу що ви хочете піти в. Так ось у нас є чотири варіанти. Я можу піти в закачувань, і тепер ми бачимо, тут він оновив цей дужках сказати, що я в ~ / завантаження. Так що ж таке Тільда? Це скорочення для ваш домашній каталог. Таким чином, практично все, що ви робите збирається бути по відношенню до вашої домашньої директорії, і PWD просто команда Я використовую один раз на рік, що просто друкує поточний каталог. Отже, ви бачите тут, що ~ / Завантажень дійсно вирішує к / будинки / jharvard / завантаження. Так / будинку / jharvard мій домашній каталог. Таким чином, ми можемо кд точка точка. Тепер точка точка знаходиться спеціальний каталог, який завжди відноситься до однієї директорії вгору. Так що, якщо я перебуваю в ~ / завантаження, потім компакт точки точка збирається довести мене до тильди. Що ми думаємо кд точка точка збирається принести мені тепер? Це буде приносити мені / будинку. Так Тільда ​​по робочій директорії друку, Я в нині / будинку / jharvard. один каталог вгору від цього, Тепер він говорить тут / додому. Тепер кд точка точка. Тепер я перебуваю в кореневому каталозі, і ви не можете зробити це знову. Ви просто залишитися в Кореневої каталог назавжди. Кореневої каталог має цілий букет речі, які, якщо ви хочете поглянути на, ти можеш. Наприклад, якщо я йду в бункер, який містить всі ці виконавчі файли, такі як Л.С., і кд, і всі ці речі. Таким чином, ці команди повинні існує десь в системі, і це в каталозі / бен. Але майже все, що ви робите це буде від вашої домашньої директорії. І кд без будь-яких аргументів б то не було, Ви могли б сказати, кд ~, не потрібно. кд збирається принести вам повернутися до вашої домашньої директорії. Один останній. кд - збирається повернути вас до останній каталог, що ви були в. Так що я просто cd'd два рази поспіль, так що моя Останній каталог був домашній каталог. Якщо я йду в слеш відро для сміття, і тепер давайте і в користувачем. Частка користувачів. Підемо в акцію користувача. Тепер я тепер в акцію користувача. кд - ще у відро для сміття. Таким чином, це стає особливо корисним коли ви have-- і він буде перемикатися. Так частка користувачів, задньої бен, частка відро для сміття. Таким чином, це стає корисним. Ви можете знайти собі того, багато, багато, багато вкладених каталогів. І ви хочете, щоб щось зробити реальний швидкий у верхній директорії. Ви йдете в цей каталог, зробити зміни і все в такому дусі, що, і тепер ви хочете піти туди, де ви були. кд -. Я завжди засмучений коли я, виявляється, йдете для цього каталогу I хотів зробити роботу в. Я завжди засмучуються, коли я зробив вона в два етапи, а не один крок, тому що це означає, що компакт-диск - збирається привести в цій проміжній місці замість де я хочу піти. Отже, ми бачимо всі файли списків. Ми знаємо, як обійти сих пір. Так що тепер давайте поговоримо про редагування файлів. Таким чином, в цьому, звичайно, ви майже завжди використовуватиме Gedit. Якщо ви хочете, ви можете зробити наступний крок і почати вивчати текст командного рядка редактор. Так існують різні варіанти. І ті, які, ймовірно, буде ставлення до вас, у нас є Nano, Vim і Emacs. Так Nano є новачки командного рядка текстовий редактор. Так Nano підемо на blah.c я створив раніше. Це просто це стандартний файл C. І ви побачите цілу купу речей відбувається в нижній частині екрана, і, мабуть, blah.c містить цей код на Сі. Таким чином, в даному конкретному редактора, те, що він говорив на bottom-- Тепер цей символ вставки, ми бачимо, цей ^ G, ^ X, ^ O. Так, що практично у всіх Контекст, що ви бачите, Ви могли б бачити, що символ курсора в в інших місцях в Інтернеті, на переповнення стека, щось подібне. Це майже завжди означає контролювати. Таким чином, щоб вийти я хочу зробити Контроль X. управління X, виходить. І я можу використовувати мою стрілку Клавіші для переміщення. Зверніть увагу, я не можу вказати і натисніть легко. Ви повинні використовувати ваш стрілку Клавіші для переміщення. Там може бути настройка щоб кликати. Але давайте зробимо деякі зміни. Тепер контроль X йти вихід. Це скаже Зберегти змінений буфер. Тепер підказка, у до да, н для немає. Контроль C для відміни. Я просто скажу, да. Ім'я записи в файл. За замовчуванням файл що вона вже є. Натисніть Enter. Добре. Тепер я просто редагувати файл, врятував його, і він змінився. Так Nano є найпростішим текстовий редактор звикнути. Альтернативи Вім і Emacs. Ті, текстові редактори вище рівня що є дуже крутий кривий навчання. Так моя особиста перевагу є Вім. І це має велике різноманіття варіантів. І як тільки ви звикнете до нього, ви ніколи не будете хочу піти в будь-який інший текстовий редактор, тому що ви просто є так багато речей, доступні для вас в них, але це займає дуже довгий час, щоб вчитися. Так, може бути, ви просто хочете, щоб змусити самі прямо зараз, щоб звикнути до нього, але я б сказав, це того варто. Але це важко. І тоді Emacs. Я завжди боротьба в Emacs, бо Я знаю, як це зробити абсолютно нічого. Мабуть Emacs не за замовчуванням встановлені на приладі. Ми, ймовірно, додати, що як установок за замовчуванням. Як тільки ви навчитеся один з Вім або Emacs, є немає вагомих причин для коли-небудь дізнатися з іншого боку, але це зовсім інший стиль. ОК, так що це редагування текстових файлів. АУДИТОРІЯ: Якщо ви застрягли в Vim прямо зараз, як зробити we-- Роб Боуден: Є декілька режимів в Vim, і є вся підручники з навчання Vim. Так що, якщо вам трапиться бути в режимі вставки в порядку для введення тексту, який ви можете введіть що різними способами, але я, як ви отримаєте в режим вставки. В або вийти з якийсь особливий Режим, який ви знаходитесь, просто Побег. І ви просто колотить Втеча отримати з усіх вкладених режимів ваш в. Нормально, зараз я повернувся в нормальний режим. І так в нормальному режимі, двокрапка. Ви бачите це з'явиться у нижній. А потім кв. Так кв піде, якщо ви внесли зміни, які я-- є я вніс зміни? Я зробив зміни, мабуть. Так що якщо ви внесли зміни, це буде кажуть, що ви можете поставити знак оклику. Я буду називати його вибуху. Таким чином, ви можете накласти заборону на просто кинути, нічого не роблячи, або товстої кишки WQ буде зберегти і вийти. Так ж взагалі писати. Так записати файл. Я можу написати і кинути. Або ви могли б просто дх шолома, д вибуху просто щоб вийти туди, незалежно про будь-які зміни, які Ви зробили. Гаразд, так що тепер давайте go-- ми можемо створювати файли. Почнемо видалення файлів. І я просто кинути в одному Швидкий нова команда, сенсорний. Так торкнутися Foo. Сенсорний бар. Сенсорний Баз. Якщо I Ls, тепер ми бачимо, що існують ці файли. Вони абсолютно порожній. Так сенсорним просто легко спосіб один, [нерозбірливо]. По-друге, технічно просто стані це, він оновлює мітки. Таким чином, будь-який файл, який ви створюєте має відмітка, пов'язані з ним. Так Баз був створений на 14 вересня в 16:21. Це зараз 16:22, тому, якщо Я торкаюся Баз знову, ми бачити, що Баз був найбільш Недавно змінені в 16:22. Але інакше я майже ніколи подивитися на тимчасові мітки на файли. Так дотик, тут я тільки за допомогою це створити кілька швидких файли. Гаразд, так що тепер гт Команда, що ми дбаємо про тут. І ми можемо гт бу. Скажімо видалити регулярний порожній файл бу. І ми можемо ввести у, і тепер він видаляє. гт Баз. Видалити звичайний порожній файл Баз і тип н для немає. Тепер він не видаляється. Так бар і Баз все ще існують. Foo пішов. Габріель: Продовжуйте говорити. Роб Боуден: Великий. Так настирливого повідомлення тут, видалити регулярний empty-- що ти там робиш? Видалити звичайний порожній файл. Так що, якщо ми не хочемо, щоб бути стурбовані цим повідомленням, ми можемо кинути в цьому -f Прапор, і таким чином, це сила. І тепер, якщо я гт -f, він не збирається кажуть ви хочете видалити цей файл. Це буде просто зробити це. І Ls, я не бачу бар там більше. Тепер, коли це можливо, небезпечно команда. Вона, як правило, не так уже й погано. Ми повернемося в секунду, як це може стати дійсно небезпечним. І давайте створимо деякі тимчасовий каталог. MkDir, інша команда. Так MkDir це команда що робить каталог. А тепер Л.С. ми бачимо цей хороший світло синій підкреслив тимчасовий каталог. Я можу компакт-диск в темп. І я можу MkDir Foo. перейдіть в Foo. MkDir бар. перейдіть в барі. Отже, ми бачимо, ми можемо легко отримати в якийсь досить глибокої вкладеності. Тепер, як я видалити каталог? видалити каталог. Так що, якщо я просто прямо намагаються гт, як ми це робили з звичайного файлу, гт бар збирається сказати не можу видалити бар. Це каталог. Там в спеціальної команди для видаленні каталогів, вид. Так видалити каталог бар. Тепер бар пішов. Отже, видалити каталог, я не дуже багато і не використовувати. Причина being-- тепер давайте зробити звичайний бар файлу тут. Так видалити каталог бу. видалити каталог. Не вдалося видалити Foo. Каталог не пустили. Таким чином, ви не можете використовувати видалити директорію в Каталог, є речі в ньому. Так у вас є кілька варіантів. Ви можете перейти в цей каталог, видалити все вручну, а потім вийти і RMDIR каталог. Це, безумовно, звучить дратує. Що робити, якщо є тисячі файлів в там? Ну, ви могли б гт *. Ми будемо говорити про * в секунду. Це в основному означає, що всі речі. Але ще краще, так гт -г. Так гт -r-- в великій кількості контексти, -r означає рекурсивний, який ми будемо говорити про те, що рекурсивні кошти в декілька тижнів. Але це в основному означає, траверс повнота цього каталогу і видалити все. Так гт -г Foo збирається сказати спуститися в каталозі Foo? Так. Видалити звичайний порожній файл Foo / бар? Так. Видалити каталог Foo? Так. Так що тепер Foo і все в межах її вилучено. Тепер, може отримати особливо дратує when-- давайте торкатися 1, торкатися 2, доторкнутися 3. Може є ціла купа файлів. Якби я хотів, я міг би створити тисячі файлів в тут. І гт -г Foo збирається щоб бути дуже дратує. Так, так, так, так, так, так. З набагато більше файлів ви бачити, як багато разів Я мав би набрати да. Ну, ми тільки що бачили колись, як ми можемо позбавитися від необхідності набирати так, -f. Так MkDir Foo кд Foo сенсорним 1 2 3. Отже, гт -rf Foo збирається видаляйте поспіль Foo цілком. Ні швидке. Немає нічого. Foo пішов. Так що я вважаю за краще використовувати це Команда весь час. Тим не менш, це дуже небезпечно команда, тому що, якщо я роблю щось на зразок це, він не запросить. Це вже не буде. І це відбувається досить часто, і навіть у більш високого рівня CS курсів. Іноді ми побачимо щось, де хто- каже, що я випадково наш гт ВЧ-е изд мій будинок каталог і всі мої P набору пішов. І це руйнівне, але немає відро для сміття. не там немає там нічого щоб ви могли отримати. Це просто пішов. Ще гірше буде щось на зразок гт -rf /. Таким чином, ми тільки що обговорювали що кореневої каталог. Він проводить всі файли на вашій системі. Речі, як правило, отримати досить брудно при видаленні речі, як Ls, і кд, і всі з них. АУДИТОРІЯ: В чому різниця між РМ, РФ, і гт * Роб Боуден: Так гт * - Елісон: Питання було в чому Різниця між РМ, РФ, і гт *. Роб Боуден: Так гт *. Зірка в загальному означає, що всі вміст цього каталогу. Спроба думати про інше способи показуючи зірку. Ну, зірка насправді взагалі означає відповідність будь-який малюнок. Так що, якщо у мене є файл з ім'ям dog1, торкнутися dog2, доторкнутися cat1, доторкнутися КАТ2. Так Ls * 1 збирається друкувати cat1 і dog1, бо зірка може бути заповнене в with-- потрібно бути там, але зірка може бути або кішку або собаку. Це дика карта. Це слово я шукаю. Дикий карти. Або я міг Ls собака *, і Я добрався, щоб бачити dog1, dog2. Так що ті, які перераховані файли які відповідають цій конкретній схемі. Можна використовувати Ls таким чином. Ls * зірка відповідає чому-небудь. Так це буде друкувати все вміст цього каталогу так як всі вони збігаються. Це не збирається друкувати що-небудь в каталогах верхнього рівня. Якщо у мене є підкаталог, Foo, і доторкнутися 2 січня 3-- так що тепер, якщо гт * зірки, видалити cat1, КАТ2, dog1, dog2. Не можу видалити Foo. Це каталог. Так зірка розширюється до всього файли в каталозі. Так технічно гт *, як кажуть гт cat1, cat2, dog1, dog2, щось. Тоді як гт -rf, технічно зірка буде зробити те, що ми хочемо, але гт -rf-- якщо я виходжу з цього каталог, гт -rf температура, що збирається піти в температурі і рекурсивно видалити все. Так зірка окремий в тому, що, що Зрозуміло, по-- так це справа що я біжу в цю справу що спонукає мене для команд а потім виконує і робить їм, я називаю це моя оболонка. І так ця оболонка сама програма. І якби я хотів, я може працювати в / бен / Баш. Оболонка називається Баш. І тепер ми бачимо, щось змінилася незначно, і це тому, що мої настройки для оболонка дещо відрізняються. Але тепер я технічно працює Оболонка в моїй оригінальній оболонки, і я можу вийти з цієї оболонки, і тепер Я повернувся до своєї раковини верхнього рівня. Мета кажучи що is-- зірку. Так зірка є те, розуміють Баш. Так гт -rf, -rf прапор зрозумілі лише ГТ. Він знає, що, коли вас пройти -rf що вам хочете, щоб він рекурсивно видалити всі файли без видачі запиту. Зірка-то зрозумів по Баш, що, коли ви говорите, гт *, Баш не збирається говорити агов гт *, зняти зірку. Bash збирається сказати гт * видалити cat1, КАТ2, dog1, dog2. Це автоматично буде розширюватися всі файли в каталозі. І точно так же тильди ще один Символ, який Баш розуміє. Коли ви говорите, кд ~, Баш розширює що у вашому домашньому каталозі. Інші питання досі? ОК так що ми збираємося почати йти швидко. Вкладка завершення. Просто, щоб кинути його там. Багато людей не розумію, що це існує. Так що, якщо я друкую кд Доу, я хочу піти в завантажень. Мені не потрібно, щоб ввести nloads. Я можу просто натисніть Tab. Так вона визнає, що Dow є префіксом, що нічого не збігаються ще в цьому каталозі, так що це буде завершити, що для вас. Тепер я можу ввійти. Я також, що рекурсивно. Так MkDir щось. Підемо в Foo. MkDir бар. Так повертаючись до мого дому каталог, я бачу, скачували. Тепер потрапивши вкладку знову, автоматично збирається заповнити Foo. Це єдиний довідник. Удар вкладку знову, автоматично збирається заповнити бар. Так що тепер я в (~ Завантаження / Foo / бар). Так що це завершення вкладка, всякий раз, коли я добрався до робочого дня, і я стою над чиєсь плече, і вони збираються гт D-O-W-N-L-О-A-D-S, я вмирає. Просто вкладка, вкладка, вкладка, вкладка. Так виразно використовувати вкладку. І точно так само і вниз, багато людей Просто сталося ніколи не вдарив вгору і вниз. Це буде пройти попередній Команди, так що якщо ви просто побіг щось, і ви хочете, щоб запустити його знову, просто затримати, поки ви отримаєте до нього. Добре. Так швидко, деякі інші речі. Давайте повернемося в темп. Давайте створимо кілька файлів. Так тут, я просто буду перераховувати якісь слова. собака, кішка, мяу. Давайте зробимо собаку, рибу. Так що тепер репутація є дуже корисні команди, що ви використовувати для пошуку в усьому файли для конкретного тексту, і технічно це можна зробити дійсно складні вирази для того, щоб відповідати. Так от, якщо я вичленувати, і те, що я хочу, щоб шукати? Скажімо Я шукаю кішок, і Я хочу, щоб шукати всі ці файли. Так як я роблю всі ці файли? Зірка. Таким чином, в файлі однієї, у мене є кіт. Я, ймовірно, могли б називається вона щось краще, бо виглядає як номера рядків або щось. Але в файлі одного мене є рядок з кішкою. У файлі дві у мене є рядок з кішкою. Так що тепер я можу зазирнути всередину файлу одного і см, о, так, що файл дійсно кішку. Повідомлення файл зо три не був підібраний бо кішка не там. Я можу виокремити інформацію про мяу. Тільки файл два має нявкання. Так що це можна поєднати, знову, з -r, яка як я вже говорив часто означає рекурсивний. І тому я можу прийти сюди, Grep -r для будь-який екземпляр of-- давайте редагувати цей просто викинути кішку в там. Так вичленувати -r для будь-якого примірника Кішка в даному каталозі. І це буде рекурсивно пошук поддиректорий. Таким чином, в Baz, є кішка. В TEMP / 2, є кішка. І в температурі / 1 є кішка. Так ось пошук в файлах. Тепер ви можете також використовувати знахідку. І так знайти конкретно про пошук файлів із заданим ім'ям. Так давайте зробимо деякі більш. Підемо в завантажень. Сенсорний dog1. Сенсорний КАТ2. Сенсорний cat_dog. Сенсорний CatCat. Тому я хочу, щоб знайти всі Файли з собакою в ім'я. Так знайти, і на найдовший раз, коли я не пам'ятала, як знайти не працював, поки я, нарешті, читати щось, що змусило його так ясно. Так що знайдіть, автоматично рекурсивно. Вам не потрібно, щоб пройти -r. Так що знайдіть точку. Ми не говорили про точку ще. Тоді як точка точка завжди означає один каталог вгору. Dot завжди означає поточний каталог. Так що я міг гт -r точку в Точно так же я можу гт -rf *. В остаточному підсумку вони зробити те ж саме. гт -rf точка збирається зняти весь поточний каталог. ОК, які я не хочу, щоб зробити там. Але знайти точку. Так рекурсивно шукати струму каталог, і тепер все після цього купа прапорів, які ви використовувати, щоб виключити речі від повернення. Так що знайдіть точка повертає все те, що його можна знайти в поточному каталозі. Такі всі файли рекурсивно шукати. Ми побачимо, деякі з тих, хто в секунду. Але у випадку, якщо вам цікаво, як я роблю що, таким чином, командне К, принаймні в моєму терміналі в Mac очищає його. Контроль L зазвичай очищає це для будь-якої термінал. Ви також можете ввести ясно. І якщо ви коли-небудь в дивну scenario-- це трапилося зі мною пару time-- де кольору ваших підказок всіх зіпсувало, або вам не в стані побачити що-небудь набираючись коли ви друкуєте, бо іноді як колір фону встановлюється так само, як кольори переднього плану і тепер ви не можете бачити шрифти. Скидання це те, що просто скидає Вам замовчуванням чорному тлі с, білий спереду, або те, що Ви встановлюєте їх. Так, де ми були? Знайти точку. Так що тепер все це в минулому Точка обмежує результати до чогось, що відповідає дана модель. Так от, я хочу, щоб пошук все з ім'ям кішки. Я нічого не отримав. Чому це так? Ну, я просто шукаю щось з точно таким ім'ям кота. Якщо я хочу, щоб шукати щось що є певний шаблон, і cat-- котирування технічно не є необхідними, але я кидав їх туди. Так що тепер він знаходить CatCat, бо це єдине, що має деяке довільне картина з наступним кішки. Я можу поставити кішка *, і зараз знайти CatCat, cat_dog, КАТ2, бо ті всі речі з кішкою на початку подальшим небудь. Ви можете поєднати це. Якщо ви хочете знайти всі файли C що у вас є, ви можете зробити * .c. Ми blah.c тут. Так ось знахідка робіт. Ви можете шукати. Він має цілий букет прапорів для подальших обмежень. І один на них, скажімо -d. Так застарілим. О, це не те, що я хочу. Чи не -d. Тип d. Так що знайдіть точку - тип d. Так що, що тільки що зробив це Я шукаю для всіх файлів в поточному каталозі з a-- d позначає directory-- типу каталогів. Це повертає всі каталоги в поточному каталозі. І типу F всі регулярні Файли, все не каталоги. Так що це просто Приклад інших способів може обмежити пошук іншої ніж просто ім'я файлу. Це було 30 хвилин. Все ще. Елісон: Я вітер через. Все буде добре. Роб Боуден: Таким чином, деякі інші речі. Тепер бац, знак оклику. Так що в цілому означає: добре, давайте подивимося приклад. Так! Е, що, що будемо робити? Ну це, здається, повторив знахідка точка -типу е. Що о! Г? Це просто вичленувати -r кішку *. Так бац ви можете використовувати, щоб повторити Недавно зробив команду. Так що, якщо я друкую! GRE, він збирається знову запустити команди, які почалися з GRE найбільш останнім часом. І ви можете бачити все це Команди з історією. Так історія. Це все Команди Я біг сьогодні. І добре, що це не в буквальному сенсі обмежується сьогодні, але я використовував тільки це Прилад на сьогоднішній день. Це ваша повнота Історія вашої оболонки Bash, за винятком того, відсікає на якийсь момент. АУДИТОРІЯ: Що станеться, якщо ви робите Історія команди [нерозбірливо] і про помилку в результаті все одно буде друкувати the-- Роб Боуден: Так, якщо є Помилка в одному з цих commands-- так скажемо, що це помилка команди не знайшов. Проте з'являється в історії. Добре. Інші питання по темі? Так ось вибух. Тепер, дійсно корисна команда, людина. Так що дає посібник для даної команди. Так скажімо, людино Ls, так це показує мені Ls. У ньому перераховані вміст каталогу. І це те, де я бачу, що є ці різні прапори, які існують. Таким чином, ми бачимо, що Ls -l існує якби ми мали прочитати, що. Ls -l дає мені це повний список довідник з хто володіє файл розмір файлу, модифікований мітка. Так Ls -a ще один, що ви могли б насправді використовувати декілька частіше. -al мій самий загальний ознака ці минулі Ls. Так -а, зверніть увагу, що є багато більше файлів, ніж просто Ls. Ls -a. Що спільного з усіма цими файлами? Вони починаються з точки. Так що ця угода в Linux, що файли, які починаються з точки приховані. Так це просто означає, що коли ми просто прямі Ls, або ми шукаємо цей каталог, використовуючи знайшов еквівалент, або для Windows Провідник еквівалент, що ми не хочу, щоб ці точкові файли. Вони просто забруднюють погляд на речі. Таким чином, вони приховані якщо ви спеціально просити їх щось на зразок -а. Так що я можу кд в .local, і я бачу, що, що саме по собі є каталог з загальний каталог і додатки і бла-бла-бла. Так точка, файли, вони просто приховані. ОК, так що інші важливі. У мене є пара, я можу пропустити. Давайте просто реальний швидкий розмова про Перенаправлення файлу речі. Таким чином, є цілий комплекс серія речей, які ви можете робити з цим, але тільки, щоб побачити їх, скажімо, луна. Ще одна команда. Дійсно німий команда. Все це робить друк, що я говорю це, щоб. Так відлуння привіт. Це просто повторив привіт екрані. Привіт світ. Відгомони привіт світ. Так одна команда або один Символ, який Баш розуміє це більше, ніж символ, і тобто вихідний символ для файлу. Так що, якщо я вихідний, щоб це Фу, є тепер файл називається Foo, всередині який є привіт світ. Так помітити, що, коли я відлуння привіт світ труб в Foo, це не відлуння привіт світ. Замість цього він був введений в файлі Foo. І інша команда просто кинути його на тебе, кіт. Це простий спосіб, щоб просто повністю список вмісту файлу так що у мене немає, щоб відкрити текстовий редактор, для його перегляду. Так вміст Foo файл є привіт світ. І я міг кішка blah.c, вміст цього. Знову ж, це команди, які, не очікувати вас є їх все напам'ять. Ідея ви бачили їх. Може бути, ви працюєте на щось, і ти як я втомився від відкриття цього файлу. Я хотів би просто подивитися на утримання дійсно швидко. Ви можете зробити це, то озирнутися назад і сказати про I пам'ятаю щось подібне що існує, і це кішка. Так що відбувається в файл. Тепер є насправді не нічого хорошого Приклад читання з файлу ще. Щось, що бере щось від стандарту в? Будь-яка проста команда Linux? Коли ми добираємося до нього, через пару тижні все piece-- добре, що, На цьому тижні у вас є шматок, де ви почати приймати введення від користувача. І так, як правило, при вводі що введення з клавіатури. Замість того, щоб друкувати, що вступники на клавіатурі, Ви можете замість труби з файлу так що, коли ви робите Маріо, ./mario, труба в будь-якому даному файлі і що збирається запустити програму Маріо. Не чекаючи на введення в клавіатура, а не це просто зачитаю рядки з файлу Foo. Так більше Foo поміщає його в файл Foo, і менше, ніж Foo бере матеріал з файлу Foo і використовує в якості вхідних даних, що до цієї програми. І тільки, щоб побачити його, ми могли б також повторити Foo бар Баз, а потім замість одного більше, давайте зробимо два в Foo. Що це робити? Це просто додає в файл. Таким чином, замість помітили, якщо я луна-бла в Foo, а потім кішка Фу, це просто бла. Отже, коли ви висновок в файл, його повністю перезаписує файл. Якщо ви просто хочете додати, двічі [? грейдер. ?] І останнє, це труба. Труба стає набагато складнішим, де він приймає висновок однієї команди і подає його в такій команді. Таким чином, деякі звичайна справа, історія. Так, тьху, я не хочу дивитися на це. Показати всі команди в моїй історії де я вичленувати-ред за щось. Ні, це помилка. Показати всі команди, де я знаходжу. Всі знаходяться команди я коли-небудь керували. Так історія. Тепер історія виводить на екран цей список команд, але я не хочу, щоб Вихід його на екрані. Замість цього я збираюся труби нього в Grep. Так що давайте вичленувати інформацію про всі випадки знахідки. Так що тепер замість GREP взяття вхід, замість of-- Grep здатний обробляти як input-- ми за допомогою Grep трохи по-іншому тут. Так замість того, щоб друкувати список речі, які ми хотіли шукати і сказав Grep приймає в якості вхідних даних. Так що, якщо я просто Grep знайти, його чекає, щоб я типу речі. Так кіт привіт знайти. Привіт. Знайти. Зверніть увагу, кожен раз, коли я друкую знайти він визнає, що я набрав знахідку. Таким чином, замість цього, буде пошук файлів для знахідку. Так історія тепер збирається Вихід Перелік усіх команд. Ми покласти, що вихід, і ми годуємо його вичленувати, і тому він впливів усі примірники знайти. Тому я сказав, що це був би заплутаним це якщо я-- це все-таки заплутаною. Якщо я вичленувати інформацію про Grep. Зверніть увагу, що це значною мірою завжди показуючи команду I просто побіг, бо цій команді Сам має Grep всередині нього. ОК, так що будь-які питання по темі? І я буду передавати його по в цей момент. Сподіваюся, це хороший Огляд усіх команд що вам не потрібно мати запам'ятав, але вони складають твердий 95% того, що я зробити в командному рядку. Також майте на увазі, що в командному рядку Сам, Баш це мова програмування, і тому, коли ви сідаєте на нього, ви можливо, захочете зробити дійсно складні речі. І тому він має щось на зразок петель, і IFS, і всіх тих, що ви збираєтеся, щоб звикнути до зі своїми мовами програмування. Але що знаходиться за межами Обсяг даного розділу. ОК, так що ніяких питань? Аллісон: Ні? Габріель: Ви збираєтеся to-- Елісон: Я можу зробити це на шахті, якщо ви хочете. Ми можемо бачити, що відбувається. Роб Боуден: Off для Allison. Елісон: Ву. Ти недосяжний, Роб. Ти хочеш, щоб переключитися з вами? Або ви отримали, ОК. Я збираюся спробувати і не цілком може бути як тривалим там. Давайте подивимося, якщо це воля працювати так, як я хочу, щоб. Може бути? Ха-ха! Так. Так що я просто хочу, щоб дуже швидко йти через змінні, цикли, умовні, і трохи від компілятора. Якщо у вас є питання по в будь-який час, будь ласка, припиніть мене. Ці хлопці будуть нагадувати мені повторити Ваше питання в разі, якщо я забув, але не повинно бути занадто погано. Так змінних, так. У нас немає одного з ваших Скретч частини тут. Я впевнений, що більшість з вас, якщо Ви були якісь ігри що ви створили з нуля, ви мали відслідковувати те, як оцінка, або час, або щось подібне. Так що ті, яскраво-помаранчевий штук, які ми бачимо там просто подряпин форма змінні, і ви, безумовно, бути з допомогою змінних протягом ваших програм. Якщо ви не, я не дуже упевнений, що ви робите. Але в будь-якому випадку, велика справа, визначення змінних. З С кожна змінна має мати тип, оголошений, так що я дав вам дуже Взагалі один у верхній частині. Таким чином, ви будете мати ваші введіть, а потім все, що Ви вирішили назвати вашу змінну. Таким чином, в цьому випадку необхідно ввести в вашому списку змінних. У нас є три приклади. Чар деякій мірі, з А, який є те, що Я впевнений, що ви всі хочете щоб отримати в цьому класі. Ви можете визначити декілька змінні по одній лінії поки вони все той же тип, яка є нашим другим прикладом є де у вас є три Змінні, х, у, м Вони все поплавки. І тоді ви можете також, в цей останній Приклад з INT рахунком і числа команд, ви можете инициализировать їх прямо там. Таким чином, в середньому, наприклад, де ми просто поплавок х, у, і г, ті, які ще не инициализирован. Вони не мають ніякої цінності. Або вони мають значення для сміття. А якщо спробувати і використовувати їх, компілятор буде кричати на вас. Ви повинні як оголошувати і инициализировать змінні. Так що в цьому останньому, ми робимо інше. Ми оголошуємо змінні з забити і кількість команд, і ми ініціалізації їх, даючи їм їх початкові значення 7 і 4 відповідно. Прохолодний. Все добре? Дивовижний. Отже, деякі конвенції. Якщо ви, хлопці, читали через стилі 50, ці просто речі, які ми хотіли б для Вам реалізувати в вашому стилі. Так значущі імена. Якщо ви почнете називати речі тільки х, у, г, особливо як ви отримаєте в тривалий програми, ви ймовірно, заплутати себе і бути як те, що це змінна, що відноситься до. Я поняття не маю, що це означає. Так що, якщо це мається на увазі провести оцінка, називають його забити. Якщо це мається на увазі провести якусь відповідь або привести, дати йому ім'я, як, що. Для петель, які ми будемо потрапити в на наступному слайді, Одна буква змінні прекрасні. Роб Боуден: I, J і К. всього угоди для для петель що всі чекають їх називатися I, J і К. Ви можете зателефонувати them-- я бачу ряд стовпець або рядок виклику іноді протягом двох вкладених циклів, і це також свого роду стандарт. Але я і J повністю зрозумів. Елісон: Так, я і J ти абсолютно нормально. Для ясності, як в деяких з ваших наборів P, можливо, має сенс, щоб мати більше описові речі в там просто щоб відслідковувати його. Але я думаю, I, J і К я думаю, Переважна більшість з нас все використовують. Роб Боуден: З цим конвенції, так стиль має важливе значення. Це один з чотирьох осей на якому ви оцінюються, і це так легко просто перейти Ваш P встановлений в кінці і переконайтеся що їсти не стилістичні помилки. Тому переконайтеся, що ви табулируем правильно. Переконайтеся, що ваші змінні називаються. Залиште деякі коментарі. Це дуже легко отримати ті пункти. Вам не доведеться думати про те, що-небудь для того, щоб отримати ці окуляри. Вам не потрібно, щоб зрозуміти що-небудь з. Це просто робить його виглядати досить. Елісон: Насправді, ми є стиль 50, який розповість вам, де ви Мессінг , Якщо ви зіпсувати по стилю і скажу вам точно, що вам потрібно виправити і як вам потрібно, щоб виправити це. Це також просто добре відзначити що це політика, звісно що якщо ви в офісі годин і ваш код є безлад, ми можемо відмовити в допомозі Ви поки не виглядає краще. Так що почніть прямо, тримати єдиний стиль, Ви також просто збирається зробити ваше життя набагато простіше, коли Ви намагаєтеся пройти налагодження. Якщо ви намагаєтеся з'ясувати, де Ви пропускаєте фігурна дужка і вони всюди, ви просто зробити своє власне життя складніше. Так відповідати стилю. Я обіцяю, що це буде зробити ваше життя простіше. Це зробить наше життя простіше. Все буде набагато щасливіші. І це те, що ви хочете. Габріель: Ваша оцінка буде вища. Елісон: Так, і ваша оцінка. Якщо TF це, як ви, має тенденцію бути сприятливим. Гаразд, а потім просто Другий момент тут. Послідовні ініціалізації. Так, як ми бачили, можна оголосити і ініціалізувати речі. Кілька змінних в одному рядку. Одна річ, ми б не хотіли вас зробити, це оголосити деякі змінні а не инициализировать їх на те ж саме лінія, що ви ініціалізації інших. Таким чином, у випадку, що зроблено не має сенсу взагалі, ми маємо приклад тут де ми оголосивши цілими в змінних кварталів п'ятаків і пенні, але квартали і пенні немає початкового значення. Ми не инициализировать їх, але прямо в середині там ми вже инициализирован п'ятаків на 0. Так що або робити, чвертей і десять центів, гроши. Або чверті рівнятися 0. Dimes рівнятися 0. Пенні рівнятися 0, або щось ті початкові значення. Великий річ зі стилем, бути послідовним. Якщо ви сумніваєтеся, бути послідовним. Але слідувати нашим гідом стиль теж. Прохолодний. Все там добре? АУДИТОРІЯ: Де стиль керівництва? Елісон: гід по стилю є on-- що сайт? Габріель: Я думаю, що це manual.cs50.net/-- Елісон: Стиль? Габріель: Стиль. Так. Елісон: Так. Так питання, де це стиль 50. manual.cs50.net/style. Да? АУДИТОРІЯ: Якщо ми визначаємо Змінні, це ОК якщо покласти, як [нерозбірливо], як INT оцінка, а потім інтервал мета. Так би ви сказати, що тепер ми отримав визначити їх разом? Елісон: Так питання, слід у вас є надлишкова код коли ви визначаєте змінні, такі як Int рахунком і На наступному рядку INT грі? Роб Боуден: Є, безумовно, випадки, коли надлишкова код погано. Я не розглядатиму що надлишкова код. Я майже ніколи не заявляють кратне змінні по одній і тій же лінії будь-коли. І якщо що-небудь, це тому, що Зазвичай я залишаю свого роду коментар пояснюючи, що змінна є для. Так що я буду говорити, INT воротаря слеш слеш. Відстежує б то не було. Загалом слеш слеш. Так що це набагато грубіше таким чином поставити їх все на одній і тій же лінії. Я просто ніколи не ставив їх на одній лінії. Елісон: Я відчуваю, що це особиста перевага на даному етапі. АУДИТОРІЯ: Чи означає це, піти на для петель та інше теж? Роб Боуден: Як всередині? Як междунар я дорівнює 0 кому довжина дорівнює-то? Це у вас немає вибору. С для петель ініціалізації part-- так що ви, можливо, бачили тільки INT I дорівнює 0 коми я менше ніж те, що крапка з комою я плюс плюс. Це INT I дорівнює 0, технічно можна також робити те, що ми бачили раніше з синтаксисом комами. INT I дорівнює 0 коми J дорівнює 3 кома до дорівнює 5. Ви не маєте вибір, щоб розділити що на декілька ліній, і це стандарт. Бачачи це є добре. Аллісон: Awesome. Ну, зручно переходити в петлі. Так що так, ось у нас є кілька прикладів з петлі, що ви, хлопці, бачили в порожньому. І, звичайно, всі ці може просто бути відтворені у С. І вони в основному дозволяють вам повторити який-небудь ділянку коду до певного стану задовольняється, які ми будемо потрапити в праві після розмови про петлі з умовних. Таким чином, ми маємо три основних типи. Для, в той час, і зробити час, який ми все піде через прямо зараз. Отже, спочатку один для петель. Таким чином, для деяких умов, виконати цей блок коду. У нас є трохи прохолодною Графік тут внизу. Але в основному у вас є в Ваш для, що першою лінії, ви збираєтеся инициализировать змінні. Так як ми говорили, я це дорівнює 0 або I, дорівнює 10. Все, що потрібно, що Мінлива бути це збирається инициализировать там, оголошувати і ініціалізувати до деякого значення. Отже, ми маємо деякі стан, що відбувається бути перевірка нашого Мінлива проти чогось. Таким чином, в цьому випадку типовий випадок, де може бути, ви хочете, щоб ця частина коду щоб виконати п'ять разів. Таким чином, ми повинні були б INT I дорівнює 0, і ми хочу, щоб це було, коли я менше 5. Так що стан просто збирається перевірити, що кожен раз, коли. Якщо цієї умови істинно, це збирається запустити код, який точно що ця маленька схема показує. І так він виконує його. Він оновлює змінну, яка є те, що ми бачимо в останній частині нашого за ініціалізація кільця є. Так що будемо просто продовжувати робити це поки що умова не виконана, і потім він виходить цикл і продовжити перейти з іншою частиною вашої програми. Все там добре? Прохолодний. Так ось приклад, дуже схожі на те, що я тільки що говорив о. Таким чином, ми просто хочемо, щоб роздрукувати це CS50 в 10 разів. Отже, ви бачите тут у нас є наш для, а потім ми ініціалізації змінної Я рівним 0. Наша умова перевірки що це менше, ніж 10. Так оцінюють в вірно, коли ми вперше почати, а потім оновлює нашу змінну кожен раз, що він насправді виконує і виводить це CS50. І закінчиться після 10 раз. Прохолодний. Таким чином, хоча петлі наступного разу. І, як ви бачите тут, ми просто повинні деякі в той час як це condition-- питання? АУДИТОРІЯ: Як я можу стрибати насправді просто не одне число, але два номери [нерозбірливо] Я плюс плюс плюс? Елісон: Отже питання в тому, як ви можете оновити змінну більш ніж одного за один раз. Так що я плюс плюс буде оновлення на одиницю кожного разу. Якщо ви хотіли, щоб оновити його, два, ви могли б зробити, я плюс дорівнює 2. Роб Боуден: Ви бачили плюс одно в лекції ще? АУДИТОРІЯ: [нерозбірливо]. Елісон: Це ефективно Те ж саме, як я дорівнює я плюс 2. Так що збирається взяти його і оновити його на два щоразу. Плюс дорівнює якраз те, ми називаємо синтаксичний цукор. Роб Боуден: Так, тих, існують майже всі арифметичні операції. Так що я раз, рівне подвоїть число. J розрив дорівнює 3 така ж, як J дорівнює J ділиться на 3. Елісон: Або мінус дорівнює 2 буде зменшення I на два щоразу. Роб Боуден: Навіть сучасна одно. Ви ще не бачили бітових операторів, але вставки дорівнює і амперсанд одно, всі ті, існують. Елісон: Так багато разів, особливо з перших двох наборів P, Ви будете, ймовірно, збільшується на один, так що я плюс плюс, J плюс плюс всі речі, які ви збираєтеся щоб, як правило, бути з допомогою. Але що стан поновлення повністю під вашим контролем. Ви можете оновити його будь-якими кроком або в який би шлях ви вирішите. Може бути, ви навіть хочете, щоб це було випадкове число іноді. Але так, є багато речі, які можна зробити з цим. Ви не обмежені I плюс плюс. Роб Боуден: Просто так вас знаю, що це існує, це також існує в іншій формі, плюс плюс я. Так що якщо ви коли-небудь пошуку в Інтернеті і трапиться побачити плюс плюс я, в значній мірі означає те ж саме. Елісон: Прохолодний. Добре? Дивовижний. Таким чином, хоча петель. Дуже схоже. У вас є яка-небудь умова. Головне, щоб помітити Тут замість того, три різні частини встановити, у нас є один. Ми просто є умова який перевіряється. І таким же чином, як довго, як що стан оцінюється як істина, Ваш код буде працювати. І якщо це брехня, це припиняє, крок на наступній частині вашої програми. Так що це свого роду like-- що хороший приклад перевірки з якоїсь нормальний стан? Габріель: Тоді як вірно. Елісон: Ви могли б зробити в той час як вірно. Добре, 1 дорівнює 1. Роб Боуден: Ви можете зробити while-- тільки замість використання для петлі, Ви завжди можете закодувати для циклу в той час як петля, так що я більше, ніж 0 або в той час як я менше 10. Аллісон: Awesome. І тоді ми робимо під час петлі, які відмінно підходить для перевірки користувача, де Ви хочете, щоб отримати щось від Ваш користувач, побачити, якщо вона діє, а потім продовжити звідти. Так, одна з речей, щоб знати, є з зробити в той час як у тому, що він збирається виконати, і тоді він буде повторно виконати якщо ця умова виконана. Так, ймовірно, кращий спосіб зробити це це просто, щоб побачити приклад тут. Так як я щойно згадав, користувач перевірка дійсно useful-- або зробити whiles дійсно корисно з перевіркою користувача. Так що це просто буде повторно запитувати деяку користувача поки вони не вказати позитивне число, які можуть бути корисні для вашого P набору на цьому тижні. І тому в даному випадку, коли ми спочатку запустити цю програму, він збирається друкувати введіть позитивне число. Це збирається отримати деякі введення від користувача, а потім він збирається перевірити що вхід на умові що ви встановили для нього. Таким чином, в даному випадку це буде перевіряти. Це буде сказати, в порядку, це наш вклад негативний, або це 0 або негативний, який буде недійсним. Так то воно буде повторно запрошення. Питання? АУДИТОРІЯ: Це те ж саме, то, як в той час як петлі, якщо ви просто скопіювали цей код і поклав його [нерозбірливо] петлі а? Елісон: Так питання було б це може бути таким же, як тільки час цикл, якби ми мали просто скопіювати той час як цикл вище. Таким чином, в цьому випадку, ваш час петля збирається перевірити стан в першу чергу. Таким чином, в цьому випадку, якщо ми спробували написати просто як час циклу, було б сказати, в той час як вхід становить менше одного. Але ми не повинні вхід для нього. АУДИТОРІЯ: Якщо вас [нерозбірливо] в той час як цикл в тому числі цей код, але тоді ви впоралися код вище той час циклу теж. Просто потрібно було цей код [Нерозбірливо] в той час як цикл. Елісон: Було б те ж саме, так. Таким чином, ви могли б просто write-- замість того, щоб do-- да. Габріель: Але це більш елегантно. Елісон: Так, це більш елегантно. Ви можете потрапити в дизайні і ще багато чого, але так, ви можете повністю зробити це. Ще питання? Добре, прохолодно. Таким чином, ми багато говорили про умови з усіма цими петлями, які ми маємо, так що ми насправді потрапити в умови в логічних виразів. Знову ж таки, ви використовуєте їх в C, так тільки почасти перехід від більш графічним інтерфейсом насправді кодування. Круто, так великий, якщо. В основному тільки дозволяє ввести якась логіка в нашу програму і перевірки SYS умови. Таким чином, в даному випадку, в порядку, п більше 0? Так, це, так що ви можете виконати це. Це просто перевірка деяких стан, що у Вас є встановити, що я думаю, ми все комфортно з перевірки умови. Прохолодний. Так що, якщо ще ваш другий, Ви можете сказати, в порядку, якщо це правда, зробити це першим ділом. В іншому випадку я хочу, щоб ви за замовчуванням і зробити щось ще. Як у цьому випадку, ви або вибрати позитивне число або негативне число. У вас є тільки два варіанти. Ви повинні це виконати незалежно про те, що ваші користувач вводить. Таким чином, ви можете сказати, добре, це більше, ніж 0? Прохолодний. Роздрукувати позитивне число. Якщо це не так, роздрукувати негативний. Все добре? А потім одна справа визнати, що якщо, якщо умова виконана, ще ніколи не також виконати. Тільки один з них буде виконати за один раз. Так що це компроміс. Ви не можете мати обидва. Ви повинні або перша умова. Ви повинні або якщо або в іншому місці, не так. Який тоді може зробити речі ще більш складною, тому що ви можете зробити, якщо, інакше він, а потім ще. Таким чином, в даному випадку, ми є три умови. І знову, тільки один з них є буде в кінцевому підсумку виконується. Таким чином, ви можете бути здивовані, добре, що, якщо вас є щось, що можна зустріти два з них. Може бути, все, що ви вводу зустрічається як умова бо, якщо і ще якщо. Єдине, що збирається бігти Елісон: Як тільки він знаходить щось що він відповідає умові, що істинно, що до чого це буде не бігти і нічого більше. Так що, якщо у вас було це число між 0 і 5 для вашого першого, або це число між 3 і 5 для ще, якщо частина, і ви вводите number-- Я сказав 0 і 5 і-- 4. Це вдарить перший. Це скаже ОК, це число між 0 і 5. Виконати і залишити. Він ніколи не буде вдарити, що другий варіант. Прохолодний? Дивовижний. ОК, ми також мали перемикачі звітності, якщо Ви хочете отримати ще more-- або шкода, Перемикач знаходиться поруч. Я забігаю вперед тут. Знову ж, багаторазове якщо блоків де, як я щойно сказав, це, як тільки ви знайдете умова що зустрічався і якщо ще, якщо в іншому місці, вона залишає. Якщо вам потрібно перевірити кілька речей, ви захоче використовувати це, тому що вона буде перевіряти кожен раз тут. Так що це буде працювати через і, якщо це більше, ніж або дорівнює 90, він збирається друкувати що. І він працюватиме через і перевірити кожен один з них. АУДИТОРІЯ: Так що це буде більш помилок, ніж [нерозбірливо]. Чи буде це як [нерозбірливо]? Елісон: Питання чи буде це баггі або це робити те, що ви хочете. Це дійсно залежить від того, що ви хочете від вашої програми. Аудиторія: Я маю на увазі, якби ви поклали 90 в. Елісон: Якщо поставити 90-- АУДИТОРІЯ: [нерозбірливо]. Габріель: Ви збираєтеся отримати дві речі. Елісон: Ви збираєтеся отримати дві речі. Так, два. Роб Боуден: Два? Елісон: Ні. Роб Боуден: Чотири. Якщо поставити 90, він збирається сказати вам отримав A, ви отримали B, ви отримали C, Ви отримали D. АУДИТОРІЯ: [нерозбірливо]. Аллісон: справа. Так що я, залежить від того, що хочу від вас програми. Іноді вам потрібно перевірити кілька речей. Ви отримаєте набагато глибше в те, що хороший дизайн, як ви йдете вперед. Важливо розуміють, що це перевірятиме всі чотири умови тут. Тоді як якщо б це було, якщо ще, якщо ще якщо ще, було б вдарити, що перший випадок, було б надрукувати ви отримали A і зробити. Роб Боуден: навіть якщо ми вирішили змінити це, якщо і більше або дорівнює 90, Якщо і більше або дорівнює 80, і менше, ніж або дорівнює 89, якщо N більше або дорівнює 70, і п менше або дорівнює 79, так, що буде правильним. Це буде робити те, що ми хочемо, але він як і раніше перевіряє кожен це. Так у той час як у першому випадку, якщо ми введіть 90 с тільки якщо інакше, якщо ще, якщо, і ми входимо 90, то він збирається виправити. Він перевірить перший один, друк ви отримали A, пропустити все, бо це вже знайшов той, який працює. Всі випадки є взаємовиключними на основі, якщо ще, якщо ще, якщо. Так що виконуватиму Перший, якщо, то це буде зроблено. Це буде йти до кінця. Тоді як, якщо ми змінимо це буде те, що я був говорячи з менш ніж або дорівнює 89. Це збирається перевірити перший. Це буде друкувати. Це буде перевірити другий. Це не збирається друкувати. Перевірте третій. Не в друк. Перевірте четверту. Тепер в друк. Таким чином, в цьому випадку, якщо ще версія, так як ці випадки є взаємовиключними, це краще використовувати, якщо ще, якщо ще, якщо, бо буде мати менше перевірок умов чим ця версія. Аллісон: Awesome. Так ще одна річ, ми можемо зробити, це перейти заяви. В основному Перемикач займає в якої-небудь змінної, в даному випадку це п і визначає цьому випадку виконати. Так що це також є одним де ваші випадки повинен бути свого роду взаємовиключними. Таким чином, в цьому випадку, якщо ми отримуємо один, це збирається відповідати всі, що переменная-- незалежно від значення п полягає в одному з цих випадків, так 1, 2, або 3, і роздрукувати відповідний рядок. І тоді, якщо ви помітили, тут, у нас також є за умовчанням, які ви можете з думаємо як ваша ще. Так що, якщо ви вибираєте будь-яке інше число до того ж 1, 2, 3 і в цьому випадку це просто буде друкувати недійсним. Рішення, коли використовувати умовного способу в порівнянні якщо ELSES проти перемикачів збирається бути щось, що ви, хлопці, буде см проектувати мудрі, як ви почнете писати складніші програми, і немає ніяких жорстких правил про те, коли використовувати їх. Це дійсно залежить від контексту. Роб Боуден: І тільки щоб кинути його там так як це більш зручно розділі. Вимикачі, вони, як правило, be-- так ви обмежені в ряді напрямків ви можете використовувати їх, бо IFS, умова може бути досить все, що ви хочете. З перемикається випадки повинні бути числами, або технічно вони можуть бути символи, але символи, як ми побачимо, це всього лише числа. Таким чином, вони повинні бути цифри, але перемикачі дійсно більш ефективним, ніж якби ще якщо ще, якщо, бо навіть беручи приклад before-- добре, Приклад класу здається хорошою. Ну, скажімо, ось, ми замість того, щоб робити це як якщо ще, якщо ще, якщо сценарій. Так що, якщо н дорівнює дорівнює 1, роздрукувати ви вибрали невелику кількість. Якщо ще при п дорівнює дорівнює 2, Ви вибрали середній ряд. Інакше, якщо одно дорівнює 3, високий. Інакше недійсним. Так скажімо, це було нашим сценарієм. Так скажімо, ми входимо 4, тому ми очікуємо, недійсним. Таким чином, що, якщо ще, якщо ще якщо підхід буде працювати це перевіряє перша умова. Це не задовольнив. Таким чином, ми перевірити друга умова. Це не задовольнив. Перевірте третя умова. Не задоволені. Так ми йдемо в іншому місці і роздрукувати недійсним. Те, як перемикач роботи це компілює в те, що ми збираємося називати таблицю переходів. Основна ідея в тому, що при введенні 4, він може відразу перейти в стан за замовчуванням. Для цього не потрібно, щоб перевірити я такий випадок 1? Неа, це не він. Випадок 2? Нє-а. Випадок 3? Нє-а. За замовчуванням. ОК, це має бути, де я хочу, а потім виконати це. Ні, це відразу ж переходить в стан за замовчуванням. Чи це я входжу 2, це одразу піду до 2 без необхідності проходити через разі 1. Так що в цьому шляху, реально в наш час це не те, що більша частина приросту ефективності. Зазвичай комп'ютери досить швидко, і це не так вже й велика. Але це той випадок, коли перемикачі швидше. Якщо ви дійсно намагаєтеся оптимізувати, використовувати перемикач. Елісон: Прохолодний. А то у нас потрійний оператор. Так що я знаю, я вже згадував раніше слово синтаксичний цукор. Так що це просто речі, які роблять ваш код набагато більш коротким. Так що це один з тих випадків. Так потрійний оператор знак питання товстої кишки, як ми бачимо, в рядку лінії и дорівнює п більше, ніж 100 Знак питання високої товстої кишки низка. Так в основному, як це працює, це N більше, ніж 100 являє собою стан. Так що я думаю, що це може мати сенс. Це як поставити запитання. Це говорить про, п більше, ніж 100. Хто знає? І якщо це має значення правда, він збирається дати вам Перше, що це перераховані в ньому, який є високою. В іншому випадку це буде давати вам низький. Так що це просто дуже простий і ефективний спосіб зробити як якщо в іншому місці. Ось і все це. І якби ми мали написати це як якщо ще умовний, було б, якщо п більше 100, повернутися висока. В іншому випадку, повернутися на низькому рівні. Це просто набагато більш коротким спосіб написання його. Роб Боуден: Так що це окремий приклад є всякий раз, коли ви робите щось як це, це шаблон де я використовую потрійних дуже часто. Таким чином, ми не говорили про рамках ще, але я ненавиджу бачити коми струни с. Якщо п більше, ніж 100, з одно високим. В іншому випадку, з рівним низьким. Так що картини, ці п'ять ліній коду буквально 100% часу можуть бути передані в будь був там з потрійних. Так потрійний, одного рядка коду. Якщо ще, п'ять. Ось приклад, який я вказати з кожного часу. Це буде чудове місце для потрійний оператор. Це так чисто. Але люди, як правило, ніколи не використовувати його. Елісон: Приберіть це Гейб. Габріель: Отже, тепер ви, хлопці, все дізнався в лекції на цьому тижні що все в Комп'ютер в двійковій, чи не так? Так само, як лампи тут. Ви можете бути включений і виключений. І з усього, я маю на увазі буквально все. Деякі цифри і символи і рядки, і навіть код, який ви пишете, коли це буде скомпільовано на машині Код і все в такому дусі, що, так що все це зводиться до 0 та 1 ". І тому, коли ми маємо справу з цілими числами, які є те, що це технічно дуже просто, ми повинні бути в змозі робити такі речі, як додавати їх, що є ймовірно, один з найпростіших речей Ви можете зробити, щоб два цілих числа, чи не так? Так додавання і віднімання працює тільки як це працює в десятковій системі числення, крім ось це двійковий, чи не так? Так що це в базі два. Так що додайте 1 плюс 1. Це дає 0 і 1 переноситься. І просто продовжувати робити, що, Так що тепер приходить більш цікаве питання. Ми знаємо, як уявляють все цілі позитивні числа в комп'ютері, але давайте зробимо цю вправу. Уявіть, що ви, хлопці, все в 1960 році, або щось намагається створити комп'ютер, і ви повинні придумати з спосіб зберігання мінус 1, Наприклад, будь-яка або мінус число в цьому відношенні. Як би ви це зробили? Будь-які ідеї? Просто кинути що-небудь на мене. Да? АУДИТОРІЯ: [нерозбірливо] призначити спеціальна якщо ваш [нерозбірливо]. Габріель: Ви можете призначити спеціальний біт, який буде 0 або 1. Скажемо одне, якщо це позитивно і 0, якщо він негативний. І тоді як інша частина біт просто, щоб зберегти номер. Прохолодний. Так що це дуже хороша ідея. У нас є, я не знаю ,, 200. І якщо перший біт дорівнює включений, то це плюс 200. Якщо вимкнено, це мінус 200. Прохолодний. Існує тільки одна невелика Проблема з цим, який, якщо ми спробуємо підбити підсумок речей. Отже, уявіть, у нас є 11 111 тут, і ми підбиваючи це з 00100 завгодно. Якщо ці двоє будуть позитивними, це нормально. Але тоді, якщо один з їх негативне, як скажемо, що це трохи тут це той, який відповідає for-- я збираюся зробити separate-- таким чином, цей означає, що це число тут позитивна. Це означає, що один цей число тут негативний, чи не так? Але потім, коли ти збирається підвести їх, ви потрібно, якщо заява говорячи про, якщо це 0, Потім моя сума буде щось інше, чи не так? Таким чином, є небагато більш розумний спосіб зробити що, що називається в додатковому. Тому в основному те, що ми зробити, ми визначаємо мінус 1 бути річ, що якщо ми додаємо до 1 дає нам 0. Дозвольте мені повторити це. Так скажемо, що це тут 1. Що це те, що природно в позитивних чисел додав до цього дає нам 0? Що робити, якщо ми намагаємося, щоб додати його до цього числа? Ми збираємося have-- Отже, давайте додамо. Ми збираємося мати 1 плюс 1 0, а потім він переноситься. А потім ми збираємося, щоб отримати 0 раз. Я отримую плутати. І ви збираєтеся отримати 0 і 0 і 0 і 0 і 0 і 0. Багато 0-их. У самий останній один, ми не буде в змозі нести його на, бо, скажімо, ми тільки справа з одного байта, так що тільки 8 біт. Так що комп'ютер робить за замовчуванням просто забуває про те, що [нерозбірливо], Добре? Так що це те, що називається в в додатковому. Ми просто визначаємо мінус 1, щоб бути річ тут, що якщо додати, що до 1 дасть вам 0. І це дуже здорово бо ми насправді не потрібно пізно реалізувати другий тип суму залежно від того, чи є що негативне або позитивне число. Чи має це сенс? Так що, одне, що ми робимо тут для того, щоб перетворити між позитивним і негативним ціле число, то ми перевернути все, а потім додати 1 до цього числа. Якщо ви спробуєте зробити це самостійно на листку паперу, Ви будете бачити, що має сенс. Але якщо я візьму цей номер тут, це п'ять. Так що, якщо я перевернути все Тут, так 1, 1, 1, 1, 1. Flip, фліп, фліп. А потім я додаю до нього 1. Я збираюся мати точно мінус 5. Добре? Цей вид має сенс, тому що, якщо Ви намагаєтеся підвести це з числом що у нас було раніше, що was-- давайте перевернути цей раз. Це був 101 і багато 0-х. При спробі додати їх два числа разом, Ви будете мати точно 0. Добре. Є питання? АУДИТОРІЯ: [нерозбірливо] Габріель: Що ти маєш на увазі? АУДИТОРІЯ: Негативні до позитивний [нерозбірливо]. Габріель: Ні, ви переключаєте і додати 1 завжди. Так. ОК, так що персонажі також кодуються виконавчі файли. У нас є таблиця ASCII, як ви Також бачив в лекції, чи не так? Так що це в основному відображення речей. І тут я не можу не підкреслити, що за комп'ютером, і 65 буквально те ж саме. Так що, якщо я пишу щось на зразок напівкоксу з одно, я міг у той же час просто написати 65 ось, і це буде точно такий же, ОК? Там немає ніякої різниці. Ми, як правило, мають тенденцію ставити символи в змінних типу. Чар, не тому, що вони по суті зробив для цього, але тому, що з конвенції людини. Але ви можете просто мати справу з цілими числами замість змінних типу CHAR, і вам буде добре. Тільки фактична різниця між напівкоксу с і INT I є те, що інтервал має чотири байта в найбільш системи, в той час як символ має один байт. Вони, по суті, Те ж саме з точки зору даних. Так що буде друкувати тут? Тут ми друку цифру за допомогою Printf з плюсом 1, і так само, як цілі числа, символи можуть бути підведені, так символи можуть бути підведені. Так що це точно 65. Так що це буде 66, і тут у нас є 65 плюс трохи мінус великий, який буде, я не знаю. Але це буде точно розрив між заголовними буквами і і дрібніші букви, так ми збираємося, щоб отримати мале а, чи не так? Так. Так це буде роздрукувати характер, який є точно, це один. Добре? Є питання? Тут ми маємо купу різні Типи числових змінних. Ми вже говоримо про міжнар. Поплавок це просто спосіб to-- це дійсно Забавно, тому що, коли я вперше дізнався, програмувати назад в день з Python, перша програма, я коли-небудь пробував писати, я побачив, що там було тип називається в і тип називається поплавок. І поплавок був для всіх дійсних чисел. Тоді я запитав, чому Я ніколи використовувати Int тоді? Тому що, якщо я можу використовувати всі дійсні числа з плаваючою точкою, Я б просто припинити використання цілими, чи не так? Тому що реальні цифри так само, як більш загальний. Виявляється, що це не має місце в комп'ютерах бо вони по суті різні речі. Так чисел і плаває, операції, які ви робите з ними істотно відрізняються, тому що шляху, що вони зберігаються, добре? Ми збираємося поговорити трохи трохи більше про те, що в одну секунду. Так двічі просто більше поплавок. Зазвичай у більшості систем, поплавок чотири байта, так само, як междунар. І двічі на вісім байт. Довго довго насправді всього лише символ що ви додаєте до типу як междунар. Ви говорите, що давним-INT, як це. Давним INT х, щоб зробити його більше. Таким чином, в більшості систем, що дасть вісім байт замість звичайних чотирьох. І ви можете впасти в, так що він може просто сказати довго довго, і що працює надто, ОК? Ви також можете робити інші речі, як непідписаних INT, або знову тільки без знака також працюватиме. І, що б зробити х бути змінної як все позитивне, так що ви не можете насправді мають негативний Цифри в дорозі, що ми бачили тут. Так наступний чудовий з плаваючою точкою і точність. Це одна з причин, чому вам хочете використовувати цілими, а не плаває, тому Інтс 100% точним, чи не так? Це саме те, що число. Для плаваючих точок, якщо вас сказати відповідь дорівнює 1 над 10-- Я, виявляється, є точна Програма тут, float.c. Це виводить до 20 знаків після коми. 1 ділиться на 10, і що зазвичай становить 0,1, чи не так? Але от якщо ми робимо плавати, а потім ми запустити його, ми бачимо, що це не зовсім 0,1. Це 0,149 щось. І чому? Тому що ви не можете насправді являють собою кожен єдино можливим реальне число в пам'яті бо є незліченну багато з них. Так що ми технічно тільки в стані являють собою кінцеве кількість з них з кінцевим кількістю даних. Але це дійсно цікаво. Тепер це благає Питання про те, як ви б йти про представляють це з битами, чи не так? Так як зберігаються плаває? З цілих було легко. Але з поплавками ви хочете Для максимального збільшення, і ви хочете, щоб мати можливість представляти Величезні номера і дуже маленькі номери, як 0.000001 одночасно. Отже, ще раз, та ж гра. Хто-небудь є ідеї, як ми могли йти про представляють поплавок в пам'яті? Просто викинути що-небудь. Так, будь ласка. АУДИТОРІЯ: [нерозбірливо], як якщо це було два цілих і один будучи [нерозбірливо] і одна істота все після коми. Габріель: ОК, круто. Так два різних числа. Ви можете мати 12,45, так що це 12 і 45. Хороший. Що перш ніж ви збираєтеся говорити? Те ж саме? Да? АУДИТОРІЯ: [нерозбірливо] позначення де ви відокремити базу. Габріель: Науково позначення, так, це, як правило, те, що відбувається. Так що це те, що називається мантиса. Ось що насправді число, а потім показник ступеня просто де кома, чи не так? Так що це буде щось виду 1, 2, 3, 4, 5 разів 10 в мінус 4. Я просто зрозумів, that-- да, точно. І тоді це 10 в мінус 4 є визначатиме, де кома, ОК? У Бразилії ми використовуємо кому. От ви, хлопці, використовувати точку. Так точка. І це здорово, тому що тоді ви можете зосередитися багато ваших бітів на цього хлопця тут, на мантиси, і тоді це буде фактична точність. І ви можете зробити це або в десяткового або в системі, заснованої двійковій. Існують різні способи здійснити це. Питання? Да? АУДИТОРІЯ: Скільки місць після десяткової [нерозбірливо]? Габріель: Це складне питання, бо це ніколи не дійсно на 100% точним, тому що, як ви бачите тут, на деякі номери це 100% точним. Я вважаю, якщо ми ставимо 0,5 тут, це буде 100% точним. Це буде 0,500000. Так що в цьому випадку, це прекрасно. Але в інших випадках, це набагато менш досконалим. З мого досвіду, як до чотирьох, п'ять знаків після коми досить точним. Якщо ви використовуєте подвійний, він збирається бути спосіб точніше, ніж, ОК? Роб Боуден: Так просто кинути більш певний контекст на поплавцях, Я не пам'ятаю, 100%, як в Специфікація поплавців насправді працює, але я завжди пам'ятаю, що плаває почнете отримувати брудний. Таким чином, ідея в тому, що, коли ви отримуєте дійсно, дійсно великі числа або дуже, дуже малі числа, ми починаємо все гірше і гірше диференціювати між двома близькими поплавців. Так як мені подобається думати про те, з точки неточності плаваючою, Є два поплавки, що якщо я намагаюся вказати їх в С, незважаючи на те, що вони різні цифри, вони збираються бути інтерпретувати як той же номер, бо ми не можемо зберігати їх по-різному. Ми повинні використовувати ті ж біти. І тому, коли ми доберемося до дійсно, дійсно велика кількість, говорити, як 10 до 300 або щось, що це на той момент що від 10 до 300 або 5 раз 10 в 300 не можуть бути диференційовані від 7 раз 10 в 300. Так що це досить велика різниця між двома числами. Але потім, коли ви отримуєте вниз в нормальних речей дальності, Ви, як правило, досить добре диференціації. А потім, коли ви сідаєте насправді мало, ви також отримуєте досить погано знову. Так як цілим букетом 0.0000, це стає досить погано. Габріель: Так, так швидко записку. Ніколи не робіть цього. Ніколи спробувати порівняти поплавки за допомогою рівних з рівними, бо навіть якщо вони майже ж, майже такий же, не те ж саме. Так що ви зазвичай робите це ви відніміть їм, прийняти абсолютне значення, що, і подивитися, якщо це менше, ніж 0.0001 або щось подібне, ОК? І здорово. Я знаю багато людей, у деякі фон на Яві, особливо ті, хто зробив AP інформатика, вірно? І Java є мовою що в основному базується на C, у цього є кілька дуже великі різниці. Але для петель, і IFS, і все в такому дусі що, вони все ж синтаксис. У мене є кілька програм тут, щоб показати це. Так, наприклад, простий привіт світ. Це привіт світ в С, що вам Хлопці, безумовно, знайомі з, і це, і це один знаходиться в Java. Таким чином, в Java є це суспільного класу, привіт світ, і державної статичної сили Основною, і струнні аргументи. Струнні аргументи йдуть з'являтися в C в самий найближчий час. Але давайте не будемо йти туди ще. Зараз у нас є порожнеча тут, а це означає, що головний можемо вести дискусію. А то у нас System.out.println, і це вид еквіваленті для Printf. Тут ми насправді не потрібен зворотний слеш н тому друку пров зробить це за вас. Це додає зворотну косу риску н на кінці лінії. Але якщо ви йдете в щось на зразок А для, ви можна побачити, що вони в значній мірі те ж саме. Так ініціалізації, і стан і оновлення is-- я пропустив пробіл here-- вони в значній мірі те ж саме, за винятком того, Java є також кілька більш високого рівня речі. Тут ми можемо зробити плюс я і Java автоматично зробити це, я тут, який є ціле число, в рядок, а потім додати два рядки разом. Тут, в C ми повинні зробити і% d. Лінія тут, для виглядає точно так же. І якщо ми подивимося на те, якщо, МСФ Також виглядати точно так же, вірно? Так справжні великі відмінності в тих речах, які ви бачите тут. Громадський статичний, порожнеча, і Потім громадського класу, якщо. Так Java має те, що називається віртуальною машиною. І це дуже сильно на підставі яких називається об'єктно-орієнтованого програмування, що є дуже, дуже поширені парадигма для програмування в даний час. І це класна річ, що ви бачите, щось від орієнтації об'єкта, у створенні класу, а потім вам можна вивести об'єкти з цього класу. Ми не збираємося говорити занадто багато про те, що в CS50, але це, безумовно, щось дійсно здорово, особливо якщо ви хочете піти в Складніший веб-розробки В кінці курсу, як представити остаточний проект і деякі хороші рамки та інше. Тому в основному ідея в тому, що вам не хочу, щоб повторно реалізувати щось, так ви створюєте що-небудь дуже загальний характер, як форма, а потім ви створюєте різні форми від нього, а потім з кожної з ці форми, ви створюєте деякі більш конкретні форми в трьох розміри або щось подібне. І у них є ця ієрархія вони успадковують від інших, так всі функції і всі змінні, які велика форма тут має, всі вони матимемо, і всі вони є матиме, і так далі і тому подібне. Так ось основна ідея. С не має, але C ++ дійсно є такою функцією. І Java знаходиться під сильним впливом по об'єктно-орієнтованого підходу, так ось чому ви бачите клас тут весь час. І інша справа, це віртуальна машина Java. Так що це, як мені здається, це дуже розумна ідея. Так що люди, які винайшов Java зробив це вони не хотіли, щоб компілювати свій код двічі якби їм довелося запустити його в Windows, або Mac, або Linux, так що вони роблять буде буквально бігти щось на зразок приладу, але ви дійсно не бачите, що відбувається. Таким чином, вони запустити віртуальну машину всередині вашого комп'ютера, які в основному, як міні-операційна система. І що операційна Мета системи в житті просто запустити те, що називається байт-код. Тому замість того, в C, то, як ми б скомпілювати це зробити, якщо, а потім запустити ./if. Я забув зворотний слеш в. В Java, ви могли б зробити перший Java C скомпілювати його, if.c. Це не крапка Java C. Це. І тоді вам доведеться втікати не ./. Ви отримаєте цей новий файл if.class, але ви не можете дійсно запустити if.class тепер просто як ми робили раніше. Це не є виконуваним. Ви повинні запустити. Ви повинні годувати його в Програма називається Java, і що програма є віртуальною машини, а потім ви if.class, або, якщо. Так. І тоді це працює. ОК, так що це свого роду Віртуальна машина відбувається. С не має, що, таким чином, якби я був в поставити цю програму в машині ОС Windows, він не буде працювати в С. В Java це робить. Питання? Прохолодний. От якщо для супер розділі на сьогоднішній день.