[Powered by Google Translate] [♪ ♪ Гуда]
Таким чином, щоб познайомити вас з того, що я встав на екрані;
це один з інструментів, які ми розробили протягом літа;
це називається CS50 простору,
і це наш спільний застосування кодування
що ми збираємося використовувати в секціях.
Це дуже здорово.
Хто-небудь з вас бачив CS50 перспективі ще?
Дозвольте мені тягнути, що в іншій вкладці.
Run.cs50.net
Так
якщо ви йдете в run.cs50.net,
Ви можете побачити це у Вашому браузері способом
насправді код - написати код C,
, А потім запустити його,
так як компілює його, запускає його, а потім повертає результат для вас
так це начебто хороший спосіб, щоб експеримент
з деякими з коду, що Девід переходить в лекціях
і ми даємо на вас з проблеми набори
, Фактично не маючи, щоб запустити прилад.
>> Так що простори робить це відрізняється від
якби я повернутися до цієї вкладці,
Просторах CS50 перспективі, як ви бачите тут,
Але якщо ми прокручуємо знову і подивитися на іншу сторону вікна,
Ви бачите право Я єдина людина в цьому просторі,
але те, що я збираюся зробити, це запитати вас, хлопці приєднатися до цієї космічної зі мною
і ми всі дістатися до коду в тому ж віконці,
спільно використовувати код один з одним,
і говорити про відмінності між нашим кодом.
Так це ніби класна річ -
таким чином, щоб приєднатися, якщо ви відвідаєте це посилання прямо тут, у верхньому
що я виділив,
Ви можете просто ввести в apps.cs50.net/spaces/vqcspSnO.
>> Гаразд, для початку,
Я збираюся дати вам трохи туру цього.
Ми збираємося зробити деякі дурні кодування з ним на перший,
просто так, що всім стає свого роду відчути, що це таке,
але те, що я зробив -
або те, що я збираюся зробити прямо тут -
Я збираюся взяти код, що я написав тут,
який, як ви бачите прямо зараз порожньо;
вона нічого не робить.
Це просто код плиті котла, ми будемо називати його.
З невеликий список справ коментар.
Я збираюся зберегти його, натиснувши цю кнопку Зберегти.
І що, що робить це
підкреслив він тут недовго - що перегляд зберегти зелене поле,
А тепер, якщо ви будете шукати мене в просторі,
натисканні моє ім'я,
Ви можете бачити, що я отримав цей перегляд прямо тут,
і якщо ви клацніть по цій ревізії,
вона буде завантажити код у ваш простору, теж.
>> Так уже все завантажується код, що у свою простору?
Добре, якщо у вас ще немає, йти вперед і робити те,
і те, що я хочу, щоб ви хлопці робити в цьому мало, щоб робити-розділ
це написати трохи використанні Printf про себе,
Так, наприклад, я хотів би написати
Е ("Мене звуть Нейт");
а потім я напишу
"Я закінчив в 2009 році
Стенфордський "
і я хотів би почути про
в якому році ви перебуваєте в школі,
Чи ви в коледжі або школі бізнесу
або іншої школи Гарварду,
те, що ви вивчаєте, якщо вона невідома;
якщо воно не відомо, що це абсолютно здорово.
Я не вирішити, поки я був в кінці мого другого року.
і тоді я б теж хотів знати
нічого божевільного ви хочете сказати мені, чи
щось про клас або просто що-небудь ще.
Коли ви закінчите писати, що з вашої маленької Printf,
якщо ви будете економити перегляд або, скоріше,
Спочатку переконайтеся, що ви можете запустити його
і що вона видає саме те, що ви хочете, щоб роздрукувати,
, А потім, якщо ви йдете далі і зберегти цю ревізію
за допомогою кнопки Save Редакція, це перший маленький хлопець тут,
і ми цікаве пройти і зробити невелике введення так.
Тому ви повинні достатньо лише натиснути кнопку відтворення,
який тут, на лівому верхньому куті,
так що ця кнопка Play в лівому верхньому кутку буде
Написати код від нашого сервера, на якому він буде складений, а потім запустити.
Так що ж цікаве розуму від цього
Цей код насправді не працює на Вашому комп'ютері;
це насправді прямують через Інтернет.
>> Як справи, Шарлотта?
>> Я - нормально. I'm - Я думаю, що я
з труднощами збереження
на сервері так, що він може - я можу запустити програму.
А потім, коли я намагаюся запустити його, він говорить, що немає помилки.
Заявлений як вірус, який не перебуває в там більше.
Ну, давайте подивимося, чи можете ви вдарити Зберегти знову?
Я бачу його на екрані.
>> Право, добре, так це те, що в мене є.
І я не знаю, чому вона не дає мені запустити його.
Ну, гаразд, прости.
Чи можете ви пояснити, чому - те, що було не так - те, що не працює з ним?
>> Так, тому що я не бачив, що було останньому рядку, де ще є змінні
що я не оголосив, що я не збирався за цей час там.
Так, відмінно!
>> Тепер, якщо я зберегти його, я думаю, він повинен працювати.
Тепер, коли ви зберегли його, він працює; дивним.
>> Так що так, оскільки ми проходимо -
Так що ж відбувається,
Я просто хочу повторити це на камеру.
Що відбувається було, що ця змінна з
залишилося після - Я припускаю, що ви видалили деякі інші речі
де ви оголошена,
і таким чином, це було кидати речі і не дозволяючи запустити його.
Так що це саме те, що ми хочемо зробити в розділі
це були люди намагаються написання різних частин коду,
компіляції, подивитися, що працює, подивимося, що ні,
, А потім цікаве говорити про ці речі, тому що ці відключення точок,
Я досі стикаємося,
Я до сих пір - я роблю багато дурних речей весь час,
і я не знаю, чому він не працює,
так що давайте підтягти перегляду Шарлотта 3,
і ми будемо його запуску.
>> Тому, коли я біжу, тепер, коли я отримала свій код сюди,
Я можу збільшити, натисніть кнопку Виконати,
завантажує його, будує, запускає його,
говорить, що з успіхом пройшла, і якщо я прокрутіть униз,
см. Шарлотта Адамс молодший в домі,
психологія, вторинний в економіці; дивним.
Великий зустрітися з вами!
Awesome.
Гаразд, йдемо далі, давайте підемо до Данила,
перейти до перегляду 3,
компілювати, запускати;
Чому б вам не розповісти нам трохи про себе, Данило?
>> Подзвони мені даний.
Я йду в бізнес-школу через дорогу від Вас, хлопці,
і я був у морській піхоті, перш ніж тут,
і це все нове для мене, так що так.
Не відчувайте себе погано, мені 30 і я не знаю жодної з цих речей.
Високий, спасибі, Dan!
Все в порядку, ми отримали іншу Данила.
Ви йдете Даніель - ви уявити, Даніель?
>> >> Звичайно, я Даниїл.
Я на другому курсі Mather прямо зараз.
Я зосереджений на уряд,
Але я хотів взяти CS50, тому що я чув відмінні відгуки про клас
і я ніколи не пробував CS раніше.
Виділіть сюди і показати це - круто.
Рухаємося далі, Джаред.
Як справи?
>> Добре, як ви?
Як ви можете бачити, я молодший концентратор філософії в Еліот,
родом з південної Каліфорнії,
і я зацікавлений в ухваленні CS50 тому що мені подобається логіка його,
і, здається, дійсно здорово зробити щось на комп'ютері, так.
Високий, де в південній Каліфорнії ви?
>> Про годині їзди від [нерозбірливо], невеликому місті [нерозбірливо].
О, так, мій батько з Redlands.
Прикольних речей.
>> Гаразд, Джиммі, як справи, Джиммі?
>> Добре, як ви?
Роблячи дуже добре!
Розкажіть нам про себе.
>> Я новачок, і я не зовсім впевнений, що я за фахом
але я свого роду схиляється до економіки.
Як Daniel до мене, я ніколи не робив ніяких CS, але звучить круто.
Я родом з Чикаго.
Awesome. Так перевірте його роздруківки тут.
Я хотів запитати, зробили це друк, як ви очікували?
>> Ні, я забув роздрукувати новий рядок.
Я насправді забув, що, коли я писав свою справу
в перший раз, теж.
Це свого роду біль, аби не забудьте покласти ці вручну.
Було б непогано, якби він просто знаю, що те, що Ви хотіли.
>> Добре, Келлі.
Нічого собі, у нас є 2 Kellys, 2 Daniels, 2 Kellys.
Так Kelly - ви йдете Келлі Ren?
Добре, дивовижний.
Або Келлі, я маю на увазі.
>> Так що так, тому я Келлі.
Я на другому курсі Pfoho.
Я отримав електронну пошту сьогодні, що мене все ще є 7 тижнів оголосити мою концентрацію,
тому я намагаюся не думати про це,
і мені подобається випічка, працює, і Craisins.
У мене немає досвіду з більшістю CS;
Я сам навчився створювати веб-сайти, коли я був дуже молодий,
Але я думаю, що я, ймовірно, навчив себе неправильно багато разів.
Сподіваюся, я буду вчитися трохи більше
і - так.
>> Високий, добре, спасибі.
Підемо в іншу Келлі;
Я нічого не маю - ти сказав щось тут?
>> [Нерозбірливо]
Там це!
Sweet!
>> Гаразд, так що я Келлі.
Я перший рік аспірант.
Я за фахом розуму, мозку і освіти.
Я закінчив в Franklin & Marshall College в 2008 році
зі спеціалізацією в галузі психології та соціології
і незначне по-французьки.
Я беру CS50
тому що я зацікавлений у тому, щоб кандидат в неврології
і я відчуваю, що це допоможе мені зрозуміти, використовуваних технологій.
Awesome.
Рухаємося далі, Мікаела.
Це правильна вимова?
Добре, дивовижний.
>> >> Я Михаїла.
Я на другому курсі в Kirkland House,
і я зосереджений в області машинобудування.
Мені дуже подобається їзда на велосипеді, побудований на велосипеді влітку цього року.
Я беру CS, насправді,
як концентрація вимога,
Але ви знаєте, я думаю, це ще прохолодно роду інженерні класу.
Awesome - Ви побудували велосипед цього літа?
>> Да.
Ух ти, як рама і все таке?
>> Е-е-hunh (позитивний).
Нічого собі, це дійсно здорово.
>> [Нерозбірливо кадром чат]
[Сміх]
Так, це було так давно.
Ви ніколи не знаєте, вірно?
Ну, прохолодному, добре, спасибі, Михайла.
>> Гаразд, Міссі.
>> Мене звуть Міссі, я на першому курсі,
так, значить, я нічого не знаю!
Я хочу сконцентруватися в астрофізиці.
У CS50,
Я відчуваю, що, безумовно, допоможе в цьому.
Дивний факт про мене, я національному сертифікований пожежний.
Ось це так!
Як це сталося?
>> Я відвідав Академію
і пройшов через пекло для багатьох тижнів
і отримав сертифікацію.
Ого, вітаю!
Це не маленький подвиг, звичайно.
Отже, тепер ми будемо робити мені.
Я наступний в ряду.
I'm - запустіть його.
>> Так мене звуть Нейт.
Я був клас 2009 року в Стенфорді.
Я був символічних систем великих,
який схожий на розум, мозок, поведінка концентрації тут,
але це свого роду суміш
інформатики, лінгвістики, психології та філософії.
Вид - Так, багато дивних речей, але це було здорово,
а потім я зробив магістра в галузі комп'ютерних наук там, як добре.
Так що я новачок в Гарварді в цьому році.
Я дійсно хотів, щоб потрапити в навчанні.
Я провів останні 4 роки в Стенфордському TA-ING класи інформатики
і так Девідом дозвольте мені давай,
і я збираюся бути допомогти з CS50,
так я роблю це повна, я не в аспірантуру.
Це було весело.
Сподіваємося, що вона буде продовжувати бути весело, і я впевнений, що це буде.
>> Все в порядку, Сем.
>> Мене звуть Сем, я на другому курсі в коледжі, в законі конкретно.
Моя головна буде історія науки, напевно, і VES вторинні,
і мій улюблений колір жовтий.
Не потрібно судити або що-небудь, але це гарний колір!
І Стелла.
>> Привіт, я Стела, я новачок в сірих.
Я поняття не маю, що я зосереджений в раніше,
так CS50 була просто якась випадкова,
яка цікава.
Цікавий факт, Джиммі був першим другом Гарвардського мій,
тому що ми обоє з Чикаго.
Cool, і грація - який повинен бути дійсно гарним, правильно?
>> Я думав, [нерозбірливо].
О, так.
[Нерозбірливо / вимикання камери чат]
Гаразд, я все ще вчуся, все ще вчуся.
>> Таким чином, у нас є дещо ще, що це доволі цікаво тут.
Так, мені просто цікаво, у вас є ідея, що тут відбувається?
Ви знаєте, як це інтерпретувати?
>> Я повинен був поставити крапку з комою після кожного рядка.
Це свого роду біль.
Іноді ці крапки з комою може бути реальною болю відстежити.
Таким чином, виходить, що
спеціальної програми ми використовуємо в цьому році
скомпілювати код C називається Clang,
і з цієї причини ми почали використовувати Clang в цьому році -
тому що ми не використали цю програму в минулому;
Ми використовували інший називається GCC, що це дійсно популярним -
Clang насправді дає вам повідомлення про помилки, які мають сенсу.
Це один говорить: "очікується"; "після виразу",
і він навіть говорить вам, вирази, після чого вам потрібна крапка з комою.
Так ви її виправлення?
>> Да, прямо зараз.
Високий, дайте мені знати, і ми будемо потягніть його вгору, і ми будемо його запуску.
Але так, поклавши ці крапки з комою в це вид болю.
>> Я встановив його, так що я думаю, що це має працювати.
Awesome - перегляд 3.
Це схоже на це.
Гаразд, так що тепер, якщо ми запустимо його,
там вона йде.
Прикольних речей.
>> Добре.
Так що спасибі за це.
Це здорово зустрітися з вами, хлопці.
Те, що ми збираємося зробити зараз, це провести наступний небагато
свого роду занурення в розділі проблеми
, Які приходять від поставленого завдання з цьому тижні
і ми зробимо все, що для більшості з розділів
за решту строку,
і тоді ми врятуємо останні 15, 20 хвилин або близько того
говорити про проблему ставить перед собою
, А потім просто будь-які інші питання ви маєте в цілому про класі.
Тим не менше, те, що ми дійсно хочемо зробити
це є всі беруть участь
використання простору матеріал,
кидали в коді, кидаючи в пропозиції,
і говорити про те, коли такі речі перерву
або не працюють, тільки тому, що ці речі, які
Я знаю, я наткнувся на
Коли я почав кодування,
і були дійсно цікаве розчарування в рази
тому що, якщо цей як 2 ранку перед проблемою набору пояснюється,
так що - тільки для розкриття,
Я не почати програмування, поки я був на другому курсі в коледжі.
Це була якась дивна, невідома річ
що я почув, було круто
і я також чув, це може бути реальна біль в приклад
якщо ви пропустили крапку з комою, і це тільки помилка збереження вашої програми від роботи
і тримати вас в сплячий режим,
оскільки визначено,
якщо у Вас є питання, як, що,
якщо у вас є проблеми, як, що, дайте мені знати,
тому що я хочу, щоб це хороший досвід для вас, хлопці.
>> Так що ви, хлопці, всі завантажені завдання, поставлене ще?
Свого роду знаєте, де це? Добре.
Таким чином, ми поїдемо в cs50.net, тому що я його не мають на цей рахунок,
підтягти проблеми набори,
підтягти проблема набору 2, і ми будемо дивитися на стандартне видання Сегодня.
Ми будемо тягти до специфікація тут.
Прокрутка вниз.
Таким чином, ми збираємося почати дивитися на цю частину питання.
Хіба ви, хлопці, дивилися ці шорти ще?
Добре.
Таким чином, є шорти на петлях,
яка здійснюється шляхом Томмі, один з хлопців голова навчання.
Там один на область,
Я вважаю, зроблено ще одне вчення хлопець на ім'я Девід
, А потім один на Caesar Cipher також зробив Девід.
Вони досить прохолодно.
Хіба ви, хлопці спостерігали за свої шорти досі?
До речі, як вони були?
Корисні? Гаразд, добре знаю.
Якщо це не так, можна сказати і так.
Але перш ніж ви це зробите,
ви, хлопці подивилися на ці питання
на всіх?
>> Давайте поговоримо про це трохи.
Таким чином, ми ввели за останні пару тижнів
У лекції
кількість різних циклів.
Там в цикл,
час циклу, а потім зроби той час як цикл,
і в лекції, ми багато говорили про
як ці петлі все
досить схожі у багатьох відношеннях
і ви можете багато чого зробити те ж саме з якийсь час циклу
що ви можете з циклу.
Ви просто повинні виду використання правильних комбінацій змінних і тому подібне.
і так насправді
реальну різницю між усіма петель є те, що
Іноді вони більш корисні
використовувати їх в один час, ніж в інший час.
>> Так, наприклад,
в той час як цикл відрізняється від DO-циклу.
Чи всі відчувають, що вони мають хороші ручки, коли
Зроби той час як цикл більш
корисно або в чому різниця?
>> Я думаю, що різниця зроби той час як цикл
працює - я не знаю зовсім те, що термінологія,
але ряд функцій всередині циклу.
Вони автоматично - він робить свою виконується принаймні
Перед перевіряє стан, або в той час як цикл буде працювати тільки, коли
він постійно працює - чи ні умова задовольняється.
Так, не в цьому сенс?
>> Давайте подивимося на трохи коду.
Так що просто повторити питання,
або відповідь, а;
Відповідь була, що
час циклу буде перевіряти, якщо умова
що ви вказали, зустрілися
перед виконанням тіла циклу в перший раз,
а зроби той час як цикл буде автоматично запускатися тіло циклу,
Ми називаємо його - це дивно термінології,
але якщо я коли-небудь говорив, що не має сенсу, дайте мені знати -
Тіло циклу є те, що речі, які ви покладете між фігурними дужками.
І зроби той час як цикл,
, Що тіло отримують бігти щонайменше один раз,
і тоді умова отримує перевірені перед виконанням кожного наступного часу.
>> Таким чином, насправді, Сем,
Ви не заперечуєте написання простої в той час як петля
в просторах?
>> Як ви ніби як
зробити нову ...?
Я просто видалити все, що ви там.
Так, просто зніміть її.
>> Ну, я вважаю, у мене це -
який з них ви хочете, в той час як, або ви хочете ...?
Так, просто в той час як справжні, роздрукувати щось.
І давайте подивимося.
Олександр, я зрозумів, що ми ніколи не познайомили вас.
>> О, це прекрасно.
Ви - чи можете ви код до зроби той час як цикл для нас?
>> Так, я спробую.
Все в порядку, ми просто тягнути ці на екрані,
так що ви начебто є ручка, що відмінності.
>> Отже, от що Сем зробив.
У нього є ціле число, зване я
що він инициализирован до 17 років.
Потім він говорить, в той час як (INT я = 17)
Е ("Мене звуть Сем.");
Так що ж відбувається, коли ми запустимо цей код?
Там в помилку, що ж помилки сказати?
Давайте потягніть його вгору, і говорити про це.
Сталася помилка, він говорить.
Давайте прокрутки вниз.
Таким чином, він дав нам цю помилку, і вона сказала:
"Ей, я очікував вираження".
Це свого роду загадковим.
Так, саме так - і знову,
там буде ще одна маленька помилка, що ми будемо ловити тільки в секунду.
Але це ще один з тих дивні речі термінології,
так що це Int я = 17
не є вираженням.
Що, схоже, він робить, це
оголосивши ціле число, зване я
і встановивши його рівним до 17
або, скоріше, поклавши 17 в, що називається Int я.
І це не має сенсу
У контексті цього циклу.
Це не має сенсу, як ми побачимо,
в контексті циклу, тому що для цього циклу декларацій почати
с, що для внутр одно я щось
і йде далі.
>> Так само ви -
щось виправити, все в порядку.
Ось він іде, дивовижний.
Так що тепер все виглядає трохи інакше.
Кілька речей змінилося.
Чи можете ви розповісти нам, що все змінилося?
>> Я дістав INT, так що немає ніякої декларацією [нерозбірливо], а не призначення.
Той знак рівності, я поставив 2 рівні знаки, що означає рівні.
Awesome.
Так, так, що Сем дійсно був він вийняв Int
, Який був тут раніше,
так що якщо я просто дивлюсь на це - це те, що було раніше, він сказав, INT,
який був оголосити його - таким чином, ми вийняли типу.
Там в Int, Char, String, коротше кажучи,
Це називається типів.
Таким чином, ви вийняли типу
і раніше,
він тільки одного знака рівності
і те, що він сказав, було проблематично про це було
коли у вас є 1 знак рівності,
це оператор привласнення.
Це не перевірка чи не 2 речі дорівнюють.
Це насправді установка щось рівне щось.
Ми працюємо № 17 в змінну я.
Таким чином, щоб зробити таке порівняння,
Ви повинні використовувати подвійні рівних,
яка є своєрідною дивні речі
але це досить поширена помилка.
Таким чином, ще одна річ, яку я вкажу, якщо ви не заперечуєте,
є те, що в
наша функція тут, в Int основний,
Ви бачите, що тіло наше функції
зміщений з лівої сторони
на 4 пробілу або табуляції.
Тому ми робимо це
тільки для читання.
Як ви можете бачити, в той час як цикл Сема тут,
він не відступ на всіх,
і це не впливає на функціональність коду.
Він буде працювати точно так само.
>> Так, наприклад, якщо ми прийдемо до верхньої тут
і натиснути кнопку відтворення наш, він буде будувати,
вона буде запустити його,
і те, що станеться?
Чому він досі говорять працюєте?
>> Тому що він буде повторювати привіт.
Саме так, і чому це повторювати привіт?
>> Тому що ціле ніколи не міняється, так що завжди 17.
Так, точно, так
Давайте подивимося, після - нагадують мені тебе звуть?
Джиммі. Так Джиммі сказав, що
Причина цього не втомлюється повторювати, привіт знову і знову
тому, що це умова завжди істинно.
Ми ніколи не змінити значення я.
Ми ніколи не змінювати зміст того, що зберігається в цій змінній.
Таким чином, на даний момент ми отримали цю помилку,
ваша програма видала занадто багато вихідних,
і якщо ми прокрутіть вниз і вид погляду на те, що тут відбувається,
Ви можете бачити, що це привіт, привіт, привіт, привіт, привіт, привіт, привіт всі шляхом.
Awesome.
>> Так виду повернутися до вихідної точки
що наявність відступів тут
в тілі в той час як цикл не впливає.
Програма, як і раніше біг дуже добре.
Як правило, для хорошого стилю -
і це те, що ми шукаємо в вашому безлічі проблем -
ми просимо вас відступ цьому на 4 просторів, які ви можете зробити
, Просто натиснувши клавішу табуляції
або вручну покласти в 4 пробілу себе.
Cool, нормально так давайте повернемося і подивимося на
Олександр робити-то час.
>> Просто свого роду невеликі проблеми.
Добре, ну давайте працювати через нього.
Хіба це круто?
>> Да.
>> Отже, тут ми йдемо.
Це код, який написав Олександр.
Ви йдете Алекс - нормально.
Так ось код, що Алекс написав.
Отже, ми отримали нашу декларацію основних прав тут,
а потім ми отримали це число змінної я
був оголошений саме тут.
У нас є зроби заяву
, А потім тіло знову з цими дужками,
так що це тіло DO-а -
Дозвольте мені наблизити це так, це зручнішим для читання -
і в тілі, ми намагаємося друкувати "це тіло",
я + +,
таким чином збільшити вміст я і зробити це
поки я не добирається, щоб бути 3,
і тоді наша програма закінчується.
>> Так що ж відбувається, коли ми запустимо цю програму?
>> Я очікував ідентифікатор.
Отже, створювати, запускати, помилка.
Що відбувається?
Ми прокрутіть вниз тут,
Ми отримаємо це дещо загадково дивлячись річ,
Очікується коми після верхнього рівня декларацію.
Це свого роду дивним.
Хто-небудь є ідея, що може бути справа?
Свого роду дивно, так.
>> [Нерозбірливо] бути оголошені поза дужками?
Так що це не застосовується тоді, коли ви використовуєте дужки?
Так він заявив, що цей хлопець, поза яким дужки?
Ох, вже ці хлопці - фігурні дужки?
>> Да.
Так, саме так.
Таким чином, виходить, що
Ви не можете фактично оголосити змінну прямо тут, як це.
Що ви могли б намагалися зробити, -
скоротити його звідти -
Ви можете покласти його в фігурні дужки тут
або інша альтернатива
це поставити його повністю зовні.
І ось ці - в залежності від того, де ви насправді поклав заяву
цієї цілої змінної,
Ви можете отримати 2 дуже різних видів змінних;
коли він знаходиться поза основним,
це те, що ми називаємо глобальної змінної.
Це виходить за рамки будь-якої з функцій -
це не в межах функції -
а якщо покласти його всередину головного,
хотілося прямо тут, то це називається локальної змінної,
тому що це локальні рамки основної.
І ми поговоримо трохи про те, що відмінності
між 2 типами і чому ви використовуєте різні види змінних,
але зараз,
Ви можете просто зберегти всі локальні змінні,
тому що у нас немає ніякої необхідності для глобальних змінних.
>> Отже, це одна справа прямо там.
Давайте спробуємо запустити цей раз, подивитися, що відбувається.
Виконати, отримати іншу помилку.
Збільшити трохи, що ми отримуємо?
Ми отримуємо цю очікується дужках після зробити / час.
Будь-які ідеї, що відбувається? Ден?
>> Є час, то дужку, а потім -
Я не знаю, якщо вам потрібно перевизначити INT,
але зробити в той час (я <3).
Точно, так.
Ось і виходить, що Ден Абсолютно вірно.
Нам не потрібно, щоб поставити цей тип тут знову.
Ми можемо замість цього убив типу
і просто зробити це.
Добре.
Я масштаб, спробуйте його ще раз.
Подивіться на це, вона працює успішно.
Якщо ми прокрутити донизу, "це тіло" розпечатав 3 рази.
Це дуже солодкий.
Молодці, молодці, хлопці.
Молодці.
Як це відбувається досі?
Гідна темпами?
Добре, прохолодно.
>> Так що, як ми частково повернутися до первісного питання,
Ми - і тепер, якщо ми бачимо різницю,
Ви бачите, що в цьому зроби той час як цикл,
Умова приходить останнім.
Так як комп'ютер зчитує програму
З C програми виконуються вид в цьому послідовному порядку,
де вони в буквальному сенсі почати з першої лінії головного,
, А потім виконати лінію 6, рядок 7, рядок 8, рядок 9,
рядок 10, рядок 11,
усі ці речі в правому верхньому тут
збирається виконати один раз
перш, ніж ми коли-небудь перевірити цю умову, щоб побачити
я чи ні - або вмісту я, швидше -
менше, ніж число 3.
І тільки тоді, коли ми отримаємо на лінії 12,
Зміст я менше 3
ми насправді повернутися назад до лінії 7
, Та був повторити процес,
, А потім ми перевіряємо стан знову і знову і знову.
>> Так що ми можемо протиставити цьому
з - масштабування назад,
Прокрутіть вниз до версії Сема,
ми будемо дивитися на це, трохи змінений так, що це вже не нескінченний цикл -
де, якщо ми збільшити,
ми бачимо, що ця програма виконується,
вона збирається спочатку оголосити Int Я,
встановити зміст я б 0,
а потім він потрапляє в стан у той час як петля першого,
тому в даному випадку, це тіло, цей Е ("привіт") і я + +
навіть не виконуватиме
якщо я насправді менше або дорівнює 2.
Так що, якщо я 3, наприклад,
якщо ми покладемо цьому прямо тут
дорівнює 4 - або я зроблю 3, тому що я сказав 3 -
, А потім запустити його,
він буде будувати, вона буде працювати в повному порядку,
але він не буде насправді роздрукувати небудь,
тому що не змогла це випробування для першого випадку.
Таким чином, в класі, ми якось казали про те, чому ці вчини той час як петлі
це іноді корисно
і чому ми повинні використовувати його, на відміну від циклу.
>> Є - ви, хлопці, є які-небудь пропозиції
, Чому зроби той час як цикл може бути більш корисним?
>> Ну, я думаю, що робити, у той час як петлі, якщо ви хочете користувальницького введення,
тому що таким чином ви можете дозволити їм
покласти щось в один раз, якщо це правильно,
ми можемо перейти до іншої частини програми,
Але якщо це не правильно, то ви продовжуєте запиту користувача
поки ви не покладете праву вхід.
Так, точно - точно,
так роблять, в той час як цикл корисний
тому що, коли запити на введення даних користувачем
тому що ви повинні отримати введення користувача, перш ніж ви дійсно можете це перевірити.
Таким чином, в PSET 1 у PSET 2,
де ви запит на введення даних користувачем багато,
це зручна річ, щоб використовувати
на відміну від простої цикл час.
Якщо ви використовуєте деякий час циклу, ви можете зробити те ж саме -
Ви можете зробити те ж саме з якийсь час циклу
як ви робите з DO-циклу.
Ви просто повинні мати вигляд цього дублікату процесу
де ви отримаєте вхід, а потім почати свій цикл.
Беручи до уваги, зроби той час як цикл, ви просто повинні написати його один раз
і це набагато чистіше.
>> Добре.
Є питання?
Сенс?
>> Повернення 0 - це просто вид кабіни або це -?
Так, так що ми можемо -
Ну, ми розглянемо це трохи більше пізніше
але виявляється, що
це повернення 0, покладемо
В кінці основного весь час -
Ви можете цікаве просто прийняти це як те, що ми робимо
в даний час.
Те, що ми почали говорити з функціями
вид наприкінці минулого тижня, а потім знову на цьому тижні
є те, що функція
має входи, які ці речі в дужках;
ці 2 входи, наші аргументи або параметри,
що вони також називаються до нашої основної функції,
, А потім функція формує вихідний
які ми називаємо значення, що повертається.
І повертається значення у випадку головне, це INT,
це число,
і те, як ви кажете функції: "Ей, це те, що ваші вихідні
буде "З цим словом« повернення »,
це ключове слово, швидше,
і тому основна повертається 0
або головний висновок 0
є стандартним для програм C
тому що повернення 0 з основних засобів, що
"Гей, все виконано з моєю програмою просто відмінно."
Якщо б ми могли поставити щось відмінне від 0,
як 1, наприклад,
який використовується, щоб повідомити, хто запустив цю програму
, Що щось пішло не так.
Так як ми отримуємо більш складний з речами протягом семестру,
якщо ви коли-небудь потребує сказати,
"Ой, ви знаєте, щось пішло не так з цією програмою",
замість того, щоб моя програма аварії, я хочу попередити
бігун з моєї програми, що щось пішло не так,
Ви можете використовувати повернене значення,
як ми його називаємо, це не 0.
>> Таким чином, ми розповімо, що трохи більше
Як тільки ми потрапляємо в функціях.
Такого роду має сенс?
Добре.
Функції є свого роду дивним -
Я думаю, що для людей, які мають багато математики фону,
мова йде трохи легше,
Особливо якщо у вас є трохи більш абстрактним математичним освітою
і ви звикли говорити про функції
і все в такому ж роді.
Але ми постараємося охопити їх
і йти красиво і повільно, як вони приходять.
Крім того, весь цей агдс INT,
символ * ARGV [],
для прямо зараз, Ви також можете прийняти це як плиті котла.
Ми почали охоплювати тих, хто трохи в лекції
коли ми говоримо про аргументів, які отримують перейшла в програмах командного рядка,
але у вашій проблемі множин і ваших програм,
це абсолютно нормально тільки писати недійсним і тримати його проста.
І те, що ця порожнеча означає, що
"Гей, основний не збирається приймати ніяких входів;
це всього лише програма, яку ми збираємося просто запустити.
Ми не збираємося дати йому будь-яку додаткову інформацію
кожен раз, коли ми починаємо його виконання ».
Таким чином, на даний момент, ви можете зробити це;
Ви також можете навіть опустити повернення 0
В кінці вашої програми, і вони будуть працювати нормально,
але я рекомендую просто тримати, що дюйм
Через пару тижнів ми почнемо вид
потягніть кришку трохи і зрозуміти більше про
всі ці різні мало рухомих частин.
>> Добре, тепер давайте поговоримо про нашу друге питання.
Отже, що ж "неоголошений ідентифікатор" зазвичай вказують на
якщо видаваних Clang?
Я думаю, що ми, можливо, бачили, що вже сьогодні.
Може хто-небудь дати резюме, що це значить?
Давайте подивимося, Келлі - один з Kellys.
>> Так що -
Так, те, що робить -
>> Я думаю, коли ви, наприклад, не оголосити змінні, і ви намагаєтеся використовувати його.
Так, точно, точно.
Так що якщо ви коли-небудь бачили цей вихід
коли ви намагаєтеся скомпілювати програму,
як сказав Келлі,
це означає, що ви використовували змінну, що ви не заявляємо,
так що якщо я повернуся в наш простір,
і я роблю щось подібне
Е (
"Привіт% S")
і спробувати заповнити цей% з
з перемінним тому, що я не заявили про будь
і я намагаюся, щоб запустити його,
Ви побачите, що я спускаюся в цій правому нижньому тут:
"Використання неоголошений ідентифікатор 'S'";
це просто означає, що ви не оголосите змінну.
Те ж саме відбувається, якщо
у вас є х, і ви намагаєтеся і зберігати 7 в це
і я не заявляю X.
Я розумію, що ж помилку:
"Використання" х "неоголошений ідентифікатор".
>> Все в порядку,
так шифр Цезаря, не будучи дуже надійною,
Я повідомлю вам, хлопці дивитися цей короткий, начебто розумію, чому,
і, сподіваюся, після виконання завдання на цьому тижні встановлені
де ви насправді писати шифр Цезаря, ви зрозумієте, трохи більше
про те, що значить бути безпечним і небезпечним -
або не безпечно, я думаю, - небезпечний трохи відрізняється.
Інша річ була у нас є ці інші питання тут
Про функції
і те, що функції,
і ми якось говорили про те, що деякий час, коли ми говорили про повернення цінностей;
для когось, хто був читати лекції,
Ви можете резюмувати, хто був до сьогоднішньої лекції?
Добре.
Давайте подивимося, давайте - може хто-небудь сказати нам, які функції?
Келлі?
>> >> Основному те, що ви спиратися на те, що написано в бібліотеці, що це
більш складна там, а потім ви просто написати коротку форму його,
так як ви маєте на увазі, що назад в бібліотеку, використовуючи
все, що довгий код і [нерозбірливо].
Так, точно, а потім ви хочете щось додати до цього?
>> Так, я думаю про нього, як схоже на поняття формули з математики
де ви просто написати формулу, а потім ви можете підключити змінних в
і ось що функція [нерозбірливо].
>> Так, таким чином, ми отримали кілька відповідей тут
, Які одночасно є дійсно хорошим і правильним на.
Там має на увазі код, який був записаний у бібліотеку десь
, Що є більш складною
а потім ви можете спиратися на цей код
і фактично використовувати його, просто пишу короткій формі це -
або, швидше, її назва -
і тоді є також це порівняння з формулою в математиці
або фізики, всі в такому ж роді
де у вас є формула
а потім ви можете підключити
змінних, що формула
, Щоб потім отримати результат формули,
так що ви думаєте про нього, як як квадратне рівняння.
Уявіть, якщо б замість того, щоб дізнатися про
що квадратична формула в математичному класі,
Ви просто була маленька програма калькулятор, який зробив це за вас.
Хто-небудь використанні калькулятор програми в математичні класи в середній школі?
Так, фізика класів?
Де ви можете просто сказати: "Ей, квадратичної формули.
Ці змінні, які я хочу входу.
Тепер дайте мені відповідь ".
Це зразок того, що функція.
Це спосіб для нас
вид запису, як маленькі підпрограми
в межах нашої великої програми
і використовувати його знову і знову
так що ми не повинні скопіювати і вставити код,
ми можемо дати йому різні входи і отримати різні виходи,
це супер зручно
коли ви намагаєтеся писати різні програми в різний час.
>> Так, наприклад, функції, які ми використовуємо знову і знову і знову
протягом усього курсу є Printf.
Printf саме по собі є функцією
і виявляється, що насправді це досить довгий і складний,
противний погляд, функцію запису.
Так само просто, як нам здається,
друкувати речі з на екран,
тому що всі ми тільки що зробили, що на початку розділу сьогодні,
Виявляється, що це насправді, ви знаєте,
хороша пара сотень рядків коду.
Це не те, що я ніколи не хочу писати, звичайно,
але ми отримуємо, щоб використовувати його кожен день, це круто,
таким чином, ми отримаємо поділитися один з одним,
з різними програмами,
так що ми будемо дайвінгу більше в функції;
на даний момент, ми не -
Єдина функція, ми збираємося писати є основною.
Головне сама по собі також функції,
і ви можете бачити він отримав свою продукцію,
його входів, як ми говорили,
і потім його ім'я, що є основним.
Головне це свого роду - це особлива функція є.
У програмі C, там повинен бути основною функцією,
і тому на даний момент, ми вид опущені письмовій
прототип, або декларація, основний.
Ми, враховуючи, що для вас,
і ми тільки що б ви заповните у вигляді заготовок.
>> >> Так що для другого набору проблеми, ми не повинні
написати його у другій функції?
Я не вірю в це.
Я вважаю, що все тут.
Так, так Caesar Cipher,
Вам не потрібно, це не схоже,
і Vigenere, ви не знаєте як,
так - і виявляється, що ви ніколи не насправді потрібно написати
Функція, правильно?
Ви називаєте завжди ставити весь свій код в головному,
і багато програмісти роблять це.
Як ми рухатися далі,
ми починаємо впровадження функцій в якості способу
, Щоб очистити ваш код,
щоб зробити його більш елегантним,
у випадку, якщо у вас є завдання - ніби як коли ми говорили про петлях,
як іноді є речі, які ви хочете зробити знову і знову, і знову,
і у вас є вид наївний спосіб -
або те, що ми часто називаємо «солом'яне опудало» рішення,
це просто скопіюйте та вставте знову і знову -
Ви можете зробити те ж саме з функціями, де ви просто скопіювати і вставити
той же код знову і знову,
але роздуває код -
він закінчує робить код дуже довго -
і це також стає трохи заплутаним,
і це означає, що ви не в змозі любити -
якщо ви хочете використовувати цей код ще раз в іншій програмі,
Ви також застряг копіювання і вставка його знову,
так що одна з речей, ми будемо говорити про те,
вигляд дизайну і стилю вашої програми,
і тому, коли має сенс вид
Пакет щось і поклав його в якості окремої функції,
Ми рекомендуємо вам зробити це,
і це те, що, знову ж таки,
немає жорстких правил.
Ми дуже рідко говоримо, що ви повинні написати функцію з ім'ям цього
але це скоріше одна з тих речей, які ви тільки що з плином часу
як ви пишете більше і більше програм.
>> Є ще питання?
Отже, давайте тепер
Повернутися до цього хлопця прямо тут,
так що я ще в цьому розділі питань.
Ми говорили про всі ці різних,
що функція, тому писати функції,
коли ви можете просто скопіювати і вставити?
Сподіваюся, ми переконали вас, що написання функцій є гарною річчю.
Отже, тепер давайте перейдемо до цієї програми MySpace,
і ми будемо витратити трохи часу робити це.
>> Отже, давайте подивимося,
може я когось читати це для мене?
Давайте Михайла - ви будете читати це для нас?
>> Ти маєш на увазі тому, коли MySpace -
Тому, коли MySpace було прохолодно.
>> "Назад, коли MySpace була прохолодною,
це було останнім писком моди на тип, як це.
Може бути, ще є? Я не зовсім впевнений.
У будь-якому випадку, використовуючи CS50 Appliance,
CS50 Run, або CS50 простору,
написати програму, яка запитує у користувача повідомлення
і потім виводить повідомлення з першою літерою,
з усіма іншими буквами у змінному випадку,
у відповідності зі зразком виходу нижче,
де жирними текст являє собою вхід деяких користувачів.
Для простоти можна вважати, що користувач
буде тільки вхід малі літери та пробіли.
Розглянемо цю проблему можливість на практиці;
Вам не буде запропоновано представити цю програму ".
>> Awesome, спасибі.
Так як Михайла сказали,
Ми збираємося написати програму, яка MySpaces код.
Так само кожен з вас, хлопці використовують MySpace?
Будь-який з вас MySpace рахунку?
Ах, так, так!
Це було досить прохолодно.
[Сміх]
Я знаю.
Знайомства себе.
Отже, що ми намагаємося зробити, це написати програму
, Яка проходить через
і капіталізує перші літери
, А потім кожну літеру після цього -
або будь-якого іншого листа після цього, мені дуже шкода.
>> Так що - і ви можете бачити в даному прикладі,
це те, як ми запустили програму,
і так це просто говорить: "Ми працює програма під назвою a.out.
Вхід, який ми збираємося надавши йому
це буде запропоновано.
Ми не збираємося постачати входу в командному рядку ".
Якщо ви стежили всі лекції
і слух про аргументів командного рядка,
це почасти від того, де ті - що налякані синтаксису
на головній приходить з внутр агдс, всі ці речі,
так що тут ми не використовуємо, що, ми маємо справу не з будь-яким з цього.
Ми просто збираюся отримати цю типізованих в користувачем,
і тоді ця друга лінія з фанки капіталізації
те, що ми хочемо, щоб наші програми на вихід.
>> Таким чином, замість використання приладу або Run, ми будемо використовувати прогалини,
тому що у нас просторах,
і тому, якщо б ви, хлопці,
отримати код, щоб виглядати так,
так що я збираюся зберегти цей перегляд
просто так у тебе на плиті котла тут
, Що виглядає так, Int основних (недійсними), нічого в ній.
Насправді, те, що ми будемо робити це ми будемо просто видалити все, все разом.
Ми хочемо чистого аркуша,
тому що ми не збираємося приступити до написання коду;
Швидше за все, ми будемо намагатися писати деякі псевдокод
який насправді просто означає, що ми збираємося написати те, що не код
такий описує те, що ми хочемо зробити,
ніби як зробив Давид, у перший день лекцій,
або я припускаю, що це був другий день лекції, коли він зробив усе демо шкарпетки.
Ви, хлопці, пам'ятайте, що - бачачи шкарпетки?
Йосип був там вид набравши на англійській мові?
Так що ми збираємось зробити те ж саме.
>> Так що, коли я починаю писати псевдокод,
Я хотів би почати, дивлячись на те, що вхід буде.
І я даю собі зразка випадку,
так як "спасибі за доповнення!"
А потім я також пишу, що я хочу бути вихід,
який в даному випадку щось на зразок цього.
І така дає мені хороший, як, починаючи з місця, щоб думати,
"Добре, я хочу взяти лінію 1
і я хочу, щоб перетворити його в рядку 2 "
і такого роду допомагає направляти моє мислення.
Це гарне місце для початку.
Інший спосіб думати про це, теж, як ми цікаве рухатися далі
і як ви робите це в ваших власних програм, полягає в
думати про ніби як, якими є крайні випадки на це?
Які види дивні сценарії?
Які дивні матеріали, які ми могли б отримати?
І що ці заходи виглядають?
Наприклад, один дивний вхід
б цього,
створення абсолютно нічого,
як те, що ми повинні виводити в такому випадку?
Те, що ми хочемо, щоб думати, теж.
>> Так само, як питання,
що може ми хочемо вихід?
Якщо ми не отримаємо будь-якого входу на все, що повинно бути нашою програми виведення?
>> Нічого.
Нічого? Звучить непогано.
Таким чином, ми хочемо переконатися, що ми не пишемо нічого з
якщо ми нічого не отримуємо дюйма
Cool. Добре.
Так
Я збираюсь подзвонити на пару людей, як ми проходимо
і просто з'ясувати, ніби як, що загальний алгоритм
і ми будемо роду почати працювати через це разом.
>> Отже, давайте подивимося. Міссі.
Як ви думаєте, ми б почати?
Що б бути хорошим місцем, щоб почати тут
якщо ми хочемо перетворити, скажімо, лінія 1
у рядку 2?
Чи можете ви якось просто поясніть мені, англійською мовою, про що ти думаєш?
Навіть не турбуватися про код.
>> Перша річ, яку я хотів би зробити,
вид прямих користувачів, щоб сказати їм, що ви хочете.
Добре, так, скажімо,
"Гей, користувач. Хочу
Рядок "- дивовижний.
Так що давайте це записати.
Підкажіть у користувача рядок.
Це звучить, як хороший старт.
Добре.
Давайте запитаємо у Келлі Ren цей час.
Що б ми тоді хочемо робитимете далі?
Що зразок нашого наступного -
>> Зберіть свій внесок і зберігати його в якості змінної.
Великий.
Так що збирати рядки,
зберігати його в змінної.
Так є щось особливе, ми хочемо зробити тут?
Чи хочемо ми, щоб перевірити їх внесок
раніше -?
>> Да.
Що може ми хочемо, щоб перевірити?
>> Ну, ви сказали, що ми не повинні перевірити, якщо він поруч, вірно?
Тому що будемо вважати, що це рядкова?
Так.
>> Ось і виходить, що - так.
Так GetString гарантовано повертає нам рядок.
Він не збирається повертати число до нас або що-небудь подібне.
Там можуть бути цифри символів в цьому рядку, однак.
І ті, можна знехтувати, як ми робили капіталізації.
Але порожній рядок абсолютно нормально,
так що справа тут, на лінії 4 і 5,
Право, де немає входу,
і ми нічого не поклав, як наш вихід.
Ми не повинні турбуватися про те, щоб переконатися, що є щось в рядок
або що рядка не менше 4 символів;
все в порядку.
Так що це контрастує, наприклад, з подібними програмами гроши, що ви написали
де ви повинні були переконатися, що ви отримуєте невід'ємних чисел;
Ви повинні були переконатися, що ви отримуєте правильне кількість днів у місяці.
А як ви, хлопці, робите?
Як би ви це зробити тест?
Що це вимагається використовувати?
>> Зроби той час як петлі.
Зроби той час як петлі, інші види петель теж, так.
Таким чином, виявляється, що ми не повинні використовувати цикл, в даному випадку,
коли ми запитом рядок, яка є почасти добре.
>> Гаразд, як рухатися далі.
Таким чином, Стелла.
Чи можете Ви розповісти нам трохи про те, що ми повинні робити далі?
Так що тепер у нас є рядок, що у нас є воно зберігається в змінної;
Що ми повинні робити з рядком?
>> Ми повинні -
визначити 2 -
Так, просто сказати, що це англійською мовою, що є дивним.
Визначити >> [нерозбірливо] столиць - або, у верхньому регістрі.
Так, так що вам визначити, які з них є великими і малими літерами.
Ми не можемо верхній або нижній регістр них, поки ми визначили, які саме.
Таким чином, ми покладемо, що в тут.
>> Так що, просто думаючи про це процесі,
як ми робимо це ототожнення?
Чи знаєте ви, Ден?
Вид того, що ми - те, що інструмент, який ми повинні були б використовувати з наших інструментів?
>> Я б поставив його в чомусь, як у масиві або кожну лінію
є його власною маленькою коробці,
, А потім верхній його звідти чи ні.
Отже, один інструмент, ми можемо використовувати масив.
Що ми повинні дивитися на в рядку,
хоча, щоб з'ясувати - у нас було дивитися на символи.
>> Так що у вас є, щоб подивитися на довжину рядка?
Так, таким чином, частина, яка стає довжину рядка.
Просто з цікавості, що ж ми використовуємо, щоб отримати довжину рядка?
>> StrLen?
Так, StrLen, ми називаємо це "StrLen"
Всі ці рядки функції, так StrLen є функцією,
і це супер зручно, тому що ми можемо використовувати його, щоб просто сказати:
Гей, StrLen: Ось рядки, скажіть мені, як довго це.
У сьогоднішньої лекції, Девід багато говорили про те, як StrLen буде реалізований,
те, що насправді відбувається за лаштунками.
Але це одна з найбільш супер зручна них.
Є інші, які також знаходяться в рядку бібліотеку,
таких як STRCMP, яка пишеться "STRCMP»,
який використовується для порівняння рядків один з одним.
Інший ті, які ви будете використовувати, як strstr,
і це добре для знаходження під струни і так далі.
По більшій частині, всі вони починаються з вул а потім йти далі бути щось ще.
Тому вони насправді не записати їх як рядки і т. д.
Тому як ще в перші дні C,
коли люди вперше були письмово і все таке,
у них були обмеження на кількість символів, які можна використовувати
для імен функцій і змінних імена,
таким чином, усі, як супер конденсованих.
Але в будь-який час ви бачите те, що починається з вул
Зазвичай це означає, що це має якесь відношення до рядку.
>> Отже, у вас є, щоб отримати довжину рядка,
а потім, що ми будемо робити з героями?
Чи знаєте ви, Сем?
>> Я поняття не маю, я намагався з'ясувати це.
Я дійсно не знаю, - я хотів було якимось чином -
Я маю на увазі, я думаю, може бути, ми могли б зробити щось з парні і непарні,
Але я не знаю жодної функції, як, що.
Так.
>> Але що - це не обов'язково буде працювати,
тому що тоді ви отримаєте простір, щоб бути -
Ви повинні були б мати місце, щоб отримати поради про те, як -
Добре.
>> Я не знаю - я б втратив у цій точці.
Та - ні, ні, ні, це хороші окуляри.
Отже, що ми повинні зробити, це, як сказав Сем,
ми повинні відслідковувати, які листи є непарними буквами,
і які з них навіть букви.
Але ми хочемо переконатися, що ми не лише шукає
на парні і непарні
Індекси в рядок,
а дивлячись на парних і непарних букв у рядку,
тому ми повинні мати свого роду це розходження між
букв - як те, що насправді A, B, C, D, або так далі,
і те, що речі не є буквами, але як і раніше в наших рядок.
Наприклад, тут, як це знак оклику не є буквою,
але це все ще частина нашої рядків, це як і раніше символ.
Крім того, всі ці простору -
це не має сенсу для своєї вигоди простором, вірно?
Таким чином, ми хочемо переконатися, що ми якимось чином пропустити ті,
в той же час відстеження парні і непарні.
>> Так начебто в нашому програмування інструментів
до цих пір, якщо хочете,
у нас є цілий ряд різних інструментів, які ми вже обговорювали.
Так що, наприклад, є змінними,
як ми вже говорили тут.
Іншим інструментом, ми говорили про функції.
Отже, ми говорили про змінних в нашому псевдокоді тут
як те, що ми збираємося використовувати для зберігання нашу рядок.
Ми говорили про функції, щоб отримати довжину рядка, як StrLen.
Ми говорили про щось інше, і ми говорили про це
на багато вище в розділі Сьогодні: петлі.
>> Що ви, хлопці, думаєте про використання петлі в цій програмі?
Джаред, що ти думаєш?
Чи будемо ми використовувати цикл в цій програмі?
>> Напевно, ні, ні, тому що вам не доведеться пройти через це кілька разів.
Гаразд, ви не повинні пройти через те, що більше одного разу?
>> Увесь рядок.
Право, так що вам не доведеться пройти через весь рядок відразу.
Вибачте, що мало абсолютно ніякого сенсу!
Вам не доведеться пройти через весь рядок кілька разів.
Добре.
Що ви думаєте?
>> Я думаю, що краще їх використовувати
так що ми можемо зробити, як капіталізувати в той час як
розташування це [нерозбірливо] номер.
Великий, і тому вигоди і що?
Отже, ми говоримо, що
Ми повинні використовувати цикл, тому що ми хочемо
великої літери, хоча це не число.
Так що - вибачте, ви хочете додати?
>> Я хочу сказати, що, як ви ставитеся рядком
і це [нерозбірливо] окремі [нерозбірливо] на символи?
Так.
>> І тоді ми можемо присвоїти номери -
або на основі розташування букв у рядку?
Так.
>> А визначити, чи є це парне чи непарне і скористатися сам лист
в той час як розташування лист [нерозбірливо] - вибачте.
Великий.
>> Так що резюме.
Чи можете ви нагадуєте мені вашого імені ще раз - пробачте.
>> Шарлотта.
Шарлотта, все в порядку.
Так що Шарлотта говорить:
який повністю праві - боже, це любить авто відступ на мене -
є те, що якщо ми подивимося на рядок
таких як цей вгорі -
"Спасибі за доповнення", -
у вигляді послідовності символів
де знаходиться в положенні 0,
ч знаходиться в положенні 1.
А на 2, то ми одержали 3, 4, 5;
простір перебуває в положенні 6.
Беручи до уваги, - те, що позиція е?
7!
O? 8.
R? 9.
І тоді у нас 10, а потім я не можу писати без нього
свого роду отримання брудно на екрані.
Але це насправді, як ми можемо говорити про рядках в пам'яті.
Це рядки
являє собою послідовність символів,
і коли ми говоримо про окремих символів в рядку,
Ми часто роблять це, посилаючись на позицію, що персонаж
в рядку,
Ймовірно, так само, як ми говоримо про вересень
дев'ятий місяць року
або в понеділок як перший день тижня.
Таким чином, це дає нам можливість
з'ясувати, які з них є непарними навіть у порівнянні з
тому що ви можете побачити тут,
якщо ми зіставляємо його з цієї T,
Ви можете бачити, що всі ті, капіталізовані
знаходяться на парних позиціях,
принаймні, перше слово,
а потім все стає скинув раз ми потрапили, що простір,
бо ми не вважаємо цей простір як лист,
так що це як якщо б ми почали
і пішли 0, 1, 2, 3, 4, 5,
просторі, 6, 7, 8, простір,
9, а потім 10, 11, 12, і так далі.
>> Cool, так що ми виразно хочемо використовувати якийсь цикл
перейти на кожного з персонажів по черзі.
Таким чином, на даний момент,
ми повернемося до нашим старим псевдокод тут.
В рамках цього визначення, які з них
у верхньому регістрі, а які малими літерами,
ми хочемо зробити це в якійсь цикл.
Loop, товстої кишки.
Які петлі, з видів петель, які у нас є,
здається хорошим, щоб використовувати в цьому випадку?
>> Я думав циклу.
А чому ви думаєте для циклу?
>> Тому що він починається з нуля, а потім
коли ми досягаємо довжини рядка,
, А потім кожної ітерації можна [нерозбірливо], теж?
Так, саме так.
Так, з різних варіантів петель,
у нас є для петель, а петлі, і робити-то час петель.
Де циклу особливо корисно
коли ви хочете знати,
вид, де ви знаходитеся в циклі,
скільки разів цикл був виконаний досі.
Які саме те, що ми хочемо знати, в цій ситуації,
як сказав Келлі,
засновані від ранніх коментарів Шарлотти, що ми хочемо знати положення
символу в рядку,
і цикл дасть нам тільки, що,
тому що, якщо ми почнемо вид озираючись на нашу рядок,
якщо ми почнемо наш цикл на 0,
і йдемо вгору по довжині всього рядка,
Потім можна зіставити букву Т
з 0 в наш цикл,
Лист з H 1 в нашому цикл, і так далі,
пройшовши весь шлях до кінця рядка.
>> Отже, давайте почнемо кодування це просто трохи
тільки так ви, хлопці, відчути, потім це схоже.
Я збираюся зберегти,
таким чином, ми отримали наші псевдо-код тут,
і я хочу видалити все.
Так що у мене чистого аркуша.
Я збираюся почати з написання Int основних (недійсними)
{
Я збираюся поставити повернення 0 в
, А потім}.
Так що зазвичай, коли я починаю програму, це те, що я починаю з.
Я врятую його так, що ви, хлопці, є.
Таким чином, одна з перших речей, про які ми говорили було
отримання вхідних даних від користувача
і зберігати його в рядок.
Як ми можемо отримати введення від користувача?
>> GetString.
GetString, все в порядку.
Так що, якщо я друкую GetString ()
і крапка з комою.
Давайте спробуємо запустити цей, це буде перспективі, в першу чергу?
А чому не буде цього бігти?
>> Ви повинні оголосити змінну.
Я повинен оголосити змінну. Добре.
>> Так як я можу це зробити?
Ви не заперечуєте, щось писав, розділяючи його?
І тоді ми можемо потягніть його вгору.
Давайте подивимося, Ден, право, добре.
Або Данило. Скопіюйте що в Росії, рядок введення = GetString ().
Awesome.
Чи буде це працювати?
Давайте спробуємо.
Влучність перспективі, завантаження вихідного коду, будівництво, сталася помилка.
Добре.
Так, що тут відбувається?
Використання 'рядок' неоголошений ідентифікатор.
>> Ми повинні включити бібліотеки?
Так, так що Ден говорить, що ми повинні включати бібліотеки.
Це те, що ви збираєтеся сказати, Стела? Awesome.
Це приголомшливо, тому Стелла, ти можеш
скопіюйте код з космічного Данила?
Якщо ви натиснете на Daniel Roland Гі, скопіюйте його,
і тоді ви зможете поставити включають лінійний вхід, а потім зберегти його?
Дайте мені знати, коли ви будете готові.
Так що цей синтаксис включає також види фанк;
там все одно, що хеш-тег,
і там включати, і тоді ці кутові дужки.
Ви пам'ятаєте, як це працює, або я повинен покласти його на цей код прямо тут?
>> Я в порядку.
Добре.
>> Я надрукував його - я не був упевнений, якою бібліотекою, однак.
Ну, гаразд - так, так що це CS50 бібліотеки.
>> О, я поклав STDIO бібліотеки.
>> Ах, він отримав - так, Ні, це -
так виходить, що рядок насправді те, що є особливим для CS50.
Там насправді не є істинним типом рядок
, Тому що саме тут, рядок в тип позиції, -
Ми оголошенні змінної називається входом типу рядок -
і ми поміщаємо всередину вхід
значення, яке отримує повернувся до нас: вихід цього GetString виклику функції.
Ви можете сказати, що це виклик функції, тому що у нього є дужки, як Printf робить,
як StrLen робить.
Але рядок насправді не справжня типу
У мові Сі.
Ми зробили це в тип, і ми будемо приймати щось більше, те, що є насправді
У C, тому що є спосіб роботи з рядками;
ми тільки що зробили щось, щоб він виглядав трохи краще.
>> Таким чином, тут ми йдемо.
Ось код Стелли.
Вона отримала # включити .
Інші люди будуть називати це як хеш іноді включати або різке включити.
Тепер ми можемо запустити його, запустити його,
і ми досі отримую повідомлення про помилку.
Давайте подивимося, що відбувається.
"Невикористані змінні" вхід ".
Отже, це круто, це круто.
Я маю на увазі, це не дуже здорово,
тому що ми отримую повідомлення про помилку, і він не працює,
але те, що це говорить, що
ми не використовували наші змінної, яка має сенс.
Ми не намагалися нічого зробити з ним.
Це так, що
Clang намагається допомогти нам упевнитися, що ми не тільки за допомогою змінних
а потім випадково називаючи їх щось ще пізніше в нашому коді,
допомагає нам уникнути помилок, які шляхом.
>> Гаразд, у нас є вхід від користувача,
Ми зберегли його в змінну.
Наступним кроком було те
почати дивитися на всі символи в рядку
і визначення, які з них повинні бути заголовними
і які з них повинні бути в нижньому регістрі.
І, як Келлі і Шарлотта вихований,
Зробимо це за допомогою циклу.
Так хто-небудь пам'ятає синтаксис для циклу
і хотіли б прийняти удар на просто писати
Перший рядок циклу, тільки для біт?
Келлі, ти хочеш спробувати?
>> Да, так що ви повинні ініціалізувати першої,
так що я поклав = 0,
а потім зробив я <StrLen ().
Чи є у вашій Space - я можу витягнути його?
>> Так, я облажався небагато, але так.
>> Добре, давайте потягніть його вгору.
Awesome.
>> Але тоді я не знав, якщо у вас що -
Та, все в порядку.
Отже, от що Келлі отримав: давайте подивимося на це швидко.
Так що вона включена CS50 бібліотеці на самому верху.
Вона включена в стандартну бібліотеку введення-виведення у верхній частині,
і стандартного вводу-виводу має такі функції, як Printf,
так що якщо ви хочете використовувати Printf, потрібно цю лінію.
А потім вона включена рядок бібліотеки,
яких ми будемо потребувати,
тому що рядок бібліотеці StrLen функції,
які ми отримаємо в тільки трохи.
Таким чином, якщо ми подивимося на те, що Келлі зробив тут,
Ви можете йти з нами через що ти зробив?
>> Так, так - я маю на увазі, у мене є помилки, а значить -
Так, Ні, це -
>> Так я хотів назвати рядок, що я отримав тільки "рядок".
Я хотів, щоб роздрукувати рядок
а потім -
Я хотів би хотіла задати рядок як масив кожного символу
бути різними [нерозбірливо], правильно?
І тоді я хотів би почати в позиції 0
, А потім кожні 2 місця,
Я збирався скористатися,
так що я просто описав його як 23, тому що я, дивлячись на таблицю ASCII.
Так ось що я думаю - я знаю, що це не так.
>> Зрозумів, так що це відмінний початок.
Я думаю, що багато рамки в місце тут.
Давайте розглянемо види рядок за рядком і подивитися, що відбувається.
Таким чином, я хотів би зробити це тільки початок скомпілювати код
і дозволити компілятору скажи мені, як те, що сталося з моїм кодом,
тому що компілятор дійсно добре кажу вам, що не так з вашим кодом.
Таким чином, якщо ми граємо, будівництво, і воно не будувати.
Вона каже, що була помилка,
тому, якщо ми прокрутіть вниз і подивіться на першу помилку,
він сказав -
Ми прокрутити назад до самого верху,
ми бачимо, є 5 помилок, що виникають тут внизу.
На жаль, це дійсно відрізали.
Я думаю, що просто не отримаєте нічого кращого.
>> Тут ми йдемо.
Таким чином, існує всього 5 помилок, що генеруються.
Тут я бачу тільки перші 2,
так я можу рухатися до цього трохи, а потім вид прокрутки вгору.
Це команда, яка була запущена щоб скомпілювати коду,
, А потім перша помилка була в file.c прямо тут:
"Очікується визначити чи '('", і саме на цій лінії
де ми сказали String = GetString ().
Ви можете подивитися прямо тут, що це було на рядок 8 file.c,
і тоді я вважаю, що це символ 12 - це помилка.
Так що ж відбувається неправильно в рядку 8 - Келлі?
>> Вам просто потрібно називати це, начебто, лист або щось,
як рядок з або щось?
Так, так виходить, що ці спеціальні імена типу,
так що рядок, Int, Char, короткі,
вони всі спеціальні ключові слова,
і ви не можете використовувати їх як імена ваших змінних,
тому що компілятор дивиться на це і говорить:
"О, я знаю, що це типу"
тому ви не можете насправді є рядок змінної рядки,
як я намагаюся робити тут, це не працюватиме.
Але замість цього, ми можемо назвати це щось подібне з і ї або вул.
Ми також не могли б назвати це Int.
Ми не можемо їсти рядок називається Int.
Ми не можемо їсти рядок називається символ, і ніхто з тих, хто буде працювати.
>> Так що ми просто називаємо це з в даний час.
Awesome.
Так що ж далі відбувається в цьому рядку?
String - ця лінія виглядає досить добре?
Давайте дамо йому ще один шанс, давайте запустити його.
Отже, ми як і раніше отримую помилки.
На цей раз, ми до 4 помилки.
Таким чином, ми отримали одну з них.
Давайте рухатися вгору.
"Несподіваний ім'я типу 'рядок': очікується вираз" так?
>> Да, це тому, що я спробував назвати рядок.
Так, так що, схоже, ми тепер повинні йти виправлення
Всі ці посилання на рядки.
Ви можете бачити, що є посилання на рядок, по одному, по одному тут,
так що ми можемо перемістити всі ці в с.
Великий. Добре, запустіть його знову.
Будівництво - інша помилка.
>> Добре, тепер ми до однієї помилки,
так Int I = S, а потім у квадратних дужках.
Таким чином, ви можете розповісти нам трохи про те, що ви тут робите, Келлі?
>> Да.
Це було на лінії 10.
>> Я не знаю, якщо ми потребували в ньому все,
Але я думаю, що я намагався -
Я врятую його, щоб ви могли стежити разом.
>> Я думаю, що я був
намагався сказати йому, щоб почати в положення 0
На початку мого циклу,
так що я думаю, може бути, казав, було непотрібним.
Так просто Нагадаємо, що
Ви говорили, що це - Ви намагалися почати це в позиції 0
і отримати це - так,
тому я думаю, раніше, теж, коли ви йшли через код,
Ви говорили про те, як ви хотіли лікувати рядок як масив
так що ми можемо отримати доступ кожного персонажа окремо.
Я думаю, що Ден згаданих масивів, теж намагається перетворити рядки в масиви.
>> Виявляється, що вид під капотом,
Рядок насправді зберігається у вигляді масиву вже,
і ви можете звертатися до нього як масив;
немає перетворення, які ви повинні зробити.
Рядок хіба - так -
Рядок насправді не масив,
але Ви можете одержати доступ до нього як такого, оскільки всі символи зберігаються
один прямо поруч один з одним в пам'яті,
так що якщо ви хочете, щоб отримати перший символ рядка,
це те ж саме, як отримати перше число в масив цілих чисел.
Таким чином, ми часто - МИ
відносяться до 2, як
ой, як рядок, як масив,
хоча насправді - вони дуже різні речі,
але ви можете ставитися до них майже так само.
Ось і виходить, що ця лінія насправді -
нам не потрібно робити які-небудь перетворення,
і справді,
це насправді не є допустимим виразом,
що і наш компілятор говорить нам.
Він говорить: "Ей, це очікувалося вираз,
і що я отримав тут є те, що це не слова ".
Щоб оголосити масив,
Все, що вам потрібно зробити, це щось подібне до цього з комою,
а потім ви говорите масиву, як довго ви хочете, щоб він,
такі як 5, так що ця лінія 10
буде оголосити масив називається я з 5 чисел у ньому.
>> Це в сторону, це не є необхідним для коду,
Але це - це зразок того, що заява виглядає.
>> Як би вам не використовувати символ I [StrLen (и)]?
Char я [StrLen (и)]?
>> CHAR I, а потім в дужках, StrLen (и).
Так, так що ми могли -
Ми могли б зробити це,
і це було б оголосити - що б це зробити?
>> Я думаю, було б оголосити масив
з, наприклад, - з -
Ах, вам не потрібна я, - о,
Так, ви напевне не потрібна я.
Ви оголошуєте масив символів
довжини с.
І те, що Сем говорить, що
ця рядок 10 - дозвольте мені деякий простір між ним і рештою таким чином ми можемо ізолювати його -
ця рядок 10 буде оголосити масив
з символів, StrLen (и) коштує від них,
але насправді нам потрібна я,
і з цієї причини ми потребуємо мене, тому що ми повинні дати ім'я масиву;
В іншому випадку ми не мали б спосіб звернутися до масиву пізніше в коді.
>> Так що це прямо тут є ім'я масиву
і всередині довжину.
Це дасть нам масив,
Але це - знову ж таки, ця заява.
Це не призначення, це не ініціалізації.
Якщо оголосити цей масив, як це,
там насправді нічого в вміст масиву.
Це просто сміття - все, що там.
І, як ми вже говорили,
ми насправді навіть не потрібно для цього перетворення,
тому що ми вже можемо розглядати рядок як з масивом.
Я знаю, що ви працюєте трохи довго за часом,
але я хочу дуже-дуже швидко дістатися до цього циклу
і показати вам, як отримати доступ до окремих символів в масиві,
тому що це ключовий для нашого завдання.
І тоді ми дамо вам йти звідти.
>> Так от, у нас є цикл
, Який виглядає майже добре.
Що не зовсім майже немає?
Як там - те, що це не зовсім правильно про це циклі?
>> Немає фігурні дужки?
Ні фігурні дужки, наприклад.
Хочете переконатися, що у нас є тіло циклу у фігурні дужки.
На жаль, не квадратна дужка!
І що наступна річ, котру ми повинні зробити з цієї петлі?
Якщо я намагаюся і запустити його,
Що це помилка, що я отримую?
Я отримую всі ці помилки - у мене є для ініціалізації я.
Великий.
Таким чином, це буде цикл - це не зовсім там,
але це стає дуже близькі.
Цей код ми можемо запускати,
будувати, помилка все одно виникає.
Чому він досі скаржиться,
кажучи вираз не використовується,
і це тому, що ця лінія не робити нічого.
Ми не зберігати його в будь-якому місці, ми не зберегти результат.
Де ми повинні бути збереження цього результату?
>> S або я?
Абсолютно вірно, і це фанк синтаксису,
це з з квадратними дужками
означає, що доступ до I-ий символ с.
Це буде щось, що дійсно важливо для виконання завдання.
На жаль, ми збираємося, щоб зупинятися на досягнутому,
так що Себастьян розділі можна прийти,
але я щасливий залишитися після зовні, так і буде вживати ніяких питань.
Так що спасибі вам, хлопці, що прийшли.
Це повинно тепер завантажувати, створювати, запускати.
Ми можемо ввести рядок на зразок "привіт"
і це виводить "QOX".
[Сміх]
>> Так що не зовсім там, але переміщення, отримання на тих петель!
Спасибі, що прийшли, і я буду зовні.