[Музика, яка грає] Аллісон Бухгольц-AU: Привіт усім. Ласкаво просимо на ваш перший Офіційний розділ CS50. Як ви можете, бачити це Розділ CS50-як, просто щоб підтягти нашу порядку денного на сьогодні. Так, хто я, як я впевнений, що Ви все цікаво. Я твій TF. Я не просто випадковий студент хто видає себе за свій TF. І я збираюся пройти через почасти є розділи будуть текти, що ми очікуємо, ресурси, так далі і тому подібне. Ми збираємося говорити про масивах, ASCII Функції, аргументи командного рядка, і це не тут, але Я також буду допомагати ви начебто продумати Ваш наступний PSET на цьому тижні. Який я впевнений, що ви все цінують. Так, перший question-- хто я, крім вашої буйної TF тут. Я Елісон Бухгольц-Au. Це мій другий рік TFing CS50. Я також TF CS51 навесні. Ви могли б бачити знову є якщо ви вирішили взяти його. Я також СУП, так що будь Freshmen-- і якщо ви не новачок, це мій третій рік як консультування хлопець. Я дуже добре розбираються в раджу вам на життя і курси в CS, а не в CS. Я інформатика концентратор. Я старший в Adams House, кращий будинок. І, перш ніж я перейшов на CS мій Sophomore Весна, Я був насправді біомедичних інженер. Я збирався піти в медичну школу. Я збирався бути лікар-травматолог. І що має повністю змінилося, так як я взяв CS50. Я взяв курс мій Sophomore осінь. Це було моє перше знайомство з CS-небудь. Я був одним із 78% з вас, хто був нульовий досвід надходять, і це повністю змінило моє життя. І зараз я працюю на Microsoft, і ваша прекрасна TF. І CS50, ймовірно, один з кращих подій що я мав тут на Harvard-- і приймаючи клас і бути в змозі допомогти навчити студентів, як ви. Так що я дуже радий що ви все тут. У разі, якщо ви прийшли в пізно, їсти цукерки, які ви повинні відчувати себе вільно приходити захоплення, або відправити хтось, щоб схопити його за вас. Це нормально. Я не хочу, щоб з'їсти що. Моя кімната має достатньо шоколад, так ви всі повинні спробувати і закінчити це. Я знаю, що є 100 штук, але як, 4:00 в понеділок, Я думаю, що кожен може використовувати цукор. Так що всі з вас, хто офіційно в моєму розділі мали отримати по електронній пошті від мене з моїм номером телефону, пошта address-- соромтеся додавати мене Gchat, не соромтеся додавати мене в Facebook, а також для решти з вас, Ви можете написати мені прямо тут. Є два H-х. Все завжди робить як два L'и або два C о. Два H в останньому імені. В іншому випадку це буде відбиватися і Я не збираюся, щоб отримати вашу електронну пошту. Так що не соромтеся, напишіть мені, зв'язатися зі мною в будь-який час. Я, можливо, не повернутися до Ви протягом 24 хвилин, але я обіцяю повернутися Вам протягом 24 годин. Якщо ви зателефонуйте мені за півгодини до Ваш PSET пов'язано, ви бути як, Я поняття не маю, що я роблю Еллісон. Допоможи мені. Я збираюся заспокоїти Вас, але в кінці кінців, якщо ви телефонуєте мені за півгодини до Ваш PSET пов'язано ні з чим написано, Я збираюся бути, як, ну, може бути, це час, щоб використовувати цю пізній день. Так що я буду відповідати на всі ваші Запити в дуже своєчасно. Мій телефон, як правило, додається до моїх рук. Я, як правило, реагують набагато швидше, ніж за 24 години, але я можу тільки гарантія 24 час відповідь. Добре. Так чому ми тут? Крім того, якщо у вас є питання по в будь-який час, будь ласка, дайте мені знати. Я багато говорити. Я говорю швидко, але, будь ласка, не соромтеся переривати мене. Це дає мені перепочинок, а також. Так розділи раз для нас насправді просто занурення в, отримати деякі практичний досвід, щоб пройти тим, що ми згадували в класі або в навчальних матеріалів, які ми рекомендуємо вам, хлопці онлайн. І ми будемо насправді пройти деякі з цих ресурсів в небагато. Таким чином, деякі зауваження по розділу підтримки. CS50-- одним з речей, яка робить це один з моїх улюблених занять Відчуття таке, що ви ніколи не самотні. У нас є співробітники більш ніж 100 люди, які тут, щоб допомогти вам. У нас є робочі години З понеділка по четвер. Так що є дуже багато людей, які люблю клас так само, як і я і хто насправді тут тому що вони хочуть бути тут. Більшість з нас студенти, і це подібний п'ятого класу на додаток в решті частини нашої роботи. І це багато роботи, але ми робимо це тому, що ми любимо її, і ми дійсно любимо, щоб навчити вас і допомогти поділитися своїм хвилюванням для цього предмета і класу. Тому, будь ласка, скористатися. Пішли розмови нам. Я самотньо, коли мої студенти не розмовляти зі мною, так що якщо ви хочете, приходять тусуватися зі мною. Це буде здорово. Так розділ, очевидно, один з ваших найбільших речей. Ми підемо через речі що ви дізналися в лекції, зробити кілька коротких прикладів коли у нас є час, і взагалі вигляд отримати уявлення про речі Ви повинні думати о для ваша проблема встановити. Shorts-- скільки людей насправді дивився відео з нуля Коротка? Будь впізнаєш мене? Отже, це дуже здорово. Ви безперечно повинні дивитися ті. Багато роботи було вкладено в них. І вони просто означало бути крихітні частини для вас просто дивитися протягом трьох-чотирьох хвилин і отримати Краще розуміння концепції. Прогулянка throughs-- як багато людей дивилися що наскрізні для попередніх? Zamyla Дивно, чи не так? Мовляв, я хотів би бути Zamyla іноді. Так виразно використовувати ваші наскрізні. Вона буде розбити його на невеликий, крихітні частини. І коли у вас є ці величезні характеристики з ваших проблемних наборів, це буде дійсно важливо щоб мати можливість просто знайти де- щоб почати працювати повільно, і через нього. Гаразд, у нас також є Study50, який є study50.harvard.edu, я вважаю. Ви можете просто Google вчитися, і це буде придумати. Це одне з Кращі ресурси у нас є. Це PowerPoints з нотами і практики проблеми для вас з рішення, що ви можете фактично йти через. Так що, якщо ви коли-небудь хотіли більше практики, більше, ніж ми в секціях або більше ніж ваші проблемні наборів, це дійсно місце я закликаю вас йти. Він був побудований влітку минулого року деякі з моїх дійсно хороших друзів. І це дивно. Насправді, багато гірок що я буду використовувати для розділу надходитиме з Study50. Так багато в ТФ використовувати його. І, нарешті, як я вищезазначений, години роботи. Якщо у вас виникли проблеми з домашнім завданням, ви виникли проблеми з Концепція, дійшли робочі години. Перейти на початку тижня, якщо ви можете. Забирайся до квад, бо це почасти далеко. Ніхто не любить ходити там. Але це в ваших інтересах, бо тоді ти матиме всі ці ТФ, [Нерозбірливо] оточують вас. І особливо зараз, Просто рада, четвергах дуже холодний зараз в Mather тому Ваших psets обумовлені, по четвергах. І знаючи, хоче використовувати свої пізні дні ще. Так що якщо у вас виникли Проблема з поняттями, Є багато TFs хто там, щоб допомогти вам. Так що приїжджайте до Mather в четвер. Якщо ви хочете побачити мене, Я збираюся бути там. Я зазвичай роблю свою власну домашню роботу, бо ніхто не хоче моєї допомоги. Так що приїжджайте нам. Нам назустріч. Так як багато людей взяли участь лекції або спостерігав його в Інтернеті? Як багато людей пішли в супер розділ минулого тижня? Прохолодний. Це насправді справедливе число. Як багато з вас читали ваші спец протягом цього тижня, для вашого PSET? Ох, я пишаюся вами, хлопці! Більш цукерки для y'all. Добре, так що ми маємо на увазі "Нам назустріч", є що розділ дійсно тільки буде супер корисно для вас якщо ви приїхали в прочитавши ваш Специфікація для PSET. Тому що, коли я йду через огляд речей, які ви повинні шукати для, він не збирається робити як багато сенсу, якщо вас Не знаю, що встановити ваша проблема збирається просити вас зробити. Якщо ви не прийдете до розділу, очевидно, Я не можу бути, що корисно для вас. Я не збираюся приймати це близько до серця, якщо Ви не прийшли до моєї секції прямо зараз, але, безумовно, ви повинні. Якщо ви не можете, переглядати їх в Інтернеті. Вони там з причини. Шахта буде тут. Як ви помітили, ми записується, так що буду там для вас, хлопці. Як добре, збирається lectures-- що, очевидно, де ви отримуєте почати Вашого матеріалу тут. Так що я, безумовно, спробувати допомогти вам стільки, скільки я можу, але я можу тільки зустрітися з вами досі. Ви повинні роду нам назустріч там. Grading-- так, ви все хто отримав листа від мене, ти мій офіційний розділ. Я буду сортування ваші psets. І я просто хочу сказати одну річ, що Ви повинні дійсно звернути увагу на є коментарі. Коментарі найчастіше більш корисно ніж фактичний рахунок ми дати вам. І коментарі насправді де я проводжу багато мого часу коли я профілювання. Так що я був би вдячний це якщо ви читаєте їх. І вони насправді, як ви збираєтеся щоб дізнатися більше про дизайн і стилі і речі, які трохи менше вирізати і сухою. Так дійсно звернути увагу на ці зауваження. Якщо у вас є питання про них, або питання про вашому рахунку, будь ласка, приходьте поговорити зі мною небудь до розділу, Я, напевно, бовтатися У вестибюлі, або після цього. Якщо ви хочете запланувати один-на-один про те, як Ви можете допомогти поліпшити пізніше домашніх завдань, просто дайте мені знати. А потім просто пара порад для вас, хлопці. Так один з найбільших речей Я завжди підкреслюю, щоб мій розділ коли ви вчитеся, як код є писати речі на папері в першу чергу. Якщо у вас є план на гру для де ваш код повинен піти і що для цього потрібно зробити і це розбивається в маленькі шматочки псевдокоде Код ви виписали, Ви збираєтеся бути менше ймовірно, щоб зробити синтаксичні помилки або зареєструватися, якщо цикл, який не має ще. Якщо ви знаєте, де ви знаходитесь відбувається в цілому, ви менш імовірно, щоб зробити ці крихітні помилки, які іноді приймають вас годин, щоб виправити, тому що ви, як, де у мене відсутній цей кронштейн? На цій ноті, будь ласка, використовуйте Style50. Особливо, коли ти збирається робочий час, якщо ваш код все перейшов в одну сторону, це політика, звісно що ми можемо сказати, це виправити так що, схоже, Style50 каже треба, а потім ми вам допоможемо. Так це буде зробити ваше життя простіше. Це зробить наше життя простіше. Все щасливішими. Кожен отримує кращі оцінки. Хіба це не те, що ми всі хочемо? Так писати речі на папері, перш ніж Ви коли-небудь доторкнутися комп'ютер. Поговоріть речі на високому рівні, і переконайтеся, що ви знаєте, куди ви йдете. І якщо ви не впевнені, сісти з кимось і йти їх шляхом, крок за кроком що ваш код повинен робити. І в дев'яти випадках з 10, ви будете як, ой, я забув про, якщо умова або я забув крапку з комою тут або Я оновлюю цю змінну неправильно. Так ось мої поради для успіху. Так, оскільки близько половини з вас дивитися як ви взяли участь супер розділ, Я просто хочу, щоб дуже стисло пройти петель, які не були на нашому оригінальному порядку денного. Але вони дуже важливі. І тому я збираюся роду швидкості через ті перш ніж потрапити в наш фактичний розділ. Перш ніж зробити це, є будь questions-- логістично, особисто, є все, що ви хочете знати про мене чи про розділ або клас в цілому? Все добре? Добре, прохолодно. Прекрасний. Так loops-- ви, хлопці, повинні все визнати ці частини з нуля. Так петлі в основному тільки спосіб для нас, щоб зробити щось деяке число раз, деякі повторені Дія заснована на деякі умовні. Таким чином, ми маємо три різних типи. У нас є цикл, тоді як, і робити-то время. Таким чином, для loops-- ми просто повинні дуже Генеральний план тут цикл. І це дуже зручно, якщо ви знаєте, як багато разів щось потрібно виконати. Коли ми говоримо про інші петлі, ви будете зрозуміти, чому це важливе розходження. Але для петель є для чогось набору. Ви знаєте, ви можете розрахувати кількість або ви знаєте, скільки разів ви хочу це повторюється на початку. Так що якщо ви бачите тут, ми є лише загальне роду з скелета рамках для для петлі тут. Таким чином, для-ініціалізації, це десь Ваші змінні инициализируются. З Маріо, я впевнений, що ви, хлопці, зробили щось на зразок INT I дорівнює 0. Ось де, що сталося б в синій. У вас є ваш стан, яке це те, що перевіряється кожен раз. Якщо ця умова істинно, то Інша частина коду виконує. Тоді він працюватиме again-- і запитати. А то у нас оновлення, де ви оновлюєте ваш змінну. Так, знову ж таки, з, як Маріо, я впевнений, що ви, хлопці, зробили щось, як я плюс плюс. Таким чином, кожен раз, коли петля побіг, я отримав оновлений так що, коли ми виїжджали його проти деяке умова, це змінюється. Тому що, якщо вам просто є статичної змінної, якщо він виконує в перший раз, це просто хочу, щоб виконати нескінченно. Таким чином, ви повинні переконатися, що ви оновити змінну правильно. І у нас також є просто Візуальне уявлення є. Все добре? Для петель. Якщо бачили їх в свій PSET. Прохолодний. Так от саме простий приклад. Роздрукувати це CS50! 10 раз. І так у нас є ініціалізацію, як ми бачимо, є, з INT I дорівнює 0, для мене це менше ніж 10, і я плюс плюс. І це буде друкувати, що в 10 разів. Таким чином, хоча loops-- а петлі Здорово, коли ти не обов'язково повинні знати, скільки разів це збирається оновити на початку. Ви просто є деякі стан, який перевіряється. І це може бути щось на зразок while-- давайте брати приклад з вашої PSET. Якщо Маріо, ви намагаєтеся вхід негативне число. Чи не так? Ви повинні були повторно запропонує свого користувача. Таким чином, ви можете сказати: добре, якщо користувач вводить щось менше нуля, заново оперативного ім. І я впевнений, що, можливо, доведеться було щось, що деякі з вас використовувати в коді. Так що це просто. У вас є в той час, деякі умовно, що перевіряється кожен раз, коли код йде виконувати. Якщо це істинно, ми запускаємо його. В іншому випадку ми не робимо. І те, що насправді important-- те, що я думаю, що Девід говорив про в lecture-- є брекети. Що б не було в межах брекети це те, що виконується. Якщо ви забули тих, брекети, це тільки збирається щоб бути на лінії безпосередньо після в той час був страчений. Так що якщо у вас є три речі, які повинні відбудеться, коли цей стан оцінюється як істина, і у вас немає цих брекетів, тільки Перше, що повинно трапитися. Так що будьте дуже обізнані про де ви розмістили свої брекети. Якщо ви будете з Style50, це, безумовно, допоможе вам. Прохолодний. Так що це зворотний відлік від 10 до нуля. І, як ви бачите тут, ми инициализировать деякі лічильник за її межами. Одна річ, яка відрізняється тим, ми не ініціалізації нашу змінну в нашій час циклу. Це ініціалізації поза ним. Ми просто просто покласти стан протягом нашого часу. Таким чином, в даному випадку, це в той час як Кількість більше нуля. І ми друкуємо те, що наш відлік, а потім ми зменшуємо нашу змінну. І це ще одна річ, щоб помітити. Наша оновлення не відбудеться протягом що перша частина то час циклу. Це буде насправді сталося в брекети, тіло вашого тексту. Так щось час loops-- робити щось час петель великі для перевірки користувача. Таким чином, деякі з вас, можливо, також використовується це в вашому PSET. Ви можете сказати: робити, як, запитайте у користувача введення. І потім, коли, як, на вході менше деякого числа. Таким чином, для явного випадку з Маріо, він робитиме Printf, введіть ціле число, а потім деяке ціле число дорівнює GetInt. І тоді це буде насправді виконати цей код в першу чергу. Ви насправді доведеться свого роду ціле. І тоді ви могли б сказати: у той час як що число менше нуля. Так що це буде зробити, це це збирається виконати принаймні один раз. Це збирається перевірити стан. Якщо умова правда, він буде працювати знову. Так щось час петлі відмінно підходить для перевірки користувача, тому що ви знаєте код збирається виконати принаймні, один раз, в той час як з в той час як петлі, ви не гарантується, що це виконуватиме один раз. Це збирається перевірити стан а потім прийняти рішення, щоб виконати його, а робити щось часом буде виконати код спочатку а потім перевірити, чи є Ви повинні повторити його. Чи має це розходження сенс для всіх? Добре. Прохолодний. Таким чином, в даному випадку, це свого роду з того, що я говорив, Це повторне підказки до вас отримати позитивне число. Отже, ми знаємо, що Printf "Введіть позитивне число" а насправді просять, що вхід відбуватиметься принаймні, один раз. Якщо користувач є злом і тримає введення негативного числа, які знає, скільки разів він виконуватиме. Але цей код гарантовано для виконання щонайменше, один раз. І ось чому це здорово для перевірки вхід. І ви будете використовувати, що зовсім небагато. Гаразд, будь-які питання досі? Ми всі добре? Я говорю занадто швидко? Ми добре? Добре. Здорово Отже, ми збираємося, щоб йти вперед і говорити про масивах. Прохолодний. Так масиви в основному всього структури даних що дозволить нам зберігати речі такого ж типу. Так що, якщо ви коли-небудь масив, це або просто доведеться цілими або це просто матиме поплавки або це просто доведеться символів. Ви не збираєтеся мати Int з символ з поплавком з подвійною. Одна річ. Масиви просто один розмір, або вони просто один тип. Так от у нас є масив розміром три з трьома числами в ньому. Вони могли плаває, але ми хочу сказати, що вони цілими. Так одна справа розуміти, що масиви являють собою набір розмір при ініціалізації їм, і вони не easily-- так як ви все менш комфортно, Ви повинні тільки думати про них як Не маючи можливості розширити в розмірі. Однак більша ви вирушите ваш масив на початку, це розмір він збирається залишитися, бо масиви є безперервні блоки пам'яті. І коли ви, хлопці, отримаєте в трохи більш про те, як пам'ять насправді виклав на диски і в купі і стека, це зробить трохи більше сенсу. Але ви могли б просто думати про як, це просто ряд місць на диску. І ви не можете гарантувати, що є буде вільний простір після нього. Ви можете ініціалізувати масив з трьох, а потім, може бути, ви инициализировать інший масив з п'яти пізніше, і це відразу після цього. Так що, якщо ви були пройти пляма три в цьому першому масиві, Ви писали б над чимось ще. Так масиви are-- для вас, хлопці, просто думати про них як фіксованого розміру. Так створення array-- ви збираєтеся потрібно зробити це зовсім небагато. Таким чином, в одній і тій же дорозі, що у нас є Загальна структура для нашого для петель, у нас є хороший генерал Структура нашого масиву. Оскільки вони одного типу, все елементи масиву мають один тип, необхідно ініціалізувати що це тип. Так що, як ви бачите тут, у нас є миленький кронштейн типу даних. Так що якщо ми створюємо Int Масив, що буде Int. Якщо ми створюємо символ Масив, це буде символ. Якщо ми створюємо рядок Масив, це буде рядок. А потім ім'я вашого масиву, все, що ви хотіли б, щоб це було. Так може бути, це результати тестів або, може бути, це студенти або, може бути, це цукерки. Що б ви не вирішили назвати ваш Масив, це те, що це буде. А потім в дужках, ви будете мати розмір, який ви хочете. Так, ми зберігання 10 студентів або ми зберігання 15 видів цукерок? Що ні. Таким чином, у нашому прикладі, ми створюємо масив розміру трьох, що ви, хлопці см прямо тут, на правом. І коли ми вперше инициализировать це, все встановлюється в нуль. Так що це просто думав, з як чистий аркуш. У нас є всі ці простори, у нас є всі ці коробки ми могли розмістити наші дані в, але вони просто порожній в даний час. Так що, якщо ми хочемо, щоб насправді призначити їх ці значення, ми робимо так, як прямо під тут показує. Таким чином, ви повинні незалежно ім'я вашого масив, а потім те, що індекс ви хочете. Таким чином, індекс відноситься до просто, як, що слот ми дивимося на. І головне, щоб помітити є те, що масиви нульового індексуються. Так що, якщо ми хочемо, щоб перший простір в пам'яті нашого масиву, вона дорівнюватиме нулю. Якщо ми хочемо, щоб другий, це буде один. Якщо ми хочемо, щоб треті, що це буде два. Так далі і тому подібне. Які ж причини, умовно, коли ми робимо для loops-- Я впевнений, ви, хлопці, було цікаво, чому ми починаємо з 0 в порівнянні з 1? І це тому, що, коли ми переходимо у використанні масивів, він відображає коректно. Так що, якщо ви хочете, щоб ітерації в масив, його робить набагато більше сенсу в Чи повинен я дорівнює 0, тому що ми знаю, що буде відповідати на першому місці в пам'яті. Все добре з цим? Прохолодний. А потім на дно тут просто ще один спосіб ініціалізації масиву. У вас ще є ваш тип даних та ім'я, але замість того, щоб реально поставивши розмір там, ви можете просто зробити порожні дужки. А потім з них кучеряве дужки на дні, Ви можете просто ввести дані, які Ви хочете, розділених комами. І що автоматично кажуть, добре, я бачу, що у вас є три речі в цих дужках. Так що я знаю, що мені потрібно виділити три блоки пам'яті, а потім зберегти їх. Таким чином, перший варіант, ви могли б використовувати якщо ви питаєте свій користувачеві вводити значення, так що ви можете перебору масиву і ask-- отримати Int щоб ввести їх. Якщо ви знаєте значення заздалегідь, він робить набагато більше сенсу використовувати другий спосіб. Але в більшості випадків, ви можете не знати що ці значення буде. Прохолодний. Ще питання? Добре. Так доступі elements-- так один з великих речей про масивах є те, що вони носять випадковий характер доступ, а це означає, що вам не повинні дивитися через кожен блок. Якщо ви знаєте, що вас хочу те, що в блоці два, Ви можете просто сказати, дайте мені блокувати два. І ось чому вони Індекси настільки важливі, і це, як ми насправді отримати до них доступ. Таким чином, в цьому випадку, як ми бачили раніше, коли ми були присвоєння значень, в одному раніше, у нас було ім'я та Індекс ми хотіли доступу, чи не так? Таким чином, в одній і тій же дорозі, що і всі ми зробити, щоб насправді тягнути, що з даних. У нас є ім'я, і ​​ми є індекс, який ми хочемо. Таким чином, в даному випадку, для циклу сюди в нижній, хто знаю, що він робить, що б це роздрукувати? Mmhmm? Точно. Так що так, це просто перебір. я дорівнює zero-- ми можемо йти через код тільки швидко. Я дорівнює нулю, я менше ніж три на даний момент, чи не так? Так що перевіряє. І ми говоримо: ОК, друк е все, що знаходиться в температурі я. я нуль прямо тут, коли ми вперше перебору, тому ми йдемо на першому місці, і ми говоримо, добре, 65 число ми хочемо роздрукувати. Так це буде роздрукувати 65 а потім зробити нову лінію. Я буду оновлювати, так він друкує 87. Він оновлює раз, і він буде друкувати 30. Все круто? Дивовижний. Добре. Так ось ніби один що я говорив, як Ви можете відстежувати чийсь рахунок і чому Ви б використати перший спосіб ініціалізації замість цього другого шляху. І це просто проходить. І зверніть увагу, у нас є розмір класу 30. І ми ініціалізації це масив цілих чисел, що є розміром 30. А потім ми ітерації через і ми задаючи користувачеві для введення оцінки для кожного з них а потім призначивши її особливе місце в пам'яті десь в цьому масиві. Прохолодний? Чи має це сенс для всіх? Mmhmm? Так хештегом визначити розмір класу 30 є директивою препроцесора, який просто означає, що він gets-- він має зробити як процесу компіляції. Ви можете думати про це як глобальна змінна. Те, як ми робимо це typically-- це дозволяє ваш код Щоб бути більш легко змінено. Так скажемо, що наш розмір класу раптово виходить від 30 до 15, якби я не визначено це так, я б повинні пройти через всю свою програму і змінити кожен екземпляр 30 до 15. Але з цим, я отримую змінити один місце, і все інше змінюється. Якщо ви коли-небудь хотіли зробити хеш визначити в разі де ви відстежувати деякі встановити кількість балів для класу або ви використовуєте ряд який буде використовуватися, як, по всій дуже довгого програми, це краще, щоб визначити, що на початку так що, якщо коли-небудь це зміниться, ви отримаєте змінити одне місце замість 100. Да? СТУДЕНТ: Між робити це і просто оголосити [нерозбірливо] над самим верхнім. Аллісон Бухгольц-AU: Так що оперує efficient-- це частково виходить за рамки що ми можемо охопити в цьому розділі. Він повинен зробити більше з ефективністю і, як все насправді працювати в процесі компіляції. Якщо ви хочете, щоб дійсно знати про це, я щасливий послати вас по електронній пошті з ресурсами біля нього. Hash визначити, як правило, кращим для речей. І як ви код більш, ви вид дізнатися нюанси про те, коли ви повинні використовувати Глобальний порівнянні з хеш визначити. Але до пори до часу, Ви насправді не мають турбуватися про це що короткий відповідь. Все добре з цим? А також, якщо ви хочете використовувати хеш визначити, це дійсно важливо помітити що ім'я має бути у верхньому регістрі. Ми не просто робимо КЛАС РОЗМІР бути драматичним. Це насправді повинні бути в верхньому регістрі. Прохолодний. Що-небудь ще є? Ми добре? Прекрасний. Ласкаво просимо. ОК, так що я хочу, щоб ви, хлопці, подивіться на це і подивитися, якщо ви можете знайти її. Я дам вам підказку. Це десь в цьому для петлі. Mmhmm? СТУДЕНТ: Повинен бути менше або дорівнює 2. Елісон: Так може бути менше або дорівнює 2, або він може бути менше, ніж 3. І те, що міркування на що? СТУДЕНТ: [нерозбірливо], 0, 1, 2. Елісон: Рівне. Так в масиві розміру п, тільки індекси п мінус 1. Прохолодний. І тоді ми можемо отримати дійсно божевільні і отримати багатовимірні масиви. Одна з проблем, коли я взяв його в мій рік необхідні багатовимірні масиви, і я думаю, що один з них може знадобитися це цього року, так було зручно. Оберніть голову навколо нього зараз. Це буде відгукнутися Ви, але в прохолодному чином. Таким чином, ви можете насправді просто думаю багатовимірних масивів як масиви масивів. Таким чином, ви можете роду думаєте про це зверху гребти, як перший пакет з пам'яттю. І це один Друга частина пам'яті, і останній рядок Третя ділянка пам'яті. І в тому, що, є масив. Але, звичайно, це легше зобразити, як це. Таким чином, ви инициализировать його таким же чином. Це символ Рада три на три. Так у вас є три ряди і три колонки. Ми представляє це так. А ви б доступ до нього в Точно так же, стовпець за рядком. І так 1,1, як ми бачимо, тут. Ми присвоюємо нуль, нуль там. 2,0 і 0,2. Таким чином, ви б просто відкрити them-- якщо хто коли-небудь робив лінійну алгебру, так само, як ви до елементу в Matrice, це та ж ідея тут. Таким чином, ви можете пов'язати його назад в математиці. Ви не повинні хвилюватися занадто багато про це прямо зараз. Це добре, що експозицію, знати, що ви можете зробити це. Ви можете створити деякі божевільний number-- ви можете створити божевільні масивів все, що я збираюся сказати. [Нерозбірливо] Це стає трохи божевільним, але це дійсно здорово. Дивовижний. А потім, у нас є приклад тут. Це обчислює довжину рядка. Так як багато людей знали, що струни, що ви використовуєте просто масиви символів? Добре, так. Таким чином, ви, хлопці, можете думати, що у вас є не б масиви і раніше, але будь-який час Ви використовуєте GetString в Бібліотека CSView, ви насправді просто просять масив символів. І ми беремо на себе всі що на задньому кінці для вас. Але ви використовували масиви, так як ви почали. Ви просто не знаю, що ще. І всякий раз, коли у вас є масив символів або масив, який зберігання рядок, Останнє, що завжди що називається нуль-термінатор, який це прямо тут. І це в кінці кожне слово, яке ви зберігаєте. Так що, якщо ми хочемо, щоб з'ясувати, Довжина рядка, ми можемо говорити, Ну, ви знаєте, Вміст цього блоку не дорівнює нашій нульовий символ. Це означає, що існує деяка Характер є, що ми насправді дбати про те, що це частина слова. Ви збільшити довжину. А потім, коли ми насправді отримати кінець слова, це буде припинити і вона поверне нашу довжину для нас. Mmhmm? СТУДЕНТ: Чи є простір розраховувати як нульовий символ? Елісон: Так простір не порожній термінатор. Так що якщо у вас є multiple-- простір насправді є конкретне значення ASCII. СТУДЕНТ: Що Оклику одно знову? Елісон: Так, це те, що ви зверніться до. Якщо ви коли-небудь чули мене в робочий час, Я завжди називають його, як, бац одно. Так вибуху немає. Так що це не дорівнює. Так що, якщо ви намагаєтеся якщо щось брехливо, Ви знаєте завжди, удар все змінна, а якщо ложно, це оцінюється як істина і вас можна зробити цікавий матеріал з цим. Детальніше про це пізніше. Прохолодний. Все там добре? Дивовижний. Так що тепер прийшов час ваших хлопців, щоб працювати, так як я говорю. Тому я хочу, щоб ти просто створити масив з цілими числами один, два, а три, а потім їх роздрукувати. Ви не повинні робити, як, Основною, бла, бла, бла, що завгодно. Я просто хочу, щоб ви ініціалізації масив, а потім створити цикл їх друкувати out-- або в той час як цикл, залежить від вас. Я просто дам вам пару хвилин, щоб працювати над цим. Я збираюся відпочити мій голос. Якщо у вас є які-небудь питання, я щасливий щоб прийти і поговорити з вами, хлопці. Не соромтеся говорити один з одним. Отримати більше цукерок. Насправді, я просто ходити з цукерками. Як це? Ви хочете, щоб якісь? Хто-небудь ще в цьому залі хочу цукерку? Ви також можете прийняти більше одного, хлопці. Візьміть жменю, якщо ви хочете. Травень також. Всі інші добре? Добре. Крім того, я збираюся створити анонімний Google Форма, і ви, хлопці, можете просто уявити зворотній зв'язок після кожного розділу якщо є щось ви хочете поліпшити або те, що ви хочете зробити. Якщо я занадто бадьорий для вас, я можу налаштувати його вниз. Я створю що і відправити, що до вас всіх потім. Добре. Так що давайте починати з малого. Як би ми инициализировать масив? Що тип нашого масиву? INT, чи не так? ОК, так що ви хочете, щоб викликати ваш масив? Int масив, круто. Гаразд, так що ми повинні Int Int масив дорівнює, і що ми маємо після цього? СТУДЕНТ: [нерозбірливо] дужки. Елісон: Брекети. А потім в фігурних дужках? Один кома два кома три. Прохолодний. Так що все в порядку. Так що тепер у нас є наш цикл. Таким чином, в першій частині нашого для петлі, що ми маємо? СТУДЕНТ: я дорівнює 0? Елісон: Так INT I дорівнює 0, і то що це наш стан? Що я збираюся бути менше? Менше трьох, і як ми оновлюємо я? Я плюс плюс, його поновлення по одному. І тоді ми будемо мати деякі Printf від цілого, і що, що в минулому частина, яка насправді хочу сказати, що ми повинні бути печатка? Було б назва Масив, який є цілочисельний масив, чи не так? І те, що в дужках Int масиву? я. [? Так що я?] Називається мій приклад, але там ви йдете. Не те, щоб погано. Все добре? Прохолодний. Таким чином, ми зробили з масивами. Поздравляю. Вам вдалося ітерації через все the-- да? СТУДЕНТ: [нерозбірливо] Елісон: Так. СТУДЕНТ: У мене є питання. Ви повинні відступ дужки? Елісон: Так брекети повинні вибудовуватися с для петлі, а потім все всередині дужки повинні бути відступ. СТУДЕНТ: ОК, повинні для петлі з відступом? Елісон: для петлі не потрібно мати відступ в цій точці. Якщо ви були в основному, якщо ми насправді було головної функції тут, він буде з відступом від головної. Але в даному випадку, це прекрасно. Так, питання. СТУДЕНТ: Ви повинні мати дужки після Наприклад? Елісон: Так, якщо ви ініціалізації це таким чином. Так що пам'ятайте, це вже другий спосіб ініціалізації масиву де у нас є дужки, а потім наша фактична Дані, розділені комами всередині. СТУДЕНТ: Я думав, що було Кронштейни для цього прикладу. Елісон: Ні, вони дужки. Вони дужки. Якщо ви його ініціалізації що другий шлях, це брекети. Якби ми мали сказати, INT example-- якщо ми просто хотіли чистий масив для цілих чисел, було б INT приклад дужки три. Кронштейни представляють розмір. Якщо у вас є фігурні дужки, це фактичні дані Ви ставите в нього таким чином. Ми можемо прокрутити назад дуже швидко. Таким чином, в цьому, це тільки наше Первісний масив, ініціалізація. І ось, ми індивідуально присвоєння плями на них, таким чином, це являє собою індекс наш масив, тому у нас є дужки. Але тут, якщо ви помітили, у нас залишили наші дужки без розміру, і ми його ініціалізації з фактичні дані все-в-одному з фігурними дужками. СТУДЕНТ: Так чому б нам не мати дужки в цьому прикладі? Елісон: Так, в якій частині? СТУДЕНТ: Чи не буде у нас скажімо, приклад INT кронштейни дорівнює дужки [нерозбірливо] кронштейни для прикладу. Елісон: Ой, вибачте. Ти прав. У нас є дужки є. Вибачте, хлопці, мій поганий. Так, ви повинні мати дужках після прикладу. Ви абсолютно праві. СТУДЕНТ: [нерозбірливо] не роблять. Елісон: Ні, ви повинні мати кронштейни, бо в іншому випадку це не збирається оголосити масив. СТУДЕНТ: [нерозбірливо]. На жаль про це. Елісон: На ​​жаль, вам потрібно дужках після прикладу. Друкарська помилка. Хороший улов, золота зірка для вас. Крім того, якщо ви задаєте питання, якщо ви, хлопці, просто скажіть мені ваші імена, Мені б дуже хотілося, що. Я хотів би бути в стані знаю всі ваші імена. Я не збираюся до холоду подзвонити вам, я насправді у просто хочу знати ваші імена. Тому, будь ласка, насправді сказати мені ваші імена. LEAH: Лія. Елісон: Лія. Отже, functions-- Я знаю, в короткій вони говорили про це під час лекції. Так функції начебто просто як ці маленькі крихітні речі де ви проходите в входи, щось чарівний відбувається, і ви отримаєте виходи. Прохолодний. Таким чином, ви насправді використовується Багато з них вже. Отримати Int, отримати рядок, друку п. Всі ці функції де ви просто називати їх, є багато чарівних речей відбувається в фоновому режимі що вам не обов'язково бачити, і ви отримаєте те, що ви хочете. Або, принаймні, ви отримаєте то, що ви сподіваюся, що ви хочете. І в основному точка функцій, і один з головних тем CS, це зламати код на керовані частини. Коли ви почнете писати ці дійсно довгі програми, або в порожньому, коли ви були Цей гранд-ідея для гри, Ви повинні бути в змозі розбити його до, як, в порядку, як мені почати? Які маленькі шматочки, що мені потрібно? О, я повинен запитати Користувач чогось. Тепер мені потрібно щось надрукувати. О, мені потрібно, щоб обчислити це значення. І, дізнавшись, як розбити ваш Код і великі проблеми ви є в цих маленьких шматочків і створення функцій насправді один з великі наріжні CS. Таким чином, ви можете думати про функції так само, як як чорний ящик, чарівний чорний ящик, що ви поклали речі в і ви отримаєте деякий висновок. А решта програми не потрібно обов'язково знати, що відбувається всередині цього чорного ящика. Все це хвилює є що входить і що виходить. Прохолодний. Отже, чому функції? Organization-- як я вже сказав, коли ти справу з дуже великими базами коду, як ви організуєте ваш код буде набагато легше, якщо ви використовуєте функції. Тому що ви зможете бути, як, в порядку в цьому, це те, що робить ця функція і ось те, що інша людина робить. І ви можете легко побачити як вони всі підходять один одному. Так розбиваючи його на все ці керовані підрозділи. Так simplification-- Я впевнений, що ви, хлопці, всі бачили це, як я вже сказав, з нуля. У вас є цей великий ідею, і Ви походите, як це все працює? Але якщо підійти до його по частинах, ви говорите, в порядку, як зробити, щоб в одному шприці плавають по екрану? Це трохи легше. Так добре використання функціональних моделей ваш код набагато легше читати. Це полегшує налагодження, які, як Ви отримуєте в ваших подальших проблемних наборів, Ви збираєтеся дійсно хочу бути в змозі зробити. І вони також легше розробляти і здійснювати. Ви можете закодувати до невеликої функціонувати відносно швидко і переконайтеся, що він працює проти намагається Для створення цієї цілу довгу програму а потім роду пройти і подивитися, що працює, а що ні. А потім повторного. Так функції потрібно тільки щоб бути записана один раз, а потім ви можете використовувати їх стільки разів, скільки це можливо. Так що це, як, екологічний, в деякому сенсі. Якщо у вас щось на зразок друк е, де вас довелося виписати магію, яка йде на за друк е кожного часу Ви хотіли щось надрукувати, ви буде досить втомився від нього до кінця. Одна з речей, які ви будете дізнатися в пізні заняття CS, або один з кращих поради, які я отримую це, якщо ви копіювання і вставки Код, він, ймовірно, слід бути функцією. Якщо у вас є такий самий лінії протягом усього вашого коду, якщо ви врахували їх, Ваш код буде, ймовірно, бути, як, в п'ять разів коротше і набагато більш зручним для читання. І замість того, щоб усунути всі ці різні місця, де речі може піти не так, у вас є одна функція що ви можете усунути. І я обіцяю, багато що з цього Може здатися свого роду абстрактний зараз, але, як ви отримаєте надалі і пізніше проблема встановлює, це буде зробити набагато більше сенсу і дійсно управлятися додому. Чи є питання про функції досі? Чому ми їх допомогою? Я знаю, що ми не отримали в вошивий піщаний ще. Так визначенні function-- так само, як масиви, нам потрібно якийсь of-- це це просто загальний вихід. Таким чином, це є функцією, це просто хочу, щоб куб деякий внесок. І на наступній сторінці, насправді, у нас є всі ці дивовижні дрібниці тут. Так, може кожен читати що, з цікавості? Я знаю, фіолетовий і чорний може бути трохи важко. Але великі речі, щоб знаю-- тому перший один прямо тут наша повертається тип. Таким чином, це говорить про вихід цієї функції, коли, в даному випадку, покласти в якусь кількість, що ми отримувати в тому, що число в кубі. Так воно і має бути інтервал в цьому випадку. Може бути, це буде подвійний або то ще пізніше, але в цьому випадку, це внутр. З с, ви завжди повинні повертається тип. Це буде інтервал. Це буде поплавок. Це буде подвійною. Але ви повинні вказати, що ця функція буде повертати. В іншому випадку це буде кричати на Ви, і це не буде компілювати. Ви будете сумно, і я буду сумувати. І це просто не добре. Добре. І тоді у нас є ім'я функції. І як ви можете бачити тут, з с Тобто це дуже послідовно парадигма. Який ваш тип, як називається, а потім деякі інші речі в кінці. Так у нас є тип повертається, наше ім'я функції, а потім у нас є заголовок з наш список параметрів. Так що список параметр, що ця функція займе в? Список параметрів є просто синонім, якими є наші входи? І таким же чином, то ми повинні визначити нашу функцію і дати йому повернення введіть, кожен з наших входів повинен мати тип, пов'язаний з ним. Отже, ми знаємо, що наша функція може насправді працювати с. Таким чином, в даному випадку, у нас є деякі Int вхід. Отже, ще раз, це буде тип і те, що ви зараз це називають. А потім, як ви бачите, тут, у нас є наше тіло. Таким чином, ми маємо деяку INT вихід, що є тільки наші вхідні раз сам Сам раз, які просто кубики його. А потім ми повернемося, що вихід. Отже, як ви бачите тут, у нас є Int разів перевищує целочисленное раз INT, так він повертає Int, яка був оголошений там. Так що все згуртованою. Всі задоволені. Ваша функція буде працювати. І це тільки загальна річ. Так завжди тип повертається, Ім'я та ваш список параметрів. Кожна річ в вашому Список параметрів, або вхід, повинен мати тип, пов'язаний з ним. І тоді у вас є ваш Тіло тут з тим, що Ви хочете зробити з вашим входом. І то, очевидно, вам хочу щось повернути. Іноді функції буде просто повернутися. Вони фактично не повертати щось для вас використовувати. Але ви повинні повернутися в деякому роді. І коли ви робите Ваші власні функції, ми можемо отримати в тому, що трохи глибше. Особисто, якщо ви хочете, є багато з різних речей, які ви могли б зробити там. Все добре? Все в цьому списку, який ви хочете мене перейти, що ви не розумієте? Все добре там? Прохолодний. Дивовижний. Отже, ми поміщаємо все це разом. Таким чином, ми маємо деяку INT куб вхід, так це повна програма тут. До сих пір у мене є вид давав вам хлопці фрагменти, які можуть йти в рамках програми. Ми тільки дивилися на функції. Але от вся програма. Так як багато хто з вас пам'ятають Слово прототип з лекції? Прохолодний. У нас є один. Як тебе звуть? Стеф: Стеф. Елісон: Стеф? ОК, дивовижним. Так, ти пам'ятаєш, що прототип є? СТУДЕНТ: Ви говорите, що [нерозбірливо] перш ніж ви дійсно мати справу з ним. Елісон: Ви пам'ятаєте, чому? СТУДЕНТ: Ні. Елісон: ОК. Золота зірка. Так що, так, прототипом у нас є заздалегідь, бо в іншому випадку, наш компілятор буде кричати на нас. Це буде сказати, в порядку, що це за функція куб? Як, ви в буквальному сенсі є мені нічого не сказав про це. Це як коли ви ходити в клас, і хтось на кшталт: є вікторина сьогодні. І ви хочете, ви ніколи не говорив мені про це. Я не задоволений нами. Прототип в основному, як Ваш план кажучи, дивитися. Голови. Там буде проведена вікторина на цей день. Не хвилюватися, коли ви добираєтеся до нього. Ви збираєтеся бути в порядку. Так що все прототип справді, це сказати Основною, я збираюся використовувати цю функцію. Я обіцяю я визначаю його пізніше. Чи не урод, у мене. Просто зберіть і робити те, що я говорю вам. Тому у нас є прототип є просто, щоб зробити наш компілятор щасливим. І це в основному обіцянки, що Ви визначили цю функцію пізніше і що ви не просто зателефонувавши ця випадкова річ, що це не знаю, що ти збираюся робити. Таким чином, в даному випадку, ми маємо головний тут. Ми инициализировать деяке ціле х. Це два. Ми збираємося, щоб роздрукувати що х. Ми збираємося куб х. Як бачите, у нас є наш Оголошення функції тут, що ми говорив про раніше. Це буде куб х, а потім, якщо ми пам'ятайте, функцію куба фактично повертає ціле число в нам, які зберігаються в х разів, так що ми можемо надрукувати з восьми, або куба х прямо зараз. Чи має це сенс для всіх? Ми добре? Добре. Дивовижний. Добре. Скільки з вас, хлопці Пам'ятайте, що це так це в основному тільки ваш Стек і ваша купа, просто візуалізація як пам'ять зберігається тут. Так що ми просто хочемо зробити Переконайтеся, що ви розумієте, як вони представлені в пам'яті. Якщо ви берете класи як CS61 та інше пізніше, Ви отримаєте, щоб дізнатися це набагато більше, в глибині, і це дійсно здорово. Я дуже рекомендую його. Але зараз, я дам Ви широкий огляд так що вам не доведеться знаю вошивий піщаний. Так верхньої просто текстовий сегмент, який містить фактичні нулі й одиниці, двійковий за це. І це використовується для зберігання глобальні змінні, якщо у вас є. У міру просування вниз, ми Тобто, як ви бачите тут, ініціалізовані дані, неініціалізованих Дані, а потім купи. Таким чином, ми дійсно не говорити про купу прямо зараз. Ми повернемося до нього пізніше. В даний час, я просто хочу, щоб махати руками і сказати: Вам не потрібно знати про це зараз. Але ми поговоримо трохи Трохи про стек. Так стек where-- нас є зум в. Це насправді, як програма ми просто дивилися на місце в пам'яті. Так що ж відбувається, кожен раз ми викликаємо функцію, ми отримуємо те, що називається стек рама, яка є одним з них. Так Основні-х параметрів. Так це ті речі, що ми проходимо в магістралі. Таким чином, вони мають рацію тут внизу, бо це перше, що ми називаємо. А потім ми перейдемо до основних років Місцеві жителі, і, коли ми говоримо, що, ми маємо на увазі локальні змінні що зберігаються в основній. Так місцеві жителі тут бути, як, х дорівнює двом, в цьому випадку. Тому що це локалізована на головну. Всі пам'ятають область, переходячи що в лекції? Добре. Так, тільки змінні, инициализируются в основний. Так ось чому у нас є основний [? вокал. ?] А потім протягом основної, ми називаємо куб. Чи не так? Таким чином, ми отримуємо ще один кадр з параметрами куба. Таким чином, в цьому випадку, куба Параметри зараз х, що ми пройшли в, два, які ми пройшли в. І тоді місцеві жителі куба, який є де фактична кубічні відбувається. А потім він повертається. Так що ж відбувається, як кубик насправді що він повинен робити, він повертає. Коли він повертається, цей кадр йде, і його повернулися вниз до головної. А потім протягом основної, ми може насправді роздрукувати його. Так що, коли ви повернулися щось, коли ваша функція повертає, це як передачі цих цінностей в рамка під ним, а потім йде. І речі повинні виконати в порядку. І коли ви отримуєте на великих програм, ми можемо зробити кулер і більш складним діаграм. Але зараз, це просто загальний огляд так у вас є вид розуміння того, що відбувається, коли ви викликаєте функцію і як це виглядає насправді в пам'яті. Прохолодний? Все добре? Дивовижний. Таким чином, це той, який знаходиться просто намагаюся поміняти речі. Як ми бачимо, тут, у нас є наш прототип функції так що наш компілятор не кричати на нас. У нас є кілька основних, і ми Для перемикання х і у. Вони не зробили це демо в лекції ще, є вони? Вони мають не? Добре. Таким чином, ми збираємося піти над самою цією коротко. Ви отримаєте в цьому прикладі більш в глибині, я думаю, на цьому тижні. І тоді на наступному тижні ми можемо насправді зануритися в, чому це не працює. Таким чином, ми маємо цю порожнечу Function here-- підкачки. Так порожнеча просто означає, що нічого не повертається. І у нас є своп Int А і INT б. І у нас є якесь тимчасове Мінлива вот. отримує призначення в б, а потім б отримує призначення на темп так що й Б значення тепер включається. Але, поворот сюжету, це не працює. І частиною цього дійсно є робити з тим, що і б тут, ті, які отримують пройшли в Тут, насправді копії хну. Тому, коли функція фактично повертає, він переключається копії, але не фактична х і у-х. Так один спосіб думати про це that-- вид, це своп. Добре? Таким чином, в основному, у нас є х і у ініціалізації. Але коли ми насправді йти до для цих кадрів за свопа, ми передаємо значення за до нього, і вони ініціалізації. І вони тільки коли-небудь жити прямо тут. Так і б жити тут. І вони отримують місцями. Але, коли ми повернемося, ми не зробити що-небудь з і б. і б відпустку з нашою функцією. І так х і у залишаються тими ж. Ви отримаєте більше в тому, як виправити, що й як ми фактично маємо справу з, що пізніше. Але це тільки одна річ, на вигляд, майте на увазі. Використовуйте його для майбутнього. Не хвилюйтеся, якщо щось не зробив все почуття у світі. Вони є копіями є велика річ. Якщо ви збираєтеся узяти речі від цього, ви пройшли в копіях. Так оригінали залишаються тими ж. Все добре? Прохолодний. Так аргументи командного рядка. Я впевнений, що на початку ви, хлопці, все були ті великі, як, Int основні порожнечі. І ви, як, ОК прохолоді. Я дійсно не дбаю. Це саме те, що я повинен написати. Але у ваших нових програм, Особливо в цьому PSET, і чому там крейда на землі? З вашого наступного PSET, ви буде бачити це. Int основний, INT аргумент с, Рядок дуга v, кронштейни. Так, з того, що ми просто дізнався сьогодні, що ми вважаємо, що другий параметр або що другий елемент тут? Це масив. Який тип масиву? Рядок масив, так. Прохолодний. Так от, як ви збираєтеся щоб бути оголосивши їх зараз. Чи пам'ятає хто- що вони означають? Ні? Хм? СТУДЕНТ: аргумент с. Елісон: Так аргумент з тримає лічильник. Це внутр. Це число, чи не так? Так що ви думаєте, що число має? Так. Так аргумент с є число рядків які складають командний рядок. Так що, якби ми мали do-- фактично, є приклади, після цього, тому я не буду забігати вперед. Це число рядків, просто зробити свій командного рядка. Так що, коли ви це робите, як, точка слеш Маріо, це один рядок, яка робить це. В цій частині, ви дійсно будете для годування в командному рядку, як я впевнений, що ви, хлопці, хто прочитав специфікації пилку. Таким чином, в тих випадках, може бути, ви будете є два або три аргументи. Це буде корисна річ у використанні. І тоді аргумент проти, як ми вже говорили, це просто рядок масиву. Так що насправді зберігає те, що Ви ввели в командному рядку. Тому у нас є ці. У вас є якийсь точка слеш скопіювати вхідний_файл вихідний_файл. Таким чином, якщо C Arg це кількість рядків що ми передаємо в команду лінія, що наша аргумент с в цьому випадку? Три. Точно. Так що аргумент проти нуля? Так що перше, що ми зберегли? Dot слеш копію, точно. І тоді другий буде вхідний_файл. Третій буде вихідний файл. Так що про аг проти трьох? Було б марною, бо це кінець нашого масиву, чи не так? Прохолодний. І тоді те, що близько шостого однієї? Це свого роду питання з підступом. Иш. Чи знаємо ми, що це таке? Це визначено. Ми поняття не маємо, що це може бути. Це все, що прямо після масиву в пам'яті, і ми поняття не мають, що це таке. І це небезпечно чіпати тих, речі, тому що для всіх ви знаєте, це якась частина пам'яті, що вас не повинен бути нульовим або доступу. І він може робити божевільні речі. Вона називається надмірно індексації Ваш пов'язані в масив. Не виходити за межі вашої Масив, або погані речі можуть трапитися. Ви повернутися і, начебто, законів фізики були знищені або щось. Прохолодний. Чи має це сенс для всіх? Не надто погано. Так що тепер, кожен це улюблена частина, PSET огляд. Ура! Добре. Так що для тих з вас, хто не читав Pset специфікації, Ви робите деякі дійсно цікавий матеріал з криптографією. Ви збираєтеся створити Цезар Cipher і Vigenere Cipher. Ви безперечно повинні читати спец щоб побачити, як ці роботи. І якщо у вас виникли будь-які проблеми про що він повинен насправді робити, будь ласка, приходьте поговорити зі мною, напишіть мені або текст мені. Я навколо. Таким чином, є три основні речі тут, що ми хочу поговорити about-- тільки почасти з продовження лекції. Речі, які ви, можливо, не знають, о, корисні поради та інструменти. Так що ми збираємося робити Короткий огляд ASCII, бо це буде супер важливо для Cipher Vigenere в. Ми збираємося перетворення Входи командного рядка, які буде дуже корисно для шифр Цезаря. А потім по модулю. Прохолодний. Так, ASCII відображає символи в числа. Це відмінний графік. Ви повинні мати це закладки десь. Ви хочете його для Ваш перший середньостроковий. Я впевнений, що кожна людина має це Графік на їх середньострокового листа. Так вивчати його. Люблю це. Тримайте його під рукою. Це буде корисно. І все це є кодування який відображає літерні і числові, та інші символи в Номери для нашого комп'ютера. Тому що, звичайно, в кінець, все, що ми зберігати збирається отримати перетворене до нулів та одиниць, так що ми повинні якимось чином представляти Текст і символи, які ми всі звикли бачити в якості свого роду номером. Так як ми бачимо тут, у нас є прописні, які тут же. Це 65. І в нижньому регістрі 97. Таким чином, ви можете зрозуміти out-- як я вже казав, якщо у вас масив з декількох Рядки, що кожен з них закінчується нульовим символом. Було б простір. Простір має свій власний special-- Я не пам'ятаю, де це тут. Ах. 32 є простором. Так що всі карти до нього. Тому у нас є ASCII математику. Pro tip-- в Vigenere-х, вас може виникнути спокуса конвертувати ваші номера для цілих чисел, але насправді краще, практика щоб мати можливість використовувати персонажі, як це коли ви насправді маніпулювання їх. Так що, якщо ви хочете використовувати цифри, ви можете. Але найкращий спосіб, або спосіб, який ми, як правило, подобається вам, хлопці, щоб зробити це, це спосіб, де ви знаходитесь фактично вирахування символів. Тому я хочу вас, хлопці вид з'ясувати ці поза. Чому б вам не спробувати через одну? Так що перший, в Третій, і п'ятий. Тому що я хочу, щоб переконатися, що ми говоримо все, що ми повинні говорити о. Я просто хочу сказати, одне з важливі речі to-- Ой, зачекайте, ви, хлопці, не бачили цього. Добре так робити перші три. Давайте зробимо це. Тому що ми повинні говорити про модулю. Я знаю. Математика важко. Ви можете використовувати калькулятор. Це нормально. Або підтягти таблицю ASCII, бо Ви, ймовірно, будете хотіти що. Прохолодний. Так що я буду швидко ходити Ви, хлопці, через них. Так люди столи ASCII під'їхав? Яка наша цифрова номер для рядкової А? СТУДЕНТ: Сім. Елісон: Так рядкові є 97 і прописні 65. Так 97 мінус 65? АУДИТОРІЯ: 32? Елісон: 62, так. Таким чином, в цьому випадку, те, що б це роздрукувати? Це перший? Якщо у нас є процентне д, що б це вказують? СТУДЕНТ: число. Елісон: Ми друкуємо з фактичної кількості. Таким чином, ми насправді відбувається роздрукувати 32 тут. І якби це було відсотків с, 32 дасть нам простір. Так розуміючи, що символи можуть бути надруковані як у вигляді чисел і як фактичні символи що дійсно важливо, і платити Увага до фактичних типів що ми робимо тут. Прохолодний. Таким чином, для будь-якого іншого одного з них, що ми збираємося друкувати? СТУДЕНТ: характер. Елісон: характер. Прохолодний. Так що, якщо ви, хлопці, хочете знати, вам може працювати ці за своїм розсудом. Якщо у вас виникли проблеми, пишіть мені. Але друга буде роздрукувати строчную б. Третій буде роздрукувати прописна В. Четвертий надрукує із заголовної С, і останній буде в нижньому регістрі A. І останнє одно-- ми насправді збираємося щоб потрапити в какой то божевільний відсотків знак навіть означає через пару слайдів. Так що спробуйте ті на власний розсуд. Якщо у вас виникли проблеми, будь ласка, приходьте поговорити зі мною. Якщо ви, як правило, в Adams D залі, Ви, ймовірно, знайдете мене навколо. Так, atoi. Як багато з вас вже бачили це Функція або чули про нього взагалі? Будь? Прохолодний. Так що це насправді коштує для це ASCII в ціле. Так що ви можете зробити, це, з Цезарем, для тих, хто читав специфікацію, Ви збираєтеся робити точка слеш Цезаря після написання програми, а потім ви збираєтеся вхід деяке число, що ви необхідно закодувати ваше секретне повідомлення с. Але, якщо ми пам'ятаємо, всі наші Входи зберігаються у вигляді рядків. Чи не так? У нас є V масив ARG це все тип рядок. Так що, якщо ви просто спробуйте тягнути, що один, що б думаю, що одна або ще більше число Ви використали насправді характер. Таким чином, ви збираєтеся отримати деякі божевільні результати. Так що якщо ви дійсно хочете перетворити це ціле число що ви можете використовувати для маніпулювання Ваше слово або ваше повідомлення, Ви хочете використовувати atoi. atoi просто перетворює ваша рядок з міжнар. Так що, якщо у нас є рядок 12, якщо ми називаємо atoi на 12, або щось, що вхід, це буде насправді повернутися Вам ціле. Чи не персонаж або рядок 12. Який, при запуску додати, що в числа, буде сильно відрізнятися, бо рядок 12 якийсь божевільний номер в ASCII, але число 12 насправді 12, яка є те, що ви хочете. Отже, ви хочете, щоб переконатися, що використовувати atoi. Ви будете хотіти це в Цезаря, тому що ви потрібен Int поставляється Користувач в командному рядку. Але коли вони поклали його в команді Лінія, він зберігається у вигляді рядка з самого початку. Чи має це сенс? Ви не обов'язково Це потрібно для Vigenere. З Vigenere, як я сказав, до, ви повинні спробувати і використовувати ASCII математиці, що більше схожий це, де ви насправді використовуючи символи, які нам дають вам. Прохолодний. Все там добре? Дивовижний. Так модулю. Так що, якщо вам дають це величезна кількість для Цезаря? У вас є ідея, що якщо ви на Z і ти дали номер два, що означає, що ви need-- Z стане другим Лист після себе, чи не так? Так що вам потрібно, щоб якось обернути навколо, і по модулю є спосіб зробити це. Так все це робить це дає залишок поділу Перше число в секунду. І у нас є приклади в зробити що трохи більше бетону. Але в основному, використовується по модулю, коли ви хочу зробити щось обернути навколо. Так що, якщо ви хочете тільки номера від одного до восьми, Ви можете використовувати по модулю на будь-який інший число, і це буде завжди повертають число від нуля до восьми. Таким чином, деякі examples-- якщо у нас є 55 по модулю 10, він просто дає залишок 55 ділиться на 10, що було б 5. А потім три по модулю п'ять, хто здогадатися, що це було б? Три. Так що якщо у вас є менше число до модулю, він не може йти в рівномірно. Це нуль. Так що просто повертає сам номер. Так вісім модулю вісім буде? СТУДЕНТ: Нуль. Елісон: Нуль. Бо їде в рівномірно. 16 по модулю 15? АУДИТОРІЯ: Один. Елісон: Прохолодний. І тоді цей останній, це просто показати you-- вам може бути цікаво, в порядку, що порядок операцій тут? У нас розділити в першу чергу? У нас по модулю в першу чергу? Так модулю має той же пріоритет як поділу або множення, і його ліва асоціативно. Таким чином, це такий же спосіб. Ви завжди робите дужки, то множення, ділення, і по модулю в порядку зліва направо. Так стандартні правила. Просто покладіть його в тій же категорії як ділення і множення. Таким чином, в даному випадку, ми б є 1 плюс 2 дає нам 3. Ми множимо на 2, так що ми отримуємо 6. Ми по модулю, що на 2, що дає нам? СТУДЕНТ: 0. Елісон: 0. І тоді ми додаємо 2, тому ми отримати 2 в цьому останньому випадку. Так modulo-- ви напевне збираюся думати про способів включити що, коли ви обгортання навколо алфавіту. Якщо ви знаходитесь на Z, і ви повинні рухатися направити три місця, щоб дістатися до C, Тобто те, що вся концепція обгортання навколо. Так що я залишу його в Ви, хлопці, щоб з'ясувати, як саме ви збираєтеся його використовувати. Але, безумовно, корисним інструментом для PSET на цьому тижні. Мені дуже подобається це. Це одна з моїх улюблених psets. Після того як Ви це зробити, якщо у вас є друзі, Ви можете, як, відправити один одного в секреті Повідомлення і переконайтеся, що він працює. Тому що це буде розшифрувати його або щось. Багато веселощів. І що це кінець секції. Я закінчив рано. Я до сих пір є 15 хвилин з хлопці, так що якщо є що-небудь що ви хотіли б перейти далі, я був би щасливий зробити це. Будь-які інші питання про Ваш PSET для тих з вас, хто почав або прочитати специфікацію. Все, що ми говорили про в останню годину і 15 хвилин, що ви хотіли б мене для виду переспіви, я був би щасливий. Або ми можемо дзвонити, це йде, і ви можете все залишити і взяти більше цукерок з вами як ви йдете. Але якщо є які-небудь затяжний питання, будь ласка, дайте мені знати. Ви також можете придумати і поговорити зі мною після цього. Я обіцяю, що не кусаються. Що-небудь ще? Все добре? Почуття кожної людини, як вони можуть впоратися з цією PSET? Ви збираєтеся бути дрібні хлопці. Години роботи офісу там з причини. Прохолодний. Добре. Ну, в такому разі, спасибі Ви все, що прийшли. Я сподіваюся побачити вас на наступному тижні. Там буде більше цукерок. Там можуть бути інші цікаві речі. І я з нетерпінням чекаю знати все про вас цього року.