1 00:00:07,590 --> 00:00:09,920 [Powered by Google Translate] David J. Малан: Все правильно, це CS50 і це 2 00:00:09,920 --> 00:00:15,250 кінця тижня 1, так картами дослідження знаходяться, і загальне число 3 00:00:15,250 --> 00:00:18,640 однокласникам, що у вас в цьому році 745. 4 00:00:18,640 --> 00:00:20,920 І ми так раді мати настільки багато хто з вас у ході 5 00:00:20,920 --> 00:00:23,680 в цьому семестрі, але навіть якщо це звичайно так велика, 6 00:00:23,680 --> 00:00:26,090 розумію, що це такі речі, як обід п'ятниці, як 7 00:00:26,090 --> 00:00:29,020 робочий час, 15-віч розділів, і так далі, що 8 00:00:29,020 --> 00:00:30,590 насправді призначені для створення цього більш інтимним 9 00:00:30,590 --> 00:00:31,140 навколишнього середовища. 10 00:00:31,140 --> 00:00:34,070 Так що, хоча ми можемо збирати один або два рази на тиждень, тут, в 11 00:00:34,070 --> 00:00:36,420 Сандерс, знаю, що у вас багато досвіду в цьому курсі 12 00:00:36,420 --> 00:00:39,330 буде дуже сильно бути практичним разом на ваших однокласників 13 00:00:39,330 --> 00:00:40,730 і викладацького складу. 14 00:00:40,730 --> 00:00:43,960 >> Тому тут ми йдемо, осінь 2012 року. 15 00:00:43,960 --> 00:00:47,530 Так Нагадаємо, що минулого разу ми закінчили на ноті 16 00:00:47,530 --> 00:00:50,460 неточність, говорячи про представлення чисел. 17 00:00:50,460 --> 00:00:52,950 І ми подивилися на одному з невдач, які сталися в 18 00:00:52,950 --> 00:00:54,920 реальний світ, коли він прийшов до непорозуміння 19 00:00:54,920 --> 00:00:55,890 як працюють комп'ютери. 20 00:00:55,890 --> 00:00:58,590 Що ж, сьогодні ми знову одна з тих ідей, 21 00:00:58,590 --> 00:01:01,410 а також продовжити наше обговорення CS50 клієнта 22 00:01:01,410 --> 00:01:04,090 і С і що це означає насправді в програмі. 23 00:01:04,090 --> 00:01:06,430 Але, по-перше, тільки кілька оголошень вихор. 24 00:01:06,430 --> 00:01:08,930 >> Розділи починаються в це неділю, і в перший тиждень завжди 25 00:01:08,930 --> 00:01:11,030 Трохи швидкий старт, тому що ми просто потрапили в 26 00:01:11,030 --> 00:01:12,620 Ваші форми перерізу. 27 00:01:12,620 --> 00:01:14,450 Ми робимо те ж, тепер, з вченням хлопці, тепер 28 00:01:14,450 --> 00:01:16,410 що вони знають свій розклад, тому ми прагнемо, по 29 00:01:16,410 --> 00:01:19,380 У суботу вранці, щоб стежити за вас з вашим розділі 30 00:01:19,380 --> 00:01:20,760 призначення і TF. 31 00:01:20,760 --> 00:01:22,770 Зрозумійте, що вони почнуть наступний день, в неділю 32 00:01:22,770 --> 00:01:24,510 або в понеділок чи у вівторок. 33 00:01:24,510 --> 00:01:27,730 І тоді ми будемо розмістити розділі зміни в міру їх виникнення 34 00:01:27,730 --> 00:01:28,690 У дні. 35 00:01:28,690 --> 00:01:31,590 Годинник, тим часом, знову сьогодні, 8 години вечора до 11, в 36 00:01:31,590 --> 00:01:33,740 Annenberg, а також завтра ввечері. 37 00:01:33,740 --> 00:01:36,150 Навіть незважаючи на проблеми набори, як правило, через, по четвергах 38 00:01:36,150 --> 00:01:39,020 опівдні, розумію, у вас є до п'яти кінця днів, щоб витратити, 39 00:01:39,020 --> 00:01:42,430 отже, наявність робочих годин, по четвергах, якщо 40 00:01:42,430 --> 00:01:45,930 Вам готівкові гроші в одному з цих пізніх днів, і, таким чином, являє 41 00:01:45,930 --> 00:01:47,070 щось на п'ятницю. 42 00:01:47,070 --> 00:01:50,850 Дозвольте мені припустити, що до подряпин є одним з найбільш весело, серед 43 00:01:50,850 --> 00:01:52,390 більш низький ключ безлічі проблем. 44 00:01:52,390 --> 00:01:55,160 І я б повісити на тих, хто пізно днів, стратегічно, просто 45 00:01:55,160 --> 00:01:57,380 для пізніше в семестр, коли життя починає заважати 46 00:01:57,380 --> 00:01:59,470 з проміжних виборах та інших класів. 47 00:01:59,470 --> 00:02:01,580 Проблема Set 1, тим часом, будуть розміщені на курси 48 00:02:01,580 --> 00:02:06,080 сайт в цю п'ятницю, як буде на прогулянці курсу 49 00:02:06,080 --> 00:02:08,789 за допомогою відео, яке буде знято в 2:30 вечора в п'ятницю 50 00:02:08,789 --> 00:02:11,890 , А потім розміщені в Інтернеті на наступний день. 51 00:02:11,890 --> 00:02:13,880 >> Таким чином, ми закінчили в понеділок. 52 00:02:13,880 --> 00:02:15,450 Я хочу - насправді, один Відзначимо тут. 53 00:02:15,450 --> 00:02:18,870 Оскільки класи - тому що Сандерс точно не надають 54 00:02:18,870 --> 00:02:22,220 себе випадкові Q & взад і вперед страшенно добре, ми 55 00:02:22,220 --> 00:02:24,030 збираюся спробувати щось нове в цьому році, в результаті чого 56 00:02:24,030 --> 00:02:26,160 якщо вас не влаштовує піднімаючи руку, або ви просто 57 00:02:26,160 --> 00:02:28,800 не хотів би підняти руку в кімнату, як це, 58 00:02:28,800 --> 00:02:30,710 ми будемо мати деякі вчення стипендіатів та сертифікації 59 00:02:30,710 --> 00:02:33,260 комплектуванню cs50.net/discuss під час лекції. 60 00:02:33,260 --> 00:02:35,440 Так що якщо у вас є питання, тому що я був повністю 61 00:02:35,440 --> 00:02:37,510 неясні про щось або вам цікаво, деякі 62 00:02:37,510 --> 00:02:39,640 Тема, спробуйте відправити його туди. 63 00:02:39,640 --> 00:02:42,670 Відзначити це з міткою лекція, і ми зробимо все можливе, 64 00:02:42,670 --> 00:02:45,430 сьогодні і на наступному тижні - МИ спробувати це - в полі, 65 00:02:45,430 --> 00:02:47,990 в електронному вигляді, через Інтернет або, якщо він відчуває, що ми повинні 66 00:02:47,990 --> 00:02:50,430 насправді її вирішення в масовому порядку, один з хлопців навчання або 67 00:02:50,430 --> 00:02:52,080 ЦС буде підняти руку і запитати 68 00:02:52,080 --> 00:02:53,480 анонімно від вашого імені. 69 00:02:53,480 --> 00:02:55,650 Таким чином, ми дамо цьому спробу і подивитися, як це працює. 70 00:02:55,650 --> 00:02:58,540 Але, в будь-якому випадку, продовжувати піднімати руки, як би вам хотілося. 71 00:02:58,540 --> 00:03:11,420 >> Таким чином, в минулий раз ми показали, що 10% або одну десяту не є, 72 00:03:11,420 --> 00:03:13,840 Фактично, 0,1, як вас вчили багато років тому. 73 00:03:13,840 --> 00:03:15,390 Це насправді значення, як це. 74 00:03:15,390 --> 00:03:16,970 Але це не зовсім вірно, вірно? 75 00:03:16,970 --> 00:03:19,585 Ми просто повинні це обмеження на комп'ютерах яких, якщо Ви 76 00:03:19,585 --> 00:03:22,450 є тільки кінцеве кількість пам'яті, RAM, або більш 77 00:03:22,450 --> 00:03:25,220 спеціально біт, а є тільки кінцеве число 78 00:03:25,220 --> 00:03:26,980 речей, які ви можете представляти. 79 00:03:26,980 --> 00:03:29,780 Наприклад, якщо у нас є нуль, і ми хочемо, щоб 80 00:03:29,780 --> 00:03:32,790 представляють в двійковій, за допомогою восьми біт, де небагато, 81 00:03:32,790 --> 00:03:34,710 Знову ж таки, це нуль або один, ми могли б 82 00:03:34,710 --> 00:03:39,240 Представимо його у вигляді 00000000. 83 00:03:39,240 --> 00:03:41,160 І це трохи зайве багатослівним. 84 00:03:41,160 --> 00:03:43,700 Так само, як в десятковій системі в реальному світі, 85 00:03:43,700 --> 00:03:47,040 Взагалі, якщо ви хочете написати номер 123, ми 86 00:03:47,040 --> 00:03:52,240 люди, ймовірно, не пишіть 00000123 незважаючи на те, 87 00:03:52,240 --> 00:03:53,940 функціонально, це точно такий же номер. 88 00:03:53,940 --> 00:03:56,580 Ми тільки що падіння провідних нулів, так би мовити. 89 00:03:56,580 --> 00:03:58,270 >> У двійковій, що ми можемо зробити те ж саме. 90 00:03:58,270 --> 00:04:01,440 Подвійні і нуль, нуль і бінарні просто нуль. 91 00:04:01,440 --> 00:04:02,870 Вам потрібно всього лише один біт. 92 00:04:02,870 --> 00:04:05,020 Але, знову ж таки, найбільш поширеною одиницею виміру в світі 93 00:04:05,020 --> 00:04:07,820 обчислювальні є байт, вісім біт. 94 00:04:07,820 --> 00:04:09,720 Просто тому, що один біт, досить марно. 95 00:04:09,720 --> 00:04:12,020 Вісім біт, не дуже корисно, але принаймні це більш 96 00:04:12,020 --> 00:04:14,280 корисніше, ніж одна одиниця виміру. 97 00:04:14,280 --> 00:04:17,100 Таким чином, з вісьма бітами, ми зазвичай являють собою бінарні. 98 00:04:17,100 --> 00:04:20,459 Таким чином, тут ми маємо цифри нуль, один, два, а потім, як 99 00:04:20,459 --> 00:04:24,200 Нейт зробив у нашому відео в минулу середу, ми можемо продовжувати 100 00:04:24,200 --> 00:04:25,940 рахувати до семи, до восьми. 101 00:04:25,940 --> 00:04:27,860 І потім, якщо ми використовуємо все більше і більше бітів, ми 102 00:04:27,860 --> 00:04:29,880 може рахувати до нескінченності. 103 00:04:29,880 --> 00:04:32,800 Але якщо у вас є тільки кінцеве число цих бітів, як 104 00:04:32,800 --> 00:04:35,030 справа в будь комп'ютерній системі, або навіть ракети 105 00:04:35,030 --> 00:04:36,670 Система, ну, дійсно, у вас є тільки 106 00:04:36,670 --> 00:04:37,900 кінцеве кількість точності. 107 00:04:37,900 --> 00:04:41,290 Тому якщо ви хочете, щоб представити число як 0,1, так, 108 00:04:41,290 --> 00:04:43,410 Комп'ютер повинен вибирати. 109 00:04:43,410 --> 00:04:45,970 І якщо він має тільки кінцеве число чисел воно може 110 00:04:45,970 --> 00:04:50,490 уявляєте, він може наблизитися до 0,1 для вас, але воно не може 111 00:04:50,490 --> 00:04:53,730 обов'язково дасть вам саме те, значення, яке ви хочете. 112 00:04:53,730 --> 00:04:55,660 І це тільки одна з проблем, комп'ютери, 113 00:04:55,660 --> 00:04:57,090 під капотом, на щастя. 114 00:04:57,090 --> 00:04:59,110 >> Оскільки ми рухаємося далі в семестр, ці низькому рівні 115 00:04:59,110 --> 00:05:02,310 Детальніше стали набагато менш цікаво, але, звичайно, 116 00:05:02,310 --> 00:05:05,700 Застосування цих ідей може бути дуже реальним світом 117 00:05:05,700 --> 00:05:06,760 наслідків. 118 00:05:06,760 --> 00:05:08,190 Одним з них є трохи веселощів. 119 00:05:08,190 --> 00:05:12,150 Як багато хто з вас бачили дивовижні Офісна площа фільм? 120 00:05:12,150 --> 00:05:13,620 Якщо у вас немає, це ваше неофіційними 121 00:05:13,620 --> 00:05:14,370 домашнє завдання на тиждень. 122 00:05:14,370 --> 00:05:16,730 Але в офісні приміщення, хлопці в цьому фільмі беруть 123 00:05:16,730 --> 00:05:19,900 Перевага саме цю ідею, але вони насправді вкрали 124 00:05:19,900 --> 00:05:21,270 з іншого фільму, який ви могли б мати 125 00:05:21,270 --> 00:05:22,760 видно, навіть попередніх років. 126 00:05:22,760 --> 00:05:24,920 Отже, дозвольте мені дати вам кілька секунд цей трейлер з 127 00:05:24,920 --> 00:05:27,470 цей дивовижний фільм, і це дуже багато 128 00:05:27,470 --> 00:05:28,340 академічно актуальна. 129 00:05:28,340 --> 00:05:30,310 >> [ГРАЄ ВІДЕО] 130 00:05:30,310 --> 00:05:32,240 Насправді я заохочується. 131 00:05:32,240 --> 00:05:33,360 Я можу запрограмувати вірус, який буде рип, що 132 00:05:33,360 --> 00:05:34,460 місце у великого часу. 133 00:05:34,460 --> 00:05:35,770 Ну, і як це працює? 134 00:05:35,770 --> 00:05:37,836 Кожного разу, коли є угода, при якій банк інтерес 135 00:05:37,836 --> 00:05:40,154 комп'ютерної, є тисячі в день, комп'ютер закінчується 136 00:05:40,154 --> 00:05:41,040 з цими частками відсотка. 137 00:05:41,040 --> 00:05:43,050 Але я не збираюся робити нічого протизаконного. 138 00:05:43,050 --> 00:05:46,730 Незаконні? Самір, це Америка. 139 00:05:46,730 --> 00:05:48,010 Ви повинні поклястися перед Богом. 140 00:05:48,010 --> 00:05:51,870 Якщо ніхто не знає про це, але нас все в порядку? Немає сім'ї, немає 141 00:05:51,870 --> 00:05:52,490 подруг, ніхто. 142 00:05:52,490 --> 00:05:53,882 [Нерозбірливо]. 143 00:05:53,882 --> 00:05:57,594 Не хвилюйся, старий, я нікому не скажу теж. 144 00:05:57,594 --> 00:05:59,680 [Фільм закінчується] 145 00:05:59,680 --> 00:06:01,900 >> Гаразд, може бути, я знайшов цей фільм краще, ніж більшість 146 00:06:01,900 --> 00:06:05,530 Люди тут, але в будь-якому випадку, вірус, що вони були 147 00:06:05,530 --> 00:06:06,400 намагаються створити - 148 00:06:06,400 --> 00:06:08,410 і в кіно, в будь-який час вони назвали б щось вірус, 149 00:06:08,410 --> 00:06:09,770 це взагалі насправді не вірус. 150 00:06:09,770 --> 00:06:11,600 Це просто програма, хтось написав щось робити. 151 00:06:11,600 --> 00:06:13,800 І в цьому випадку, хлопці намагалися написати програму 152 00:06:13,800 --> 00:06:16,610 , Які скористалися їх компанію під назвою Innotech в 153 00:06:16,610 --> 00:06:19,740 обчислювальної системи, в якій комп'ютери теж, навіть якщо вона 154 00:06:19,740 --> 00:06:21,350 Що стосується грошей, може не обов'язково 155 00:06:21,350 --> 00:06:23,490 представляють грошей точно. 156 00:06:23,490 --> 00:06:27,630 Тому, навіть якщо вам доведеться $ 0,10 на ваш банківський рахунок, 157 00:06:27,630 --> 00:06:31,060 0.10, а, комп'ютер може насправді думаєте, що у вас є 158 00:06:31,060 --> 00:06:33,560 це багато центів на ваш банківський рахунок. 159 00:06:33,560 --> 00:06:35,750 І те, що ці хлопці прагнуть робити - і вони 160 00:06:35,750 --> 00:06:38,240 вкрали ідею, виявляється, від Superman III, де 161 00:06:38,240 --> 00:06:41,210 Річард Прайор зробив те ж саме - вони були по суті 162 00:06:41,210 --> 00:06:44,880 написання програм, які прагнуть взяти все заднього 163 00:06:44,880 --> 00:06:46,930 номери, всі маленькі, крихітні, крихітні частки 164 00:06:46,930 --> 00:06:50,160 пенні, і сіфонірованія тих, у так, що люди просто 165 00:06:50,160 --> 00:06:52,620 Думка, про, це всього лише $ 0,10 є, але всі ці 166 00:06:52,620 --> 00:06:54,410 задній номер в кінцевому підсумку складаються. 167 00:06:54,410 --> 00:06:57,490 Таким чином, чудова ідея, і вона мала неприємні наслідки весело в тому, що 168 00:06:57,490 --> 00:06:58,250 конкретного фільму. 169 00:06:58,250 --> 00:07:01,800 >> Але в реальному світі теж є набагато більше, що стосуються 170 00:07:01,800 --> 00:07:03,190 Наслідки такого роду речі. 171 00:07:03,190 --> 00:07:05,450 І одна з причин, щоб зануритися в області комп'ютерної 172 00:07:05,450 --> 00:07:07,620 наука, знову ж таки, її застосовні не 173 00:07:07,620 --> 00:07:09,740 інженерні науки в поодинці, але тільки 174 00:07:09,740 --> 00:07:10,650 інших областях. 175 00:07:10,650 --> 00:07:14,760 Так що це менш безтурботний погляд на те, що може піти не так, але 176 00:07:14,760 --> 00:07:17,630 Це також досить очей відкриття, я думаю, коли справа доходить до 177 00:07:17,630 --> 00:07:20,760 розуміння, як саме всюдисуща технологій, таких як 178 00:07:20,760 --> 00:07:22,870 комп'ютерах та програмуванні або в ці дні, 179 00:07:22,870 --> 00:07:23,930 у вигляді програмного забезпечення. 180 00:07:23,930 --> 00:07:26,500 Так що наступний кліп всього лише близько шести хвилин, триває 181 00:07:26,500 --> 00:07:30,320 , Де ми зупинилися минулого разу, але дозволяє нам виглядати трохи 182 00:07:30,320 --> 00:07:33,370 більш докладно на одній з таких ці питання. 183 00:07:33,370 --> 00:07:35,270 Дозвольте мені перейти до де ми зупинилися, 184 00:07:35,270 --> 00:07:37,780 який був прямо тут. 185 00:07:37,780 --> 00:07:41,580 І у нас є друга частина два, протягом приблизно шести хвилин тут. 186 00:07:41,580 --> 00:07:41,980 >> [Дивитися ВІДЕО] 187 00:07:41,980 --> 00:07:45,430 Чумної сучасної ракетної техніки. 188 00:07:45,430 --> 00:07:49,280 У 1991 році, з початком першої війни в Перській затоці, Patriot 189 00:07:49,280 --> 00:07:51,350 випробував ракету подібного роду 190 00:07:51,350 --> 00:07:52,645 Проблема номер перетворення. 191 00:07:52,645 --> 00:07:57,460 І в результаті, 20 осіб, 20 американських солдатів, були вбиті 192 00:07:57,460 --> 00:08:01,130 і близько 100 поранені, коли Patriot, яка повинна була 193 00:08:01,130 --> 00:08:03,400 для захисту від вхідних Скадів, 194 00:08:03,400 --> 00:08:06,020 не змогли стріляти ракетами. 195 00:08:06,020 --> 00:08:09,350 >> Коли Ірак вторгся в Кувейт і Америки почали пустелі 196 00:08:09,350 --> 00:08:13,530 Буря на початку 1991 року, батареї Patriot ракети були 197 00:08:13,530 --> 00:08:16,970 розгорнута для захисту Саудівської Аравії та Ізраїлю від іракських 198 00:08:16,970 --> 00:08:19,810 Напади Скад ракети. 199 00:08:19,810 --> 00:08:23,740 Patriot є американської середньої дальності земля-повітря системи, 200 00:08:23,740 --> 00:08:26,370 виробництва компанії Raytheon. 201 00:08:26,370 --> 00:08:30,860 Розмір перехоплювачів Patriot себе, а про 202 00:08:30,860 --> 00:08:35,650 приблизно 20 метрів в довжину і важить близько 2000 фунтів. 203 00:08:35,650 --> 00:08:38,809 І вона несе боєголовку приблизно - Я думаю, що це грубо 204 00:08:38,809 --> 00:08:40,169 150 фунтів. 205 00:08:40,169 --> 00:08:45,820 І боєголовки найвищою вибухова речовина, яка має 206 00:08:45,820 --> 00:08:48,120 Фрагменти навколо нього. 207 00:08:48,120 --> 00:08:51,870 Корпус боєголовки призначений діяти, як картеч. 208 00:08:51,870 --> 00:08:54,920 Ракет проводяться чотири рази на контейнер і 209 00:08:54,920 --> 00:08:57,850 транспортується напівпричепом. 210 00:08:57,850 --> 00:09:02,940 >> Patriot системи ПРО сходить принаймні до 211 00:09:02,940 --> 00:09:05,530 20 років. 212 00:09:05,530 --> 00:09:09,150 Він був спочатку розроблений як ракети ППО 213 00:09:09,150 --> 00:09:12,920 збивати ворожі літаки, в першій війні в Перській затоці. 214 00:09:12,920 --> 00:09:17,700 При тому, що війна прийшли разом, армія хотіла використати його, щоб стріляти 215 00:09:17,700 --> 00:09:19,880 Скад вниз, а не літаки. 216 00:09:19,880 --> 00:09:24,860 Air іракських сил було не так багато проблем, але армія 217 00:09:24,860 --> 00:09:27,260 турбувався про Скад. 218 00:09:27,260 --> 00:09:30,810 І таким чином вони намагалися оновити Patriot. 219 00:09:30,810 --> 00:09:33,770 Перехоплення ракети ворога подорож на MACH 5 збираюся 220 00:09:33,770 --> 00:09:35,790 бути досить складним завданням. 221 00:09:35,790 --> 00:09:39,460 Але коли Patriot була доставлена ​​в експлуатацію, армія 222 00:09:39,460 --> 00:09:43,730 не було відомо про іракським модифікації, які зробили їх 223 00:09:43,730 --> 00:09:46,510 Бокоплавов майже неможливо потрапити. 224 00:09:46,510 --> 00:09:50,040 >> Справа в тому, Скад, які були 225 00:09:50,040 --> 00:09:51,360 У найближчі була нестійкою. 226 00:09:51,360 --> 00:09:52,266 Вони були биття. 227 00:09:52,266 --> 00:09:56,300 Причиною цього було іракців, для того щоб отримати 600 228 00:09:56,300 --> 00:10:00,650 кілометрів з 300 км дальність польоту ракети, взяв 229 00:10:00,650 --> 00:10:02,423 Вага з передньої бойовою частиною і 230 00:10:02,423 --> 00:10:03,990 зробив боєголовки легше. 231 00:10:03,990 --> 00:10:08,700 Так що тепер Patriot намагається прийти в Scud, і більшість з 232 00:10:08,700 --> 00:10:11,192 Час, в переважній більшості випадків, це було б 233 00:10:11,192 --> 00:10:13,450 просто літають по вітру. 234 00:10:13,450 --> 00:10:16,300 Після того, оператори Patriot Система реалізована Patriot 235 00:10:16,300 --> 00:10:20,160 пропустив свою мету, вони підірвали Patriot боєголовки. 236 00:10:20,160 --> 00:10:22,760 Щоб уникнути можливих жертв, було дозволено 237 00:10:22,760 --> 00:10:25,100 падати на землю. 238 00:10:25,100 --> 00:10:29,400 Це було те, що більшість людей бачили, як великі вогняні кулі в небі, 239 00:10:29,400 --> 00:10:34,930 і не зрозумів, як перехоплення боєголовок Scud. 240 00:10:34,930 --> 00:10:37,490 >> Хоча, в нічному небі, патріоти, здавалося, 241 00:10:37,490 --> 00:10:41,570 успішно знищила Скадів, в Dhahran, не може бути 242 00:10:41,570 --> 00:10:43,730 помилка про свою діяльність. 243 00:10:43,730 --> 00:10:46,370 Там, радіолокаційна система Патріот втратив 244 00:10:46,370 --> 00:10:50,090 входять Scud і ніколи не запущена через 245 00:10:50,090 --> 00:10:51,340 з програмним забезпеченням недолік. 246 00:10:54,030 --> 00:10:57,050 Це були ізраїльтяни, які вперше виявили, що чим довше 247 00:10:57,050 --> 00:11:02,000 Система була, тим більше часу розбіжності стали, 248 00:11:02,000 --> 00:11:05,530 у зв'язку з тактовою вбудований в комп'ютер системи. 249 00:11:05,530 --> 00:11:09,060 Близько двох тижнів до трагедії в Dhahran, 250 00:11:09,060 --> 00:11:11,730 Ізраїльтяни повідомили в міністерстві оборони, що 251 00:11:11,730 --> 00:11:13,250 Система втрачав часу. 252 00:11:13,250 --> 00:11:15,610 Після того, близько восьмої години роботи, вони помітили, що 253 00:11:15,610 --> 00:11:18,330 Система стає помітно менш точним. 254 00:11:18,330 --> 00:11:20,910 Міністерство оборони відповів, сказавши все 255 00:11:20,910 --> 00:11:23,710 Patriot батареї, щоб не залишити систем 256 00:11:23,710 --> 00:11:25,450 протягом довгого часу. 257 00:11:25,450 --> 00:11:28,010 Вони ніколи не говорили, що довгий час було - 8:00, 10 258 00:11:28,010 --> 00:11:29,690 годин, 1000 годин. 259 00:11:29,690 --> 00:11:31,940 Ніхто не знав. 260 00:11:31,940 --> 00:11:35,020 >> Patriot батарей, розміщених у казармах в Dhahran 261 00:11:35,020 --> 00:11:39,030 і її недоліки внутрішні годинники були на більш ніж 100 годин 262 00:11:39,030 --> 00:11:42,240 У ніч на 25 лютого. 263 00:11:42,240 --> 00:11:46,580 Це гусеничні час з точністю близько однієї десятої частки секунди. 264 00:11:46,580 --> 00:11:48,830 Тепер десята частина друга цікава число, тому що 265 00:11:48,830 --> 00:11:52,660 вона не може бути виражена в двійковому, точно, це означає, 266 00:11:52,660 --> 00:11:54,940 воно не може бути виражене саме в будь-яких 267 00:11:54,940 --> 00:11:57,330 сучасний цифровий комп'ютер. 268 00:11:57,330 --> 00:11:59,130 Важко в це повірити. 269 00:11:59,130 --> 00:12:01,720 Але використовувати це як приклад. 270 00:12:01,720 --> 00:12:04,090 >> Давайте кількість одну третину. 271 00:12:04,090 --> 00:12:07,950 Одна третина не можуть бути виражені в десятковому, точно. 272 00:12:07,950 --> 00:12:12,710 Третина 0,333 триває нескінченно. 273 00:12:12,710 --> 00:12:17,050 Там немає способу зробити це з абсолютною точністю в десятковій системі. 274 00:12:17,050 --> 00:12:19,340 Ось точно такі ж завдання, що відбулося в 275 00:12:19,340 --> 00:12:20,190 Patriot. 276 00:12:20,190 --> 00:12:24,680 Чим довше система працювала, тим гірше помилку часу стали. 277 00:12:24,680 --> 00:12:28,640 Після 100 годин роботи, помилки в часі тільки 278 00:12:28,640 --> 00:12:29,870 близько однієї третини секунди. 279 00:12:29,870 --> 00:12:34,790 Але з точки зору орієнтації ракети подорож на MACH 5, 280 00:12:34,790 --> 00:12:39,140 це призвело помилки стеження більше 600 метрів. 281 00:12:39,140 --> 00:12:42,510 Було б фатальною помилкою для солдатів на Dhahran. 282 00:12:42,510 --> 00:12:48,680 >> Справа в тому, запуск Scud був виявлений раннього попередження 283 00:12:48,680 --> 00:12:52,440 супутників, і вони знали, що Скад йшов в їх 284 00:12:52,440 --> 00:12:53,350 загальний напрямок. 285 00:12:53,350 --> 00:12:55,470 Вони не знали, де він йшов. 286 00:12:55,470 --> 00:12:58,210 Це було тепер до радара компонент Patriot 287 00:12:58,210 --> 00:13:01,920 Система, захищаючи Dhahran, щоб знайти і відстежувати 288 00:13:01,920 --> 00:13:03,700 наближається ракети противника. 289 00:13:03,700 --> 00:13:05,390 Радар був дуже розумним. 290 00:13:05,390 --> 00:13:07,570 Ви б насправді відстежувати положення Scud, а потім 291 00:13:07,570 --> 00:13:10,340 передбачити, де він, імовірно, буде в наступний раз 292 00:13:10,340 --> 00:13:12,040 радар направив імпульсний вихід. 293 00:13:12,040 --> 00:13:13,730 Це називається діапазон воріт. 294 00:13:13,730 --> 00:13:18,820 Потім, коли Patriot вирішує, пройшло вже достатньо часу, щоб піти 295 00:13:18,820 --> 00:13:22,600 назад і перевірити наступну локацію для цього виявлених 296 00:13:22,600 --> 00:13:24,190 Об'єкт, воно сходить. 297 00:13:24,190 --> 00:13:27,940 Тому, коли він повернувся в неправильному місці, то не бачить 298 00:13:27,940 --> 00:13:31,000 заперечувати, і він вирішить, що не було ніякого об'єкта. 299 00:13:31,000 --> 00:13:34,370 Це було помилкове виявлення і падає трасі. 300 00:13:34,370 --> 00:13:37,630 >> Вхідний Скад зникла з екрана радара. 301 00:13:37,630 --> 00:13:41,300 І секунди потому, він врізався в казарми. Scud 302 00:13:41,300 --> 00:13:44,730 загинули 28 і був останнім, хто звільнений протягом 303 00:13:44,730 --> 00:13:46,450 час першої війни в Перській затоці. 304 00:13:46,450 --> 00:13:50,570 До нещастя, оновлене програмне забезпечення прибув в Dhahran 305 00:13:50,570 --> 00:13:52,060 на наступний день. 306 00:13:52,060 --> 00:13:56,210 А недолік програмного забезпечення були встановлені, закриваючи одну главу в 307 00:13:56,210 --> 00:13:58,370 неспокійної історії Patriot ракети. 308 00:14:01,790 --> 00:14:04,990 PATRIOT насправді абревіатура від "Поетапне відстеження масиву 309 00:14:04,990 --> 00:14:08,516 Перехоплення мети. " 310 00:14:08,516 --> 00:14:13,390 >> Гаразд, набагато більш сумний результат не зовсім 311 00:14:13,390 --> 00:14:14,430 розуміння цього світу. 312 00:14:14,430 --> 00:14:18,180 І їжа на будинок, дійсно, з фільму в тому, що рішення 313 00:14:18,180 --> 00:14:20,790 було перезавантажити систему протиракетної оборони 314 00:14:20,790 --> 00:14:21,770 кожен раз в той час. 315 00:14:21,770 --> 00:14:24,280 І так знову, одна з цілей цього курсу, звичайно, 316 00:14:24,280 --> 00:14:26,900 на більш скромних масштабах, ніж ці програми, є 317 00:14:26,900 --> 00:14:30,710 дійсно відкриті всі очі, як саме ви йдете з приводу 318 00:14:30,710 --> 00:14:34,380 Машини робити те, що ви від них хочете і як ви йдете 319 00:14:34,380 --> 00:14:37,180 Про робите, що правильно, а по дорозі роблять це 320 00:14:37,180 --> 00:14:38,810 добре, елегантно, і так далі. 321 00:14:38,810 --> 00:14:41,680 І тому сьогодні, давайте поринемо в ще трохи про це, але 322 00:14:41,680 --> 00:14:44,210 так що ми не дуже швидко, особливо для тих, хто менш 323 00:14:44,210 --> 00:14:46,590 зручно, але й так, що ми можемо зберегти інтерес 324 00:14:46,590 --> 00:14:49,390 тим більш зручно, давайте просто швидко почати з невеликої 325 00:14:49,390 --> 00:14:50,970 з резюме деяких з цих ідей. 326 00:14:50,970 --> 00:14:53,710 І знову ж, запитаєте само, як в обличчя або в Інтернеті, якщо у вас є 327 00:14:53,710 --> 00:14:56,320 питання, щоб ми могли тримати все на тій же сторінці. 328 00:14:56,320 --> 00:14:58,820 >> Так CS50 Appliance, швидкий крок назад, є 329 00:14:58,820 --> 00:15:02,360 що, у ваших власних слів? 330 00:15:02,360 --> 00:15:06,454 Це нормально, якщо ви поняття не маєте, що ці слова можуть бути ще. 331 00:15:06,454 --> 00:15:07,830 [Нерозбірливо] 332 00:15:07,830 --> 00:15:10,950 Отже, універсальний інтерфейс для - 333 00:15:10,950 --> 00:15:11,900 що всі ми можемо поділитися. 334 00:15:11,900 --> 00:15:12,470 Абсолютно вірно. 335 00:15:12,470 --> 00:15:14,840 Таким чином, ми могли б, наприклад, сказати вам, щоб піти на деякі 336 00:15:14,840 --> 00:15:16,910 веб-сайт, завантажити програмне забезпечення для Mac OS. 337 00:15:16,910 --> 00:15:19,140 Завантажити це програмне забезпечення для Windows, налаштувати в 338 00:15:19,140 --> 00:15:20,100 і так і сяк. 339 00:15:20,100 --> 00:15:22,370 Але реальність така, то ми стикаємося з незліченними технічними 340 00:15:22,370 --> 00:15:23,200 підтримує питань. 341 00:15:23,200 --> 00:15:26,630 А також в ці дні, багато чого з того, що робиться на стороні сервера, 342 00:15:26,630 --> 00:15:28,490 У світі комп'ютерів, особливо коли справа доходить до 343 00:15:28,490 --> 00:15:31,460 розробка сайтів та веб-додатків, насправді 344 00:15:31,460 --> 00:15:35,110 досить часто робиться на Unix або Linux комп'ютерами, на відміну від 345 00:15:35,110 --> 00:15:36,800 Маках або ПК з Windows. 346 00:15:36,800 --> 00:15:39,240 >> Так серед розквитатися, то, за допомогою цієї речі, званої 347 00:15:39,240 --> 00:15:41,500 CS50 прилад нам усім доведеться тому ж середовищі. 348 00:15:41,500 --> 00:15:43,670 Так що все на тій же сторінці незалежно від того, яке обладнання 349 00:15:43,670 --> 00:15:46,650 приїхали в кампус с, але і буде втручаються в точності 350 00:15:46,650 --> 00:15:48,230 тих же умовах, що ви будете використовувати на 351 00:15:48,230 --> 00:15:51,080 семестру кінця, а також для веб-розробки, а також в 352 00:15:51,080 --> 00:15:53,580 майбутнє для реальних додатків їх. 353 00:15:53,580 --> 00:15:56,350 Таким чином, більш конкретно, CS50 Appliance являє собою безкоштовний шматок 354 00:15:56,350 --> 00:15:59,400 програмне забезпечення, яке дозволяє запускати інший операційної системи, 355 00:15:59,400 --> 00:16:02,670 Linux, в даному випадку, на вашому власному комп'ютері, у вікні. 356 00:16:02,670 --> 00:16:04,750 Тепер ви можете не тільки завантажити приладу. 357 00:16:04,750 --> 00:16:08,170 Вам потрібна програма, з якою грати або працювати прилад. 358 00:16:08,170 --> 00:16:11,220 І це частина програмного забезпечення, як правило, відомі як 359 00:16:11,220 --> 00:16:11,520 гіпервізора. 360 00:16:11,520 --> 00:16:14,050 Гіпервізора приходять у вигляді продуктів, таких як VMware, 361 00:16:14,050 --> 00:16:15,820 Virtual Box, Parallels. 362 00:16:15,820 --> 00:16:18,390 Всі види компаній роблять програмне забезпечення, як безкоштовні, так і 363 00:16:18,390 --> 00:16:19,310 комерційних, так. 364 00:16:19,310 --> 00:16:21,480 Те, що ви побачите в проблемі Set 1 наведені інструкції про те, як 365 00:16:21,480 --> 00:16:23,440 отримати безкоштовне програмне забезпечення, з яким 366 00:16:23,440 --> 00:16:25,000 запустити CS50 Appliance. 367 00:16:25,000 --> 00:16:28,060 І як тільки ви це зробите, ви будете мати, у вікні на вашому Mac або ПК, 368 00:16:28,060 --> 00:16:30,710 оточення робочого столу, яка виглядає зовсім як ця, де 369 00:16:30,710 --> 00:16:33,100 вона має меню Пуск-як річ в 370 00:16:33,100 --> 00:16:34,510 лівому нижньому кутку. 371 00:16:34,510 --> 00:16:38,030 Він має головну папку або домашнього каталогу, в лівому верхньому 372 00:16:38,030 --> 00:16:40,280 там, відро для сміття, і так далі. 373 00:16:40,280 --> 00:16:43,450 Таким чином, ми будемо дражнити один від одного необхідні деталі, як ми йдемо. 374 00:16:43,450 --> 00:16:46,430 >> А тепер давайте почнемо занурюватися в C. 375 00:16:46,430 --> 00:16:49,200 Таким чином, C це мова програмування, близького за духом 376 00:16:49,200 --> 00:16:52,390 Scratch, але набагато менше, графічний, але за іронією долі, далеко 377 00:16:52,390 --> 00:16:54,730 більш потужний, як тільки ви отримаєте здорового глузду з ним. 378 00:16:54,730 --> 00:16:58,970 Таким чином, в C, ми пишемо програми, написання вихідного коду, який є 379 00:16:58,970 --> 00:17:01,640 це англійське-подібний синтаксис, схожий на шкарпетки 380 00:17:01,640 --> 00:17:05,609 демонстрація того, що ми зробили в минулий раз, що дозволяє 381 00:17:05,609 --> 00:17:07,910 виразити себе досить точно, якщо 382 00:17:07,910 --> 00:17:09,760 arcanely, до комп'ютера. 383 00:17:09,760 --> 00:17:11,960 >> Так який програмний продукт ви насправді потрібно 384 00:17:11,960 --> 00:17:15,520 писати програми на мові, як C, на основі наших 385 00:17:15,520 --> 00:17:17,492 Розмова в понеділок? 386 00:17:17,492 --> 00:17:19,650 [Нерозбірливо] 387 00:17:19,650 --> 00:17:21,079 OK, потрібно просто текстовий редактор. 388 00:17:21,079 --> 00:17:22,890 Вам не потрібно ніякого спеціального програмного забезпечення 389 00:17:22,890 --> 00:17:24,460 саме по собі для написання програм. 390 00:17:24,460 --> 00:17:27,220 Вам просто потрібно текстовий редактор, наприклад Блокнот, на Windows, 391 00:17:27,220 --> 00:17:30,450 TextEdit на Mac, або те, що називається Gedit, у світі 392 00:17:30,450 --> 00:17:32,020 Linux, який ми будемо використовувати тут. 393 00:17:32,020 --> 00:17:33,750 І це все, писати програми. 394 00:17:33,750 --> 00:17:35,480 >> Але письмово це тільки половина рівняння. 395 00:17:35,480 --> 00:17:36,630 Потім потрібно запустити їх. 396 00:17:36,630 --> 00:17:38,320 Але для запуску програм - 397 00:17:38,320 --> 00:17:39,600 ви не можете запустити вихідний код. 398 00:17:39,600 --> 00:17:41,500 Ви, а не робити те, що йому в першу чергу? 399 00:17:41,500 --> 00:17:41,900 Так. 400 00:17:41,900 --> 00:17:43,200 David J. Малан: Ви повинні 401 00:17:43,200 --> 00:17:44,130 скомпілювати його. 402 00:17:44,130 --> 00:17:49,010 І хтось ще, компіляція вихідного коду означає - 403 00:17:49,010 --> 00:17:50,260 [Нерозбірливо] 404 00:17:52,300 --> 00:17:52,700 David J. Малан: Абсолютно вірно. 405 00:17:52,700 --> 00:17:54,430 Переводячи його нулів і одиниць. 406 00:17:54,430 --> 00:17:57,150 Тому що всі ми, в ці дні, є комп'ютери, які мають процесори, 407 00:17:57,150 --> 00:18:00,350 майже всі з яких зроблені компанією під назвою Intel, і 408 00:18:00,350 --> 00:18:03,320 Intel Inside, означає, що є цей мозок всередині вашого 409 00:18:03,320 --> 00:18:04,990 комп'ютер, відомий як центральний процесор. 410 00:18:04,990 --> 00:18:07,570 І одна з речей, що мозок робить, він знає, 411 00:18:07,570 --> 00:18:10,390 як зрозуміти моделей з нулів та одиниць. 412 00:18:10,390 --> 00:18:13,240 Він знає, що картина являє біти того, що 413 00:18:13,240 --> 00:18:15,500 шаблон являє віднімання, що структура 414 00:18:15,500 --> 00:18:18,890 біти представляють друку, а також створення чутний звук. 415 00:18:18,890 --> 00:18:22,450 >> Коротше кажучи, процесор, у поєднанні з операційною системою, 416 00:18:22,450 --> 00:18:25,230 , Яка є частиною програмного забезпечення, який працює на верхній частині процесора, 417 00:18:25,230 --> 00:18:26,050 так сказати. 418 00:18:26,050 --> 00:18:29,850 Разом, ці дві частини знають, як управляти програмами, які 419 00:18:29,850 --> 00:18:31,070 ми, люди пишуть. 420 00:18:31,070 --> 00:18:34,040 >> Так що, якщо я йду в CS50 Appliance тут, мені потрібно, щоб відкрити 421 00:18:34,040 --> 00:18:35,660 до текстовий редактор, і я можу отримати доступ до цієї 422 00:18:35,660 --> 00:18:36,560 Через пару способів. 423 00:18:36,560 --> 00:18:39,060 Я можу або піти в меню програмування, 424 00:18:39,060 --> 00:18:40,230 і тоді я можу вибрати - 425 00:18:40,230 --> 00:18:40,810 Ні, не те, що меню. 426 00:18:40,810 --> 00:18:43,860 Я можу піти в Аксесуари / Gedit тут, щоб відкрити 427 00:18:43,860 --> 00:18:45,090 мій маленький текстовий редактор. 428 00:18:45,090 --> 00:18:48,030 Або, простіше кажучи, я можу натиснути цю маленьку іконку в нижньому 429 00:18:48,030 --> 00:18:48,970 лівому кутку. 430 00:18:48,970 --> 00:18:50,430 І тепер я отримую цю середу тут. 431 00:18:50,430 --> 00:18:52,590 Це дуже нагадує простий текстовий редактор, тільки з 432 00:18:52,590 --> 00:18:53,820 один або два відмінності. 433 00:18:53,820 --> 00:18:56,420 У верхній частині, де блимає курсор зараз, це де 434 00:18:56,420 --> 00:18:57,900 Я можу почати писати свій код. 435 00:18:57,900 --> 00:19:00,415 У нижній частині знаходиться те, що називається вікні терміналу. 436 00:19:00,415 --> 00:19:03,400 І які речі я можу зробити в цій 437 00:19:03,400 --> 00:19:04,960 так звані вікна терміналу? 438 00:19:04,960 --> 00:19:06,680 [Нерозбірливо] 439 00:19:06,680 --> 00:19:07,890 >> Гаразд, так що я буду виконувати команди. 440 00:19:07,890 --> 00:19:10,300 І деякі з команд, ми побігли в понеділок були трохи 441 00:19:10,300 --> 00:19:15,070 загадкові на перший, але Ls за список, компакт-диск для зміни каталогу, 442 00:19:15,070 --> 00:19:16,540 RM, для видалення. 443 00:19:16,540 --> 00:19:19,680 Так це ніби старої школи спосіб навігації по 444 00:19:19,680 --> 00:19:22,310 комп'ютер, використовуючи тільки клавіатуру і текстових команд, 445 00:19:22,310 --> 00:19:24,130 і, взагалі, за допомогою миші. 446 00:19:24,130 --> 00:19:25,960 Але ми побачимо, що незабаром, це насправді дає нам 447 00:19:25,960 --> 00:19:28,520 трохи більше потужності і трохи більше точності, з якою в 448 00:19:28,520 --> 00:19:29,600 виразити себе. 449 00:19:29,600 --> 00:19:31,330 І тоді тут, на лівому, ми просто побачимо, 450 00:19:31,330 --> 00:19:34,360 як почати писати програмне забезпечення, трохи резюме 451 00:19:34,360 --> 00:19:36,350 Програма, яку ми написали в лівому верхньому кутку. 452 00:19:36,350 --> 00:19:38,360 Але ми побачимо, що знову скоро. 453 00:19:38,360 --> 00:19:40,050 >> Отже, давайте щось робити досить просто. 454 00:19:40,050 --> 00:19:43,440 Дозвольте мені спочатку йти вперед і перейдіть в меню Файл, Зберегти, і я просто 455 00:19:43,440 --> 00:19:45,970 збираюся натиснути на jharvard тут, на зліва, і 456 00:19:45,970 --> 00:19:48,930 jharvard, знову ж таки, назву для моєї домашньої папці, моя 457 00:19:48,930 --> 00:19:52,110 особисті справи, я, в даний час Джон Гарвард, як всі ви 458 00:19:52,110 --> 00:19:54,230 Скоро Джон Гарвард в цьому середовищі. 459 00:19:54,230 --> 00:19:57,360 Він отримав це домашній каталог, Мої документи і так далі, 460 00:19:57,360 --> 00:19:58,900 що я хочу зберегти, зараз, в цей файл дюйма 461 00:19:58,900 --> 00:20:01,520 Так що я буду називати його hello.c. Тоді я піду 462 00:20:01,520 --> 00:20:05,770 вперед і натисніть кнопку Зберегти, а тепер те, що я тут вкладці 463 00:20:05,770 --> 00:20:09,440 називається hello.c, так як інший тип редактора. 464 00:20:09,440 --> 00:20:11,760 >> Так що тепер дозвольте мені йти вперед і почати писати програму. 465 00:20:11,760 --> 00:20:14,440 Int основних (недійсними). 466 00:20:14,440 --> 00:20:18,150 А потім я просто в минулий раз, Printf, відформатовані для друку, 467 00:20:18,150 --> 00:20:22,120 ("Hello, World!" 468 00:20:22,120 --> 00:20:24,500 ). 469 00:20:24,500 --> 00:20:25,630 Майже завершена. 470 00:20:25,630 --> 00:20:27,130 Але мені не вистачає пару деталей. 471 00:20:27,130 --> 00:20:30,210 Що відсутня в цій програмі, що мені дійсно потрібно для 472 00:20:30,210 --> 00:20:31,890 це для компіляції? 473 00:20:31,890 --> 00:20:32,130 Так. 474 00:20:32,130 --> 00:20:33,980 [Нерозбірливо]? 475 00:20:33,980 --> 00:20:35,770 >> David J. Малан: Так, так що мені потрібно включати в стандартну 476 00:20:35,770 --> 00:20:36,700 Бібліотека введення / виводу. 477 00:20:36,700 --> 00:20:39,470 Таким чином, це повинно піти вище основного, так що я тільки збираюся 478 00:20:39,470 --> 00:20:40,790 зробити деякі можливості для цього є. 479 00:20:40,790 --> 00:20:44,420 І я збираюся зробити # включити . 480 00:20:44,420 --> 00:20:46,570 І зверніть увагу, кутові дужки там. 481 00:20:46,570 --> 00:20:49,410 І як в сторону, Gedit трохи дружнім до користувача, якщо 482 00:20:49,410 --> 00:20:52,420 Іноді трохи заплутаним, в тому, що вона намагається допомогти своєму 483 00:20:52,420 --> 00:20:54,770 ока помітив, що на одній лінії з чим. 484 00:20:54,770 --> 00:20:57,760 Тому той факт, що мій курсор знаходиться в безпосередній близькості від цієї кутовий 485 00:20:57,760 --> 00:21:00,600 кронштейн, зверніть увагу, як він підкреслює інші кутові 486 00:21:00,600 --> 00:21:01,920 Кронштейн плюс цього. 487 00:21:01,920 --> 00:21:03,770 І це тільки звернути мою увагу на те, що я 488 00:21:03,770 --> 00:21:04,460 є симетрія. 489 00:21:04,460 --> 00:21:07,010 І симетрії в програмуванні, як правило, добре. 490 00:21:07,010 --> 00:21:10,270 Аналогічно, якщо я перенести курсор в кінець, зверніть увагу, як 491 00:21:10,270 --> 00:21:13,630 фігурні дужки лінію, щоб показати, що, так, у мене є відкрита 492 00:21:13,630 --> 00:21:15,160 і закритим, так би мовити. 493 00:21:15,160 --> 00:21:16,640 >> Все в порядку, і я можу зробити ще одну річ. 494 00:21:16,640 --> 00:21:20,090 Це не обов'язково, але хороша практика, якщо не сказати 495 00:21:20,090 --> 00:21:21,250 повертати 0. 496 00:21:21,250 --> 00:21:24,140 І повернення 0 робить те, що для нас тут? 497 00:21:24,140 --> 00:21:25,584 Або означає, що? 498 00:21:25,584 --> 00:21:27,480 [Нерозбірливо] 499 00:21:27,480 --> 00:21:28,300 David J. Малан: Але нічого не сталося. 500 00:21:28,300 --> 00:21:30,280 І, чесно кажучи, це важко багато піти не так в 501 00:21:30,280 --> 00:21:31,250 запрограмувати цю коротку. 502 00:21:31,250 --> 00:21:33,930 Так що я просто супер бути чітко вказано, що все буде добре. 503 00:21:33,930 --> 00:21:36,740 Я, людина, коли я запускаю цю програму, ймовірно, ніколи не 504 00:21:36,740 --> 00:21:38,150 бачити, що 0. 505 00:21:38,150 --> 00:21:41,070 Як правило, ці номери, які повертаються з основних 506 00:21:41,070 --> 00:21:43,540 тільки піднімуть голови до людей, коли 507 00:21:43,540 --> 00:21:44,360 щось іде не так. 508 00:21:44,360 --> 00:21:46,640 І ви отримаєте трохи спливаючих кажучи системна помилка, один, 509 00:21:46,640 --> 00:21:48,760 два, три, або незалежно від числа було те, що 510 00:21:48,760 --> 00:21:50,100 була фактично повернута. 511 00:21:50,100 --> 00:21:52,870 Так що нічого поганого в цьому? 512 00:21:52,870 --> 00:21:55,300 [Нерозбірливо] 513 00:21:55,300 --> 00:21:58,100 >> David J. Малан: Так що це не стільки функціональними помилку 514 00:21:58,100 --> 00:21:59,240 але естетичний. 515 00:21:59,240 --> 00:22:02,340 Я, ймовірно, слід покласти в символ нового рядка там в 516 00:22:02,340 --> 00:22:05,240 Наприкінці цього рядка, так що ми насправді перемістити курсор на 517 00:22:05,240 --> 00:22:08,340 Наступний рядок, і програма виглядає трохи красивішим. 518 00:22:08,340 --> 00:22:10,340 >> Так що тепер дозвольте мені зійти у вікні терміналу 519 00:22:10,340 --> 00:22:11,490 і збільшити масштаб 520 00:22:11,490 --> 00:22:13,390 І ця річ тут, це називається командному рядку. 521 00:22:13,390 --> 00:22:16,760 Він просто нагадав мені, хто я, jharvard @ прилад, де 522 00:22:16,760 --> 00:22:18,850 Прилад ім'я комп'ютера, я на. 523 00:22:18,850 --> 00:22:22,380 У дужках це тильда, тильда символ, який 524 00:22:22,380 --> 00:22:24,160 представляє те, що? 525 00:22:24,160 --> 00:22:25,590 АУДИТОРІЯ: Головна каталогу. 526 00:22:25,590 --> 00:22:26,350 David J. Малан: Головна каталогу. 527 00:22:26,350 --> 00:22:29,350 Так що це просто скорочене позначення для говорю, що ви перебуваєте в 528 00:22:29,350 --> 00:22:32,780 Ваші особисті папки, в якій всі файли йдуть за замовчуванням. 529 00:22:32,780 --> 00:22:36,080 Так що тепер, тут, я можу набрати Ls за список. 530 00:22:36,080 --> 00:22:40,020 І єдине, що я тут бачу на даний момент є hello.c. 531 00:22:40,020 --> 00:22:41,770 І це добре, тому що я тільки що написав. 532 00:22:41,770 --> 00:22:44,380 >> Отже, дозвольте мені йти вперед і робимо привіт. 533 00:22:44,380 --> 00:22:46,830 І зауважте, я не вводити зробити hello.c. 534 00:22:46,830 --> 00:22:50,300 Замість цього, я набравши тільки базове ім'я файлу, привіт. 535 00:22:50,300 --> 00:22:53,690 І зробити, як ми бачили в понеділок, буде просто зробити висновок, що я хочу 536 00:22:53,690 --> 00:22:54,920 . Із файлом. 537 00:22:54,920 --> 00:22:56,820 Так що тепер я набрав зробити привіт. 538 00:22:56,820 --> 00:22:59,280 Тепер я розумію, це досить довгу команду і буде продовжуватися 539 00:22:59,280 --> 00:23:00,480 Побачивши це знову і знову. 540 00:23:00,480 --> 00:23:03,620 Але щоб бути ясно, брязкіт, слово, яке щойно з'явився, 541 00:23:03,620 --> 00:23:05,340 це фактично компілятор. 542 00:23:05,340 --> 00:23:08,200 Зробити це просто Утиліта збирання. 543 00:23:08,200 --> 00:23:11,900 Це просто більш зручним для користувача програма, яка економить мені, в 544 00:23:11,900 --> 00:23:15,310 кінцевому рахунку, від того, щоб вводити неймовірно утомливо довго 545 00:23:15,310 --> 00:23:17,020 команди, як цей. 546 00:23:17,020 --> 00:23:18,950 Таким чином, ви можете запустити Clang вручну. 547 00:23:18,950 --> 00:23:20,530 Ви могли б ввести все це вручну. 548 00:23:20,530 --> 00:23:21,580 Просто стає дуже виснажливим. 549 00:23:21,580 --> 00:23:24,720 І зробити це просто програма, яка спрощує наше життя і 550 00:23:24,720 --> 00:23:27,120 працює більш складних команд для нас. 551 00:23:27,120 --> 00:23:29,410 >> Гаразд, так що тепер, який файл я повинен 552 00:23:29,410 --> 00:23:31,540 У моєму поточному каталозі? 553 00:23:31,540 --> 00:23:36,310 Не тільки hello.c, але і привіт. 554 00:23:36,310 --> 00:23:39,710 Так що, якщо я хочу запустити привіт, нагадаємо, що я кажу, точка слеш, 555 00:23:39,710 --> 00:23:42,220 де точка означає йти в поточній папці, де б ви не 556 00:23:42,220 --> 00:23:46,060 є, а потім запустити програму під назвою привіт, та й взагалі, зараз, 557 00:23:46,060 --> 00:23:48,080 У мене привіт світ. 558 00:23:48,080 --> 00:23:51,640 Гаразд, будь-які питання про робочий процес або синтаксису 559 00:23:51,640 --> 00:23:52,890 те, що ми тільки що зробили? 560 00:23:55,380 --> 00:23:57,040 >> Гаразд, давайте речі на сходинку вище ще раз. 561 00:23:57,040 --> 00:24:00,430 Так що це був захват просто написати програму, яка тільки 562 00:24:00,430 --> 00:24:01,790 ніколи не говорить привіт, світ. 563 00:24:01,790 --> 00:24:03,920 Таким чином, ми змінили його, в понеділок, якщо не сказати, привіт, Девід. 564 00:24:03,920 --> 00:24:06,560 Це трохи більш особистим, але так само жорстко, як 565 00:24:06,560 --> 00:24:07,410 Перша версія. 566 00:24:07,410 --> 00:24:08,780 Так що не все так переконливо. 567 00:24:08,780 --> 00:24:13,120 Але існує і в C, функції, крім, звичайно, 568 00:24:13,120 --> 00:24:15,700 друк, функції, які дозволять вам отримати користувача введення. 569 00:24:15,700 --> 00:24:17,990 І те, як ми зробили це, днями, був наступним. 570 00:24:17,990 --> 00:24:21,440 Перш, ніж я насправді роздрукувати щось, я вперше отримав 571 00:24:21,440 --> 00:24:22,410 щось від користувача. 572 00:24:22,410 --> 00:24:23,370 Отже, дозвольте мені зробити це знову. 573 00:24:23,370 --> 00:24:26,580 >> Струнний с, де с просто довільне ім'я, тут, 574 00:24:26,580 --> 00:24:30,600 Рядок, одно GetString. 575 00:24:30,600 --> 00:24:32,070 Так що GetString? 576 00:24:32,070 --> 00:24:34,630 Це, очевидно, отримує рядок, засновану на його ім'я. 577 00:24:34,630 --> 00:24:37,560 Але що це таке, більш технічно? 578 00:24:37,560 --> 00:24:38,440 Це функція. 579 00:24:38,440 --> 00:24:41,790 Так що це функції, які не поставляються з C такої. 580 00:24:41,790 --> 00:24:43,660 CS50 співробітники написав. 581 00:24:43,660 --> 00:24:46,940 І так, щоб використовувати це, ви не можете просто включити stdio.h, 582 00:24:46,940 --> 00:24:49,630 Крім того, необхідно включити і що? 583 00:24:49,630 --> 00:24:50,060 Так. 584 00:24:50,060 --> 00:24:54,210 Так cs50.h, який знаходиться всього в файл ми писали кілька років тому. 585 00:24:54,210 --> 00:24:57,130 Ми встановили його на пристрій для вас разом з 586 00:24:57,130 --> 00:24:58,490 всі стандартні файли. 587 00:24:58,490 --> 00:25:00,500 І ось в ці перші кілька тижнів класі, ми будемо використовувати 588 00:25:00,500 --> 00:25:02,820 це тільки, щоб спростити процес робить дуже простий 589 00:25:02,820 --> 00:25:04,600 такі речі, як отримання користувачем. 590 00:25:04,600 --> 00:25:07,370 Тому що, як ми побачимо через кілька тижнів, отримати користувача введення в 591 00:25:07,370 --> 00:25:10,180 мову, як C насправді дивно складним, 592 00:25:10,180 --> 00:25:14,360 Особливо тому, що ви не знаєте заздалегідь, як правило, як 593 00:25:14,360 --> 00:25:17,030 багато речей, користувач збирається ввести дюйма 594 00:25:17,030 --> 00:25:20,340 І коли ви не знаєте, як багато даних, щоб очікувати, ви не 595 00:25:20,340 --> 00:25:22,380 дізнатися, скільки пам'яті виділити. 596 00:25:22,380 --> 00:25:25,480 І якщо у вас дійсно є змагальність користувач, який намагається 597 00:25:25,480 --> 00:25:28,180 для злому вашої системи, збій комп'ютера, ну, 598 00:25:28,180 --> 00:25:31,600 як правило, перший метод атаки, так само, як я зробив на 599 00:25:31,600 --> 00:25:34,950 Понеділок, введіть цілу довгу послідовність випадкових символів, 600 00:25:34,950 --> 00:25:37,020 Введіть удар, і подивитися, що ламається. 601 00:25:37,020 --> 00:25:40,800 Бо зазвичай, якщо програма перерви, що натякає на 602 00:25:40,800 --> 00:25:42,650 недолік безпеки, потенційно. 603 00:25:42,650 --> 00:25:45,250 Це, звичайно, натякає на вас, програміст, зробивши 604 00:25:45,250 --> 00:25:49,050 помилкою, але що більш небезпечно, ви могли б зробити 605 00:25:49,050 --> 00:25:52,430 пов'язаних з безпекою помилки, і взагалі, ми побачимо, що 606 00:25:52,430 --> 00:25:54,840 Ось як машини опиняються під загрозою і донині, як 607 00:25:54,840 --> 00:25:56,620 У світі Інтернету і програм на 608 00:25:56,620 --> 00:25:58,070 командного рядка, як це. 609 00:25:58,070 --> 00:25:58,350 >> Добре. 610 00:25:58,350 --> 00:26:00,460 Таким чином, рядок з рівним GetString. 611 00:26:00,460 --> 00:26:03,380 Таким чином, тепер більш конкретно, що ж рядку 6 тут робити? 612 00:26:03,380 --> 00:26:05,640 Таким чином, функція в правій отримує рядок, 613 00:26:05,640 --> 00:26:06,890 бере, скільки аргументів? 614 00:26:09,458 --> 00:26:09,900 Добре. 615 00:26:09,900 --> 00:26:10,400 Таким чином, немає. 616 00:26:10,400 --> 00:26:11,360 Трохи санітарної перевірки. 617 00:26:11,360 --> 00:26:15,380 Аргумент, знову ж таки, це всього лише вхід у функцію для зміни 618 00:26:15,380 --> 00:26:17,250 її поведінку за замовчуванням в деякому роді. 619 00:26:17,250 --> 00:26:19,540 Але в цьому випадку, я не хочу, щоб змінити 620 00:26:19,540 --> 00:26:20,650 Поведінка GetString. 621 00:26:20,650 --> 00:26:22,430 Я просто хотів, щоб отримати рядок. 622 00:26:22,430 --> 00:26:25,190 Тому я ставлю нічого в дужках, а потім я поклав 623 00:26:25,190 --> 00:26:27,550 коми демаркації кінці рядка коду. 624 00:26:27,550 --> 00:26:29,840 Тепер, знак рівності не означає, рівного, як такої. 625 00:26:29,840 --> 00:26:32,690 Це означає, завдання, яке означає, покласти все, що отримує 626 00:26:32,690 --> 00:26:36,060 виводитися на правому всередину все, що знаходиться зліва. 627 00:26:36,060 --> 00:26:39,400 >> Таким чином, на лівій стороні, ми говоримо, що ми оголосили 628 00:26:39,400 --> 00:26:41,630 Рядок називається с. 629 00:26:41,630 --> 00:26:44,240 І більш конкретно, ми виділеної пам'яті всередині 630 00:26:44,240 --> 00:26:46,340 які ми будемо ставити біт, який являє собою послідовність 631 00:26:46,340 --> 00:26:46,850 символи. 632 00:26:46,850 --> 00:26:49,400 Але на сьогоднішній день ми виділили 633 00:26:49,400 --> 00:26:51,450 або оголошені рядок. 634 00:26:51,450 --> 00:26:51,790 Добре. 635 00:26:51,790 --> 00:26:54,760 Так що тепер, як тільки я зробив це, я хочу підключити значення 636 00:26:54,760 --> 00:26:56,535 и, а не значення Давида. 637 00:26:56,535 --> 00:27:00,200 Так що це неправильно, чому? 638 00:27:03,060 --> 00:27:04,870 Так що це просто буквально жорстко с. 639 00:27:04,870 --> 00:27:06,870 Це, щоб сказати "привіт, з", який є не те, що я хочу. 640 00:27:06,870 --> 00:27:07,790 Таким чином, я можу це зробити. 641 00:27:07,790 --> 00:27:10,330 Знак відсотка є прототипом, але зараз мені потрібно 642 00:27:10,330 --> 00:27:12,520 Проходимо в друк другий аргумент. 643 00:27:12,520 --> 00:27:15,160 Нагадаємо, що аргументи функцій відокремлюються 644 00:27:15,160 --> 00:27:20,300 ком, тому наступного коми тут я ставлю після цього листа с. 645 00:27:20,300 --> 00:27:23,740 І в цьому контексті зараз, а є змінною, і Printf, 646 00:27:23,740 --> 00:27:25,550 Після отримання цих двох входів - 647 00:27:25,550 --> 00:27:29,440 Рядок зліва і змінної ім'я праворуч - 648 00:27:29,440 --> 00:27:32,750 вона буде підключити останнього в колишня для нас, і 649 00:27:32,750 --> 00:27:34,600 просто роздрукувати хороша красива рядок, що містить 650 00:27:34,600 --> 00:27:36,770 все це, що ми ввели дюйма 651 00:27:36,770 --> 00:27:37,560 >> Так давайте спробуємо це. 652 00:27:37,560 --> 00:27:38,860 Збираюся йти вперед і зменшення масштабу, спини 653 00:27:38,860 --> 00:27:40,250 у вікні терміналу. 654 00:27:40,250 --> 00:27:41,840 Огляньте в нижній тут. 655 00:27:41,840 --> 00:27:44,070 Повторіть зробити привіт. 656 00:27:44,070 --> 00:27:45,870 Clang, здається, були повторно. 657 00:27:45,870 --> 00:27:49,280 Я збираюся ввести. / Привіт, Enter. 658 00:27:49,280 --> 00:27:52,145 Ніщо, здається, відбувається ще немає, але це в цьому рядку 659 00:27:52,145 --> 00:27:55,700 що я можу ввести щось на зразок Nate, Enter, і тепер ми маємо 660 00:27:55,700 --> 00:27:56,380 Привіт, Нейт. 661 00:27:56,380 --> 00:27:59,600 І я можу зробити це знову з Робом, і так далі. 662 00:27:59,600 --> 00:28:03,410 Так що, сподіваюся, тепер ця програма веде себе, як я маю намір. 663 00:28:03,410 --> 00:28:05,720 >> Тепер, не все, що зручно для користувача. 664 00:28:05,720 --> 00:28:07,930 Я не знаю, що час від мене очікували. 665 00:28:07,930 --> 00:28:09,620 Таким чином, ми, безумовно, може очистити це небагато. 666 00:28:09,620 --> 00:28:13,270 Дозвольте мені повернутися сюди, і замість того, щоб просто занурення в і 667 00:28:13,270 --> 00:28:16,480 задаючи користувачеві для рядка, дозвольте мені явно вказати 668 00:28:16,480 --> 00:28:17,750 Користувач те, що я очікував. 669 00:28:17,750 --> 00:28:21,610 Таким чином, Е ("Введіть рядок:" 670 00:28:21,610 --> 00:28:24,080 ); 671 00:28:24,080 --> 00:28:25,510 Так немає змінних тут. 672 00:28:25,510 --> 00:28:26,750 Немає знаки відсотка. 673 00:28:26,750 --> 00:28:28,550 Просто простий англійської фрази. 674 00:28:28,550 --> 00:28:34,030 Дозвольте мені тепер йти на дно тут і повторіть мою програму. 675 00:28:34,030 --> 00:28:35,380 Але нічого, здається, не змінилося. 676 00:28:35,380 --> 00:28:37,350 Чому? 677 00:28:37,350 --> 00:28:38,380 Я повинен перекомпілювати його. 678 00:28:38,380 --> 00:28:39,570 Так легко зробити помилку. 679 00:28:39,570 --> 00:28:41,700 Але ви повинні не тільки зберегти файл, але 680 00:28:41,700 --> 00:28:43,260 перекомпілювати програму. 681 00:28:43,260 --> 00:28:46,640 І тому, якщо я повторно запустити зробити привіт, тепер Clang працює. 682 00:28:46,640 --> 00:28:51,800 Тепер я можу запустити. / Привіт. І тепер я бачу "Введіть рядок:". 683 00:28:51,800 --> 00:28:52,050 Добре. 684 00:28:52,050 --> 00:28:53,440 Тепер це трохи більш зручним. 685 00:28:53,440 --> 00:28:55,850 Nate, введіть, привіт, Нейт. 686 00:28:55,850 --> 00:28:57,310 >> Ну, давайте спробуємо це знову і почати думати 687 00:28:57,310 --> 00:28:58,080 Про кутку випадках. 688 00:28:58,080 --> 00:29:00,520 Так само, як в Scratch, ви закликали або знаходяться в стадії 689 00:29:00,520 --> 00:29:03,180 рекомендується в специфікації до виду думаю про те, що може піти 690 00:29:03,180 --> 00:29:06,610 так, якщо ви не очікуєте все, що користувач може робити. 691 00:29:06,610 --> 00:29:08,050 Помилки, отже, може наступити. 692 00:29:08,050 --> 00:29:09,710 Так введіть рядок - 693 00:29:09,710 --> 00:29:11,130 Що кутку даному випадку? 694 00:29:11,130 --> 00:29:13,320 Що таке сценарій, який я, програміст, не можуть мати 695 00:29:13,320 --> 00:29:16,070 очікується? 696 00:29:16,070 --> 00:29:17,600 Так. 697 00:29:17,600 --> 00:29:17,920 Добре. 698 00:29:17,920 --> 00:29:22,060 Так що, якщо я набираю в ряд, як це? 699 00:29:22,060 --> 00:29:22,500 Добре. 700 00:29:22,500 --> 00:29:24,490 Так що він все ще працює. 701 00:29:24,490 --> 00:29:25,880 Gramatically не має сенсу. 702 00:29:25,880 --> 00:29:27,180 Але принаймні працює програма. 703 00:29:27,180 --> 00:29:28,650 >> Що іншому кутку випадку? 704 00:29:28,650 --> 00:29:29,610 Щось я не очікував. 705 00:29:29,610 --> 00:29:31,590 Так? 706 00:29:31,590 --> 00:29:31,940 Добре. 707 00:29:31,940 --> 00:29:34,950 Так що ми могли б зробити щось подібне дуже, дуже велике число. 708 00:29:34,950 --> 00:29:37,270 Так давайте зробимо це тут. 709 00:29:37,270 --> 00:29:40,880 Дозвольте мені зменшити на секунду, дозвольте мені зупинитися. 710 00:29:40,880 --> 00:29:42,250 Не вдається скопіювати і вставити сюди. 711 00:29:42,250 --> 00:29:42,470 Добре. 712 00:29:42,470 --> 00:29:44,440 Тому я не можу копіювати і вставляти в цьому вікні терміналу, тому ми будемо 713 00:29:44,440 --> 00:29:46,950 тільки його імітації. 714 00:29:46,950 --> 00:29:51,340 Дозвольте мені зменшити масштаб, збирався завернути. 715 00:29:51,340 --> 00:29:52,700 Я не збираюся робити це занадто довго, тому що воно не буде 716 00:29:52,700 --> 00:29:54,440 насправді зламати в цій програмі. 717 00:29:54,440 --> 00:29:55,260 Але це може відбутися. 718 00:29:55,260 --> 00:29:55,830 Enter. 719 00:29:55,830 --> 00:29:56,580 Але це не так. 720 00:29:56,580 --> 00:29:57,050 Добре. 721 00:29:57,050 --> 00:29:58,440 Але це справжній випадок кутку. 722 00:29:58,440 --> 00:30:01,610 І тільки тому, що вели себе коректно, так 723 00:30:01,610 --> 00:30:05,820 говорити, тому, що CS50 функції GetString насправді 724 00:30:05,820 --> 00:30:08,040 розроблений під капотом, як ми побачимо протягом декількох тижнів, 725 00:30:08,040 --> 00:30:11,570 автоматично виділяти все більше і більше пам'яті, більше і більше 726 00:30:11,570 --> 00:30:14,330 пам'ять від операційної системи, коли вона розуміє, нічого собі, 727 00:30:14,330 --> 00:30:16,670 Ви дійсно набрав в чомусь досить довго. 728 00:30:16,670 --> 00:30:18,500 Тепер, це трохи білої брехнею. 729 00:30:18,500 --> 00:30:22,020 Якщо ми дійсно зупинився на деякий час, і я набрав в 730 00:30:22,020 --> 00:30:24,640 щось на зразок 5000000000 символів на клавіатурі 731 00:30:24,640 --> 00:30:28,060 тут, або дійсно потрапив копіювати-вставити зовсім небагато, ми, цілком можливо, 732 00:30:28,060 --> 00:30:29,730 може призвести до аварійного завершення програми. 733 00:30:29,730 --> 00:30:32,130 Просто трохи важче симулювати, що з кінцевою 734 00:30:32,130 --> 00:30:33,740 кількість часу. 735 00:30:33,740 --> 00:30:37,320 >> Що іншому кутку випадку ми могли б спробувати? 736 00:30:37,320 --> 00:30:38,730 Так? 737 00:30:38,730 --> 00:30:39,020 Так. 738 00:30:39,020 --> 00:30:40,360 Так чому б нам не відповісти нічого? 739 00:30:40,360 --> 00:30:43,130 Таким чином, ми насправді потрібно почати деякі дії, тому що інакше 740 00:30:43,130 --> 00:30:45,060 Програма збирається сидіти там блимає протягом всього дня. 741 00:30:45,060 --> 00:30:46,860 Але якщо я просто натисніть Enter - 742 00:30:46,860 --> 00:30:48,780 Добре, тепер, як і раніше виглядає так. 743 00:30:48,780 --> 00:30:51,670 Не крах, але, можливо, є тепер можливість 744 00:30:51,670 --> 00:30:54,190 приступити до реалізації більш суворої програми 745 00:30:54,190 --> 00:30:55,290 що насправді перевіряє. 746 00:30:55,290 --> 00:30:57,640 І якщо рядок, речення, слово, яке Я 747 00:30:57,640 --> 00:31:00,890 набрав в має довжину 0, а, може бути, я повинен кричати на 748 00:31:00,890 --> 00:31:03,770 користувача, або сказати йому або їй ввести рядок ще раз, щоб 749 00:31:03,770 --> 00:31:06,560 ми насправді отримати те, що виглядає як правильна поведінка, а не 750 00:31:06,560 --> 00:31:08,570 просто повний контроль з мого боку. 751 00:31:08,570 --> 00:31:11,130 >> Питання в спині? 752 00:31:11,130 --> 00:31:11,970 Десяткове число. 753 00:31:11,970 --> 00:31:13,120 Таким чином, ми могли б спробувати це. 754 00:31:13,120 --> 00:31:16,840 1,10000005. 755 00:31:16,840 --> 00:31:19,470 Схоже, що збирається просто працювати насправді все гаразд. 756 00:31:19,470 --> 00:31:21,160 І що насправді не очікується. 757 00:31:21,160 --> 00:31:24,550 Хоча ми могли б набрав цей номер там, або 758 00:31:24,550 --> 00:31:28,200 більшого числа раніше, розуміють, що коли ми вводимо користувача 759 00:31:28,200 --> 00:31:31,070 вхідного і ми використовуємо GetString функції, не 760 00:31:31,070 --> 00:31:34,380 справа, якщо те, що я друкую виглядає як число. 761 00:31:34,380 --> 00:31:36,720 Нагадаємо, що відповідно до ASCII, всі на ваш 762 00:31:36,720 --> 00:31:39,920 Клавіатура має числове значення, яке може бути зіставлений з 763 00:31:39,920 --> 00:31:41,480 характеру, символ. 764 00:31:41,480 --> 00:31:44,490 Таким чином, в даному випадку, хоча я б ввести число, 765 00:31:44,490 --> 00:31:48,190 комп'ютер буде думати про це, так би мовити, у вигляді рядка - 766 00:31:48,190 --> 00:31:49,870 те, що виглядає як число, але 767 00:31:49,870 --> 00:31:51,090 насправді не число. 768 00:31:51,090 --> 00:31:53,450 Але що насправді ідеальний перехід, тому що тепер ми можемо 769 00:31:53,450 --> 00:31:55,450 насправді перехід до написання програм, які 770 00:31:55,450 --> 00:31:56,730 використовувати інші типи даних. 771 00:31:56,730 --> 00:32:01,840 >> Таким чином, крім використання символів, або, скоріше, крім використання рядків, 772 00:32:01,840 --> 00:32:04,510 розумію, що у нас є інші типи даних в C, а також в 773 00:32:04,510 --> 00:32:05,230 інші мови. 774 00:32:05,230 --> 00:32:08,480 Символ, як випливає з назви, це всього лише один символ. 775 00:32:08,480 --> 00:32:12,150 Поплавок значення з плаваючою точкою, і це тільки фантазії 776 00:32:12,150 --> 00:32:14,470 спосіб сказати, що дійсне число - те, що має десяткову 777 00:32:14,470 --> 00:32:17,410 точка в ньому з деяким числа зліва і / або праворуч. 778 00:32:17,410 --> 00:32:21,370 Int є цілим числом, яке є просто число, наприклад 123. 779 00:32:21,370 --> 00:32:24,170 А тепер ще цікавіше такі речі, як подвійні. 780 00:32:24,170 --> 00:32:28,540 Що ми говоримо подвійного було в останній раз? 781 00:32:28,540 --> 00:32:30,050 Це 64, праворуч. 782 00:32:30,050 --> 00:32:33,560 Таким чином, у той час як зазвичай обігу знаходиться 32-розрядний - 783 00:32:33,560 --> 00:32:37,340 так що це довго в пам'яті, вона використовує 32 нулів і одиниць в 784 00:32:37,340 --> 00:32:40,530 представляти значення - подвійний буквально в два рази, що 785 00:32:40,530 --> 00:32:43,810 означає, що ви можете представляти великі числа, або 786 00:32:43,810 --> 00:32:45,810 Ви можете уявити більш точні цифри. 787 00:32:45,810 --> 00:32:48,690 Таким чином, ви можете мати більше цифри після десяткової крапки, але 788 00:32:48,690 --> 00:32:51,520 як хлопець сказав у відео, навіть щось просте 789 00:32:51,520 --> 00:32:55,360 Концептуально, як 1/3 не може бути представлено саме 790 00:32:55,360 --> 00:32:58,330 комп'ютер, тому що в кінцевому підсумку ви біжите з бітів, і 791 00:32:58,330 --> 00:33:02,510 Тому ви можете зробити тільки .33333333 так багато разів, в 792 00:33:02,510 --> 00:33:05,050 який момент ви просто повинні сказати, що я з вистави 793 00:33:05,050 --> 00:33:08,120 просторі, я повинен назвати його просто день і представляти її 794 00:33:08,120 --> 00:33:10,200 дещо неточно подобається. 795 00:33:10,200 --> 00:33:11,110 І довго довго - 796 00:33:11,110 --> 00:33:13,880 дурне ім'я, але це тому, що є тип даних, відомий як 797 00:33:13,880 --> 00:33:19,350 довго в С, який випадково часто 32 біт, так само, як 798 00:33:19,350 --> 00:33:21,670 Int становить 32 біта, але довго довго 799 00:33:21,670 --> 00:33:23,560 зазвичай 64 біт. 800 00:33:23,560 --> 00:33:25,740 Так що це просто означає, що ви можете представляти велику 801 00:33:25,740 --> 00:33:26,990 кількості, ніж це. 802 00:33:26,990 --> 00:33:27,410 >> Добре. 803 00:33:27,410 --> 00:33:29,390 Так що, якщо ми дійсно хочемо, щоб почати представляють речі, ми 804 00:33:29,390 --> 00:33:31,030 може знадобитися більш складні типи, і 805 00:33:31,030 --> 00:33:32,340 Ось чому ми маємо рядок. 806 00:33:32,340 --> 00:33:36,450 Таким чином, в бібліотеці CS50, що файл з ім'ям cs50.h, ми 807 00:33:36,450 --> 00:33:41,110 фактично оголошений тип даних, так би мовити, називається рядком, 808 00:33:41,110 --> 00:33:42,710 але рядок не існує. 809 00:33:42,710 --> 00:33:44,780 Це, знову ж таки, один з цих верств ми збираємося чистити 810 00:33:44,780 --> 00:33:47,490 через тиждень або два, і викинути, а насправді 811 00:33:47,490 --> 00:33:49,640 дивитися під капотом на те, що рядок насправді, і 812 00:33:49,640 --> 00:33:50,840 як це представляється. 813 00:33:50,840 --> 00:33:53,520 Ми також будемо дивитися на логічних значень. 814 00:33:53,520 --> 00:33:56,040 >> Так що ж логічне в контексті нуля? 815 00:33:59,154 --> 00:34:00,300 Це правда чи брехня. 816 00:34:00,300 --> 00:34:03,900 Так що це просто значення, правда це чи брехня, або вимкнути, 1 або 817 00:34:03,900 --> 00:34:06,140 0, однак, ви хочете, щоб побачити світ. 818 00:34:06,140 --> 00:34:09,739 Таким чином, в C, завдяки CS50 бібліотека, яка в свою чергу 819 00:34:09,739 --> 00:34:12,179 включає в себе іншу бібліотеку під капотом, у нас є 820 00:34:12,179 --> 00:34:14,909 доступ до даних типу, який називається логічний, який буде 821 00:34:14,909 --> 00:34:18,730 буквально дозволяє нам привласнити значення істина чи брехня в 822 00:34:18,730 --> 00:34:20,219 речі в програмі. 823 00:34:20,219 --> 00:34:23,880 >> Так що давайте йти вперед тут і написати невелику програму, яка 824 00:34:23,880 --> 00:34:26,330 щось робить за участю номери замість. 825 00:34:26,330 --> 00:34:29,840 Отже, дозвольте мені повернутися до CS50 Appliance, дозвольте мені йти вперед і 826 00:34:29,840 --> 00:34:32,770 створити новий файл тут називають - 827 00:34:32,770 --> 00:34:35,460 Давайте просто скажемо, щось просте, як math.c. 828 00:34:38,270 --> 00:34:38,710 Добре. 829 00:34:38,710 --> 00:34:41,600 А тепер підійдіть до верхньої частини моїй програмі, я 830 00:34:41,600 --> 00:34:42,510 збираюся робити звичайні - 831 00:34:42,510 --> 00:34:44,780 # Включити , так що я можу використовувати 832 00:34:44,780 --> 00:34:46,860 Printf, Int основних (недійсними) - 833 00:34:46,860 --> 00:34:49,270 Ми повернемося до, врешті-решт, те, що Int означає, 834 00:34:49,270 --> 00:34:52,389 тут, що порожнеча означає тут, але зараз, просто знаю, що 835 00:34:52,389 --> 00:34:54,270 Ви повинні почати подібні програми. 836 00:34:54,270 --> 00:34:56,280 Тепер я збираюся йти вперед і сказати що-небудь 837 00:34:56,280 --> 00:35:02,110 інша - Е ("Дай мені номер:" 838 00:35:02,110 --> 00:35:03,570 ). 839 00:35:03,570 --> 00:35:09,220 Тоді я буду робити Int N = GetInt, тому що вона 840 00:35:09,220 --> 00:35:12,770 виявляється GetInt інша функція в бібліотеці CS50 841 00:35:12,770 --> 00:35:14,060 Крім того GetString. 842 00:35:14,060 --> 00:35:17,340 А зараз я збираюся зробити щось дурне, як "спасибі 843 00:35:17,340 --> 00:35:25,760 для% D ", для десяткове число, а потім кома п, 844 00:35:25,760 --> 00:35:26,620 Потім повертається 0. 845 00:35:26,620 --> 00:35:28,940 Таким чином, знову повертається 0 не має нічого спільного з числом я 846 00:35:28,940 --> 00:35:30,080 запросити у користувача. 847 00:35:30,080 --> 00:35:33,620 Просто означає, врешті, що всі, мабуть, добре. 848 00:35:33,620 --> 00:35:36,290 >> Отже, дозвольте мені зійти у вікні терміналу тут. 849 00:35:36,290 --> 00:35:39,590 Дозвольте мені ввести зробити математику, введіть. 850 00:35:39,590 --> 00:35:41,360 І щось не так. 851 00:35:41,360 --> 00:35:44,620 Зробити математика не працює. 852 00:35:44,620 --> 00:35:46,170 Ось перший з наших повідомлень про помилки. 853 00:35:46,170 --> 00:35:46,570 Чому? 854 00:35:46,570 --> 00:35:49,720 Трохи загадковим, але - 855 00:35:49,720 --> 00:35:50,060 Так. 856 00:35:50,060 --> 00:35:51,240 Так cs50.h. 857 00:35:51,240 --> 00:35:53,900 Отже, ще раз, особливо на ранній стадії, ви будете писати ваш перший 858 00:35:53,900 --> 00:35:56,590 Програма для PSET 1 в секції, в робочий час, і 859 00:35:56,590 --> 00:35:59,050 чесно кажучи, це буде переважною іноді те, що ці речі 860 00:35:59,050 --> 00:36:00,000 насправді говорять. 861 00:36:00,000 --> 00:36:01,890 Але ви зрозумієте, дуже швидко вони починають падати 862 00:36:01,890 --> 00:36:06,120 у відра якої ця означає, що ви залишили від одного 863 00:36:06,120 --> 00:36:08,290 з # включає в верхній частині файлу. 864 00:36:08,290 --> 00:36:10,960 І Clang, компілятор, інформує Вас про це по 865 00:36:10,960 --> 00:36:14,090 говорив, а химерно, неявне оголошення 866 00:36:14,090 --> 00:36:15,990 Функція GetInt є недійсним. 867 00:36:15,990 --> 00:36:16,310 >> Добре. 868 00:36:16,310 --> 00:36:17,520 Так що ж це значить? 869 00:36:17,520 --> 00:36:22,080 Це просто означає, що ви неявно оголошені в GetInt 870 00:36:22,080 --> 00:36:24,850 тому сенсі, що ви явно не оголошена. 871 00:36:24,850 --> 00:36:27,300 Для заявляємо, INT, ви повинні вчити 872 00:36:27,300 --> 00:36:28,740 Clang, що вона існує. 873 00:36:28,740 --> 00:36:32,020 І дуже просте рішення для того, щоб навчити його, 874 00:36:32,020 --> 00:36:34,780 в тому числі це інший файл, cs50.h, в 875 00:36:34,780 --> 00:36:35,850 у верхній частині файлу. 876 00:36:35,850 --> 00:36:40,380 Тому що буквально те, що # включити Чи це говорить Clang 877 00:36:40,380 --> 00:36:44,030 в значній мірі, щоб піти знайти файл з ім'ям cs50.h, копіювати, 878 00:36:44,030 --> 00:36:48,150 вставте його автоматично в верхній частині моєї програмі для мене, 879 00:36:48,150 --> 00:36:50,850 , А потім перетворити вихідний код нулів і одиниць. 880 00:36:50,850 --> 00:36:52,850 Але це, очевидно, буде дуже утомливо, якщо ми, люди, були 881 00:36:52,850 --> 00:36:55,370 йти копіювання і вставки цих великих файлів весь час, 882 00:36:55,370 --> 00:36:58,540 # Включити так просто робить все, що автоматично, без 883 00:36:58,540 --> 00:37:01,550 каламутить мій код з чужою бібліотеки. 884 00:37:01,550 --> 00:37:06,370 А бібліотека це просто ще один файл, що містить функції та 885 00:37:06,370 --> 00:37:08,340 інші речі, які хтось написав, що ми 886 00:37:08,340 --> 00:37:10,270 Використовуючи для нашого власного блага. 887 00:37:10,270 --> 00:37:10,580 >> Добре. 888 00:37:10,580 --> 00:37:11,200 Давайте спробуємо ще раз. 889 00:37:11,200 --> 00:37:12,250 Зробіть математику. 890 00:37:12,250 --> 00:37:13,120 Enter. 891 00:37:13,120 --> 00:37:13,530 Добре. 892 00:37:13,530 --> 00:37:14,880 Так що, схоже, працював. 893 00:37:14,880 --> 00:37:18,330 Отже, дозвольте мені тепер працювати математики; /. Математиці. 894 00:37:18,330 --> 00:37:21,100 Введіть дає мені номер 123. 895 00:37:21,100 --> 00:37:22,620 Спасибі за 123. 896 00:37:22,620 --> 00:37:24,490 Тепер давайте спробуємо інший кут випадок. 897 00:37:24,490 --> 00:37:26,530 Рядок досить щедрий, тому що 898 00:37:26,530 --> 00:37:27,620 Рядок може бути що завгодно. 899 00:37:27,620 --> 00:37:28,910 Може виглядати цифри, виглядати 900 00:37:28,910 --> 00:37:30,600 символи, схожі на слова. 901 00:37:30,600 --> 00:37:31,900 Але це Int Int. 902 00:37:31,900 --> 00:37:34,370 Так що тепер, якщо я важко користувачів, і вона говорить "Дай мені 903 00:37:34,370 --> 00:37:38,730 число, "що, якщо я намагаюся зробити щось подібне 0,1? 904 00:37:38,730 --> 00:37:41,510 Ну, це число, і це узгоджується з 905 00:37:41,510 --> 00:37:44,180 граматику я тут, але під капотом, я з 906 00:37:44,180 --> 00:37:45,610 Звичайно, використовуючи функцію GetInt. 907 00:37:45,610 --> 00:37:46,610 >> Отже, давайте подивимося, що станеться. 908 00:37:46,610 --> 00:37:48,250 Введіть, повторіть спробу. 909 00:37:48,250 --> 00:37:48,560 Добре. 910 00:37:48,560 --> 00:37:50,570 Дозвольте мені бути складно і просто натисніть Enter ще раз. 911 00:37:50,570 --> 00:37:51,700 Enter, Enter. 912 00:37:51,700 --> 00:37:53,890 Так що тепер здається, що GetInt трохи більше 913 00:37:53,890 --> 00:37:55,240 могутніше, ніж GetString. 914 00:37:55,240 --> 00:37:58,540 Ми, співробітники, реалізований таким чином, що якщо ми помічаємо, 915 00:37:58,540 --> 00:38:02,100 Ви не дали нам Int - і Int є десяткове число 916 00:38:02,100 --> 00:38:04,785 містять нулів, одиниць, двійок, трійок, четвірок, п'ятірок, шестірок, 917 00:38:04,785 --> 00:38:05,540 сімок, вісімок або дев'яток. 918 00:38:05,540 --> 00:38:06,310 І це все. 919 00:38:06,310 --> 00:38:08,810 Немає знаків після коми, не символи, не розділові знаки. 920 00:38:08,810 --> 00:38:10,390 Здається, що ми повинні співпрацювати. 921 00:38:10,390 --> 00:38:13,680 Отже, дозвольте мені спробувати чотири, п'ять, шість, і це допомагає мені. 922 00:38:13,680 --> 00:38:16,760 Таким чином, дійсно, бути анальний тут, я, ймовірно, слід сказати: "Дайте мені 923 00:38:16,760 --> 00:38:20,310 число "для того, щоб донести до користувачів 924 00:38:20,310 --> 00:38:22,620 саме те, що я маю намір. 925 00:38:22,620 --> 00:38:24,090 >> Тепер давайте подумаємо, під капотом. 926 00:38:24,090 --> 00:38:27,930 Ми не збираємося подивитися, як cs50.h реалізується сьогодні, 927 00:38:27,930 --> 00:38:29,080 цієї бібліотеки. 928 00:38:29,080 --> 00:38:33,600 Але якщо він продовжує говорити повтор, повтор, повтор, що програмування 929 00:38:33,600 --> 00:38:36,970 Побудуємо я імовірно використання під капотом, щоб 930 00:38:36,970 --> 00:38:39,000 здійснення цього? 931 00:38:39,000 --> 00:38:39,980 Так що просто цикл, чи не так? 932 00:38:39,980 --> 00:38:41,930 Один з найпростіших ідей, які ми бачили на Scratch. 933 00:38:41,930 --> 00:38:45,050 Назавжди побудувати, повтор побудувати. 934 00:38:45,050 --> 00:38:47,320 Імовірно, в цю програму, під капотом, навіть 935 00:38:47,320 --> 00:38:49,470 хоча вона написана на C, а не нуля, він робить 936 00:38:49,470 --> 00:38:54,300 те, що називається еквівалентною назавжди, якщо користувач не має 937 00:38:54,300 --> 00:38:58,710 набрав у ціле число, скажімо, спробувати ще раз, повторити, повторити, повторити, так 938 00:38:58,710 --> 00:39:01,220 Потім, нарешті, коли ми отримаємо ціле, то ви 939 00:39:01,220 --> 00:39:02,970 вирватися з цього циклу. 940 00:39:02,970 --> 00:39:05,610 >> Так що ж інші функції ми можемо використовувати тут, в бібліотеці CS50 в? 941 00:39:05,610 --> 00:39:07,880 Ну, начебто очевидні, принаймні на основі 942 00:39:07,880 --> 00:39:09,570 типи даних, які ми тепер знаємо, існують. 943 00:39:09,570 --> 00:39:12,900 Ми реалізували GetString, GetInt, але і у всьому 944 00:39:12,900 --> 00:39:15,680 Перші тижні терміну, ви також можете використовувати GetFloat і 945 00:39:15,680 --> 00:39:18,870 GetDouble і GetLongLong того, щоб отримати саме 946 00:39:18,870 --> 00:39:20,030 типи даних, які ви хочете. 947 00:39:20,030 --> 00:39:24,030 Оскільки ключовою деталлю є те, що на відміну від деяких мов, 948 00:39:24,030 --> 00:39:26,630 як Python і Ruby, де ви не обов'язково повинні 949 00:39:26,630 --> 00:39:29,730 оголошувати тип даних змінної - 950 00:39:29,730 --> 00:39:32,390 Вам не потрібно говорити комп'ютеру, який матеріал 951 00:39:32,390 --> 00:39:34,000 Ви збираєтеся помістити в змінну - 952 00:39:34,000 --> 00:39:36,640 У C, ви повинні бути дуже точним. 953 00:39:36,640 --> 00:39:40,060 Тому якщо ви хочете змінна п, шматок зберігання 954 00:39:40,060 --> 00:39:42,900 що в цьому випадку відбувається з 32 бітами відповідно до угоди, Ви 955 00:39:42,900 --> 00:39:45,660 повинні повідомити комп'ютера, що ці біти 956 00:39:45,660 --> 00:39:47,840 збираєтеся зберігати номер - 957 00:39:47,840 --> 00:39:50,630 Не характер, а не рядком, а не з плаваючою крапкою. 958 00:39:50,630 --> 00:39:52,620 І це вирішує проблему, ми ефективно 959 00:39:52,620 --> 00:39:53,760 зіткнувся минулого тижня. 960 00:39:53,760 --> 00:39:57,050 Якщо ми використовуємо нулів і одиниць чисел, щоб представити не тільки 961 00:39:57,050 --> 00:40:00,770 числа, але як і сніданок і Cs, як в світі 962 00:40:00,770 --> 00:40:03,460 комп'ютер буде знати, що ця картина біт насправді 963 00:40:03,460 --> 00:40:07,650 являє собою число 65, на відміну від представляє 964 00:40:07,650 --> 00:40:09,860 Лист, який випадково, у відповідності з 965 00:40:09,860 --> 00:40:13,440 ASCII, нагадаємо, була еквівалентна 65? 966 00:40:13,440 --> 00:40:16,550 >> Таким чином, ці типи даних надають контекст для комп'ютера, так 967 00:40:16,550 --> 00:40:18,810 що він знає, що якщо ці біти слід інтерпретувати як 968 00:40:18,810 --> 00:40:23,660 INT або у вигляді рядка. 969 00:40:23,660 --> 00:40:26,500 Будь-які питання, то з цього приводу? 970 00:40:26,500 --> 00:40:28,149 Так? 971 00:40:34,780 --> 00:40:35,270 David J. Малан: Хороше питання. 972 00:40:35,270 --> 00:40:39,140 Якщо ми візьмемо з stdio.h, ми зберігаємо файл - 973 00:40:39,140 --> 00:40:44,360 Дозвольте мені спуститися у вікно терміналу і запустіть зробити математику, масштабу 974 00:40:44,360 --> 00:40:45,530 В і введіть - 975 00:40:45,530 --> 00:40:47,700 Зараз я отримую іншу помилку, тому що я неявно 976 00:40:47,700 --> 00:40:49,650 оголосивши, що працювати тепер? 977 00:40:49,650 --> 00:40:50,700 Printf. 978 00:40:50,700 --> 00:40:52,970 Так що тепер я створив нові проблеми, вирішення яких 979 00:40:52,970 --> 00:40:53,890 по суті те ж саме. 980 00:40:53,890 --> 00:40:55,365 Мені потрібно поставити назад. 981 00:40:55,365 --> 00:40:56,615 АУДИТОРІЯ: [нерозбірливо] 982 00:41:03,534 --> 00:41:04,030 David J. Малан: Так. 983 00:41:04,030 --> 00:41:04,850 Так що, якщо я виймаю - 984 00:41:04,850 --> 00:41:05,360 Добре, да. 985 00:41:05,360 --> 00:41:08,960 Так що, якщо я видалю включення стандартної бібліотеки вводу / виводу в до 986 00:41:08,960 --> 00:41:12,020 тут, а потім ви говорите, якщо я можу позбутися від Printf, отримати 987 00:41:12,020 --> 00:41:13,450 позбутися Printf? 988 00:41:13,450 --> 00:41:13,810 Так. 989 00:41:13,810 --> 00:41:18,450 Це повинно працювати, тому що я більше не використовують будь - вигуки. 990 00:41:18,450 --> 00:41:20,110 Я тільки брехати? 991 00:41:20,110 --> 00:41:21,650 Ну, гаразд. 992 00:41:21,650 --> 00:41:25,640 Це не буде працювати через нову помилки ми тільки що представив. 993 00:41:25,640 --> 00:41:28,390 І це одна трохи більше пояснень. 994 00:41:28,390 --> 00:41:29,440 >> У чому проблема? 995 00:41:29,440 --> 00:41:30,680 Невживані змінні с. 996 00:41:30,680 --> 00:41:34,040 Таким чином, ця помилка є результатом того, наші налаштований 997 00:41:34,040 --> 00:41:36,640 Прилад бути особливо педантичним, щоб дійсно кричати на 998 00:41:36,640 --> 00:41:39,060 Ви для кожної можливої ​​помилки, навіть якщо це частково 999 00:41:39,060 --> 00:41:41,950 не-рокову помилку, як це - чи дійсно це така велика 1000 00:41:41,950 --> 00:41:44,820 справа, що я виділив INT, поставив ряд у ньому, а потім 1001 00:41:44,820 --> 00:41:46,030 просто нічого не робили з ним? 1002 00:41:46,030 --> 00:41:47,020 Таким чином, функціонально, немає. 1003 00:41:47,020 --> 00:41:50,410 Це не зламає програму. 1004 00:41:50,410 --> 00:41:51,490 Це просто якась дурна, так? 1005 00:41:51,490 --> 00:41:54,220 Існує ніякої цінності для попросивши для цього номера, збережені 1006 00:41:54,220 --> 00:41:56,370 його в змінну, якщо ви ніколи не збирався робити нічого 1007 00:41:56,370 --> 00:41:58,000 з ним, будь то роздрукувати його або зберегти його. 1008 00:41:58,000 --> 00:42:00,270 Таким чином, в даному випадку, Clang визнає, стільки ж, а 1009 00:42:00,270 --> 00:42:02,010 це говорить невикористаних змінних п. 1010 00:42:02,010 --> 00:42:05,380 >> Таким чином, ми можемо виправити це, якщо ми дійсно хочемо. 1011 00:42:05,380 --> 00:42:07,250 Але знову ж таки, це не добре програмування зараз. 1012 00:42:07,250 --> 00:42:09,310 Так що я просто міг цього зробити - 1013 00:42:09,310 --> 00:42:12,060 Спустіться тут, дозвольте мені очистити екран, зробити математику. 1014 00:42:12,060 --> 00:42:13,090 Це працює. 1015 00:42:13,090 --> 00:42:18,110 Тепер я можу запустити мою програму математику, приймає вхід - 1016 00:42:18,110 --> 00:42:18,700 добре, що було погано. 1017 00:42:18,700 --> 00:42:23,450 Приймає вхід, і це все, що він робить, і в цьому випадку. 1018 00:42:23,450 --> 00:42:25,220 >> Таким чином, насправді, давайте спробуємо ще один випадок кутку, що ми 1019 00:42:25,220 --> 00:42:26,300 не думаю раніше. 1020 00:42:26,300 --> 00:42:28,220 В даному випадку - тут, давайте повернемося до того, що це 1021 00:42:28,220 --> 00:42:29,500 трохи більш зручним. 1022 00:42:29,500 --> 00:42:32,580 Дозвольте мені повернутися сюди і зробити математику запустити знову. 1023 00:42:32,580 --> 00:42:34,190 Ой, що ж я зробив не так? 1024 00:42:34,190 --> 00:42:35,400 Добрався, щоб повернутися в подальшому. 1025 00:42:35,400 --> 00:42:36,390 Добре. 1026 00:42:36,390 --> 00:42:38,490 Тепер ми повернулися в початковий стан, в якому всі 1027 00:42:38,490 --> 00:42:39,990 ми сподіваємося добре. 1028 00:42:39,990 --> 00:42:43,360 І тепер, якщо я біжу математиці, 123, здається, працює. 1029 00:42:43,360 --> 00:42:46,010 Але це не дуже ефективний докази, щоб просто сказати 1030 00:42:46,010 --> 00:42:47,930 Добре, що працює. 1031 00:42:47,930 --> 00:42:49,120 789, яка працює. 1032 00:42:49,120 --> 00:42:50,100 Час представити. 1033 00:42:50,100 --> 00:42:51,870 Тому що є інші випадки кута тут. 1034 00:42:51,870 --> 00:42:55,040 Рядок дійсно не дають нам багато неприємностей, ввівши в 1035 00:42:55,040 --> 00:42:56,510 багато символів. 1036 00:42:56,510 --> 00:42:59,580 Але що, якщо я набираю в цьому? 1037 00:42:59,580 --> 00:43:04,850 Удар № 1 багато, багато тут - 1038 00:43:04,850 --> 00:43:06,300 Все в порядку, це стає трохи нудно, тому я збираюся 1039 00:43:06,300 --> 00:43:10,040 зупиніться тут, і я вдарю Enter. 1040 00:43:10,040 --> 00:43:11,290 >> Якого біса це було? 1041 00:43:14,110 --> 00:43:17,680 Так що це дійсно може бути пояснено. 1042 00:43:17,680 --> 00:43:18,920 Так що ж це взяти його в двійковому вигляді? 1043 00:43:18,920 --> 00:43:21,130 Хороша думка, але ні, це не те, що він узяв його 1044 00:43:21,130 --> 00:43:22,815 в двійковому вигляді, тому що, дійсно, це була просто якась 1045 00:43:22,815 --> 00:43:23,080 збігом. 1046 00:43:23,080 --> 00:43:23,930 Ми можемо зробити це знову. 1047 00:43:23,930 --> 00:43:26,530 Так що № 2 в двійковій системі, це 1048 00:43:26,530 --> 00:43:27,420 ймовірно, досить у будь-якому випадку. 1049 00:43:27,420 --> 00:43:28,780 Enter. 1050 00:43:28,780 --> 00:43:30,140 Так що це не проблема. 1051 00:43:30,140 --> 00:43:31,390 Що ще? 1052 00:43:34,650 --> 00:43:35,400 Саме так. 1053 00:43:35,400 --> 00:43:37,830 >> Так що думаю до того, що Int насправді. 1054 00:43:37,830 --> 00:43:40,970 Це 32 біт, які в сукупності інтерпретується 1055 00:43:40,970 --> 00:43:42,090 як число. 1056 00:43:42,090 --> 00:43:44,730 Якщо у вас є 32 біт, це означає, що кожен з бітів може бути 1057 00:43:44,730 --> 00:43:46,690 0 або 1, 0 або 1. 1058 00:43:46,690 --> 00:43:49,090 Значить, є дві можливості для цього небагато, 1059 00:43:49,090 --> 00:43:51,140 дві можливості для цього дві можливості для цього 1060 00:43:51,140 --> 00:43:52,570 небагато - так що в 2 рази 2 рази - 1061 00:43:52,570 --> 00:43:55,480 так що це від 2 до 32 харчування від загального числа 1062 00:43:55,480 --> 00:43:58,960 перестановок з нулів і одиниць, якщо у вас є 32 1063 00:43:58,960 --> 00:44:01,400 заповнювачів, нулів або одиниць, перед вами. 1064 00:44:01,400 --> 00:44:04,250 Так що, якщо у мене є 2 до 32, математично, це що? 1065 00:44:07,080 --> 00:44:07,840 Так що це дуже багато. 1066 00:44:07,840 --> 00:44:09,910 Це 4 млрд, плюс-мінус. 1067 00:44:09,910 --> 00:44:13,510 І 4 млрд не здається, те, що було надруковано тут. 1068 00:44:13,510 --> 00:44:16,290 Насправді, це виглядає ближче до 2 млрд. доларів. 1069 00:44:16,290 --> 00:44:17,970 Але і це не випадково. 1070 00:44:17,970 --> 00:44:21,590 Справа в тому, що комп'ютер неправильно моє величезна кількість, 1071 00:44:21,590 --> 00:44:24,260 мій величезний послідовності, а потім і моя величезна послідовність двоє, 1072 00:44:24,260 --> 00:44:26,880 як приблизно 2 мільярди, пояснюється як? 1073 00:44:30,250 --> 00:44:32,180 Там є кришка на Int. 1074 00:44:32,180 --> 00:44:34,970 Там є, звичайно, максимальне значення, яке можна уявити. 1075 00:44:34,970 --> 00:44:36,370 Але це, як правило, 4 млрд, чи не так? 1076 00:44:36,370 --> 00:44:39,100 Якщо від 2 до 32, приблизно в 4 мільярди доларів, що здається 1077 00:44:39,100 --> 00:44:40,350 це найбільше число. 1078 00:44:42,420 --> 00:44:45,240 Так що не останні, але гарна думка. 1079 00:44:45,240 --> 00:44:46,340 Негативні числа. 1080 00:44:46,340 --> 00:44:49,570 Так що якщо у вас є 4 мільярдів можливих речей, які ви можете 1081 00:44:49,570 --> 00:44:52,970 представляють ці різні перестановки з 32 0 і 1082 00:44:52,970 --> 00:44:55,600 1s, ну, само собою зрозуміло, що ми, люди, можливо, захочете 1083 00:44:55,600 --> 00:44:57,110 являють собою не тільки позитивні цілі числа 1084 00:44:57,110 --> 00:44:58,240 але негативні цілі числа. 1085 00:44:58,240 --> 00:45:00,410 І справді, це припущення, що C робить. 1086 00:45:00,410 --> 00:45:03,550 Таким чином, з 32 бітами, можна представити приблизно негативний 2 1087 00:45:03,550 --> 00:45:06,630 млрд. весь шлях до позитивного 2 мільярди доларів. 1088 00:45:06,630 --> 00:45:08,750 І тому в даному випадку, те, що ми дійсно бачимо, це просто 1089 00:45:08,750 --> 00:45:13,600 бахрома здатність нашого цілого, і в нас є, так що 1090 00:45:13,600 --> 00:45:15,860 сказати, переповнені ціле. 1091 00:45:15,860 --> 00:45:19,180 Ми спробували втиснути більше бітів в ньому, чим може насправді підходить. 1092 00:45:19,180 --> 00:45:22,960 Таким чином, кінцевий результат нас по суті є всі 1 біт. 1093 00:45:22,960 --> 00:45:25,280 Ми перевернув всі наші біти, ми намагалися представити 1094 00:45:25,280 --> 00:45:27,630 Найбільша кількість можливих, але це явно не майже 1095 00:45:27,630 --> 00:45:30,960 досить великий, щоб представляти дві речі, які я тільки що ввели дюйма 1096 00:45:30,960 --> 00:45:31,730 Так? 1097 00:45:31,730 --> 00:45:32,980 АУДИТОРІЯ: [нерозбірливо] 1098 00:45:37,230 --> 00:45:37,830 >> David J. Малан: Хороше питання. 1099 00:45:37,830 --> 00:45:40,080 Чому ми не можемо просто уявляти, що негативні 1100 00:45:40,080 --> 00:45:41,500 підписати, як тільки персонаж? 1101 00:45:41,500 --> 00:45:44,200 Таким чином, ми абсолютно міг, і ми могли б зберегти 1102 00:45:44,200 --> 00:45:45,470 додаткових біт. 1103 00:45:45,470 --> 00:45:49,100 Але ви як і раніше будете мати, щоб уявляти, що тире і 1104 00:45:49,100 --> 00:45:50,700 що буде коштувати вам хоч щось, 1105 00:45:50,700 --> 00:45:52,220 Імовірно небагато. 1106 00:45:52,220 --> 00:45:55,610 Так що, так, ми могли б мати 32 біт, що використовуються для нашого номера, але тепер 1107 00:45:55,610 --> 00:45:57,610 нам потрібен ще трохи для наших тире 1108 00:45:57,610 --> 00:45:58,810 символ, знак мінус. 1109 00:45:58,810 --> 00:46:01,470 Так що тепер у нас 33 бітні значення, які ми могли б зробити, але це 1110 00:46:01,470 --> 00:46:02,570 тільки не так, як це робиться. 1111 00:46:02,570 --> 00:46:05,140 Ми зробили дзвінок судження років тому, 32 біт є свого роду 1112 00:46:05,140 --> 00:46:06,170 Одиницею виміру тут. 1113 00:46:06,170 --> 00:46:08,120 Так що ми збираємося використовувати один з цих бітів ефективно 1114 00:46:08,120 --> 00:46:12,950 представляють негативу, і 31 біт для представлення числа. 1115 00:46:12,950 --> 00:46:15,550 Інші питання? 1116 00:46:15,550 --> 00:46:15,670 Добре. 1117 00:46:15,670 --> 00:46:16,030 Це дуже багато. 1118 00:46:16,030 --> 00:46:17,930 Чому б нам не піти далі і взяти наші п'ятихвилинну перерву тут? 1119 00:46:23,580 --> 00:46:24,270 >> Добре. 1120 00:46:24,270 --> 00:46:31,250 Отже, ще раз, щоб не переоцінити математичних додатків 1121 00:46:31,250 --> 00:46:33,840 програмування, давайте просто обривати цей приклад 1122 00:46:33,840 --> 00:46:36,590 перш ніж ми перейдемо до інших конструкцій, тільки тому, що 1123 00:46:36,590 --> 00:46:39,430 Проілюструємо кілька загальних каменем точок на деяких з 1124 00:46:39,430 --> 00:46:41,520 Основи коли справа доходить до написання програм. 1125 00:46:41,520 --> 00:46:44,360 У цьому випадку, робити арифметичні вирази, які мають деякі 1126 00:46:44,360 --> 00:46:48,010 цікаве ставлення до синтаксису. 1127 00:46:48,010 --> 00:46:50,430 >> Так що це просто формула, з якою ми можемо перетворити 1128 00:46:50,430 --> 00:46:52,690 температури за шкалою Фаренгейта в градуси Цельсія. 1129 00:46:52,690 --> 00:46:54,600 Якщо ви не пам'ятаєте, це всього лише формула. 1130 00:46:54,600 --> 00:46:58,870 Тому, якщо ми підключити за Фаренгейтом значення 32 градусів, що 1131 00:46:58,870 --> 00:47:02,850 заморожування, що це буде 32 мінус 32 дорівнює 0, і, дійсно, 1132 00:47:02,850 --> 00:47:05,130 0 в Цельсія також заморожування. 1133 00:47:05,130 --> 00:47:08,210 Так швидко перевірити осудність є - це відома формула. 1134 00:47:08,210 --> 00:47:10,880 Дозвольте мені перейти до приладу, хоч і почати 1135 00:47:10,880 --> 00:47:13,920 написання програми під назвою, як, f2c; "Фаренгейта в 1136 00:47:13,920 --> 00:47:15,920 Цельсія точка C ". 1137 00:47:15,920 --> 00:47:18,930 А нагорі тут, я збираюся почати з # включити 1138 00:47:18,930 --> 00:47:22,190 stdio.h, і я збираюся зробити Int основних (недійсними), а 1139 00:47:22,190 --> 00:47:24,680 Знову ж таки, ми повернемося в майбутньому до того, що Int означає, 1140 00:47:24,680 --> 00:47:26,820 там і що порожнеча означає, що є. 1141 00:47:26,820 --> 00:47:28,770 А тепер дозвольте мені піти далі і реалізувати програми, які 1142 00:47:28,770 --> 00:47:31,170 по суті робить це перетворення для нас. 1143 00:47:31,170 --> 00:47:36,830 >> Так Printf, скажімо, температуру в градусах за Фаренгейтом. 1144 00:47:36,830 --> 00:47:40,140 І то дозвольте мені йти вперед і отримати значення від користувача. 1145 00:47:40,140 --> 00:47:43,120 Яке значення я повинен отримати від користувача, якщо я хочу 1146 00:47:43,120 --> 00:47:45,620 їх дати мені температуру в градусах за Фаренгейтом? 1147 00:47:45,620 --> 00:47:48,090 Так? 1148 00:47:48,090 --> 00:47:50,090 Що ви могли б запропонувати? 1149 00:47:50,090 --> 00:47:50,410 Так. 1150 00:47:50,410 --> 00:47:51,960 Таким чином, поплавець відчуває себе досить розумно. 1151 00:47:51,960 --> 00:47:53,950 У нас є, знову ж таки, тільки кілька варіантів, які 1152 00:47:53,950 --> 00:47:55,310 ми бачили дотепер. 1153 00:47:55,310 --> 00:48:00,100 У нас є такі речі, як символ, двомісний, з плаваючою точкою, INT, довго довго, 1154 00:48:00,100 --> 00:48:01,150 BOOL, рядок. 1155 00:48:01,150 --> 00:48:03,510 Таким чином, ці, плавати відчуває себе досить розумно. 1156 00:48:03,510 --> 00:48:06,340 Ми могли б використовувати подвійні, правильно, тому що, якщо ми дійсно хочемо 1157 00:48:06,340 --> 00:48:07,580 представляють температурі людського автора - 1158 00:48:07,580 --> 00:48:10,730 98,60000 - 1159 00:48:10,730 --> 00:48:12,990 ми могли б використати 64 біта, щоб зробити це, але він відчуває, як 1160 00:48:12,990 --> 00:48:14,200 надлишкова для температури. 1161 00:48:14,200 --> 00:48:16,380 Так що давайте просто піти з плаваючою крапкою. 1162 00:48:16,380 --> 00:48:18,100 Тепер мені потрібно змінної. 1163 00:48:18,100 --> 00:48:20,500 Просто, щоб не ускладнювати, я буду називати його F, але я 1164 00:48:20,500 --> 00:48:23,370 може просто як правильно називати це температура, 1165 00:48:23,370 --> 00:48:24,600 але в будь-якому порядку. 1166 00:48:24,600 --> 00:48:27,610 Отже плавати F = GetFloat. 1167 00:48:27,610 --> 00:48:30,220 Як тільки я тепер вирішили використовувати GetFloat, хоча, я 1168 00:48:30,220 --> 00:48:33,340 необхідно зробити одне уточнення. 1169 00:48:33,340 --> 00:48:33,720 Так. 1170 00:48:33,720 --> 00:48:37,460 Так що ми повинні # включити , в іншому випадку компілятор 1171 00:48:37,460 --> 00:48:39,000 збираюся кричати на нас. 1172 00:48:39,000 --> 00:48:41,720 Тепер у мене є поплавець, дозвольте мені йти вперед і робити 1173 00:48:41,720 --> 00:48:42,460 перетворення. 1174 00:48:42,460 --> 00:48:44,980 >> Отже, по-перше, дозвольте мені увійти у звичку тут 1175 00:48:44,980 --> 00:48:46,310 Коментуючи свій код. 1176 00:48:46,310 --> 00:48:49,820 Отже, ще раз, коментар це просто позначення для людини це 1177 00:48:49,820 --> 00:48:52,600 не входить в програму такої, але він один, допоможе вам 1178 00:48:52,600 --> 00:48:55,010 розумію, що ви зробили наступний ранок, або на наступний 1179 00:48:55,010 --> 00:48:57,570 місяць, це допомагає викладання хлопець зрозумів, що ви зробили 1180 00:48:57,570 --> 00:48:59,230 або те, що ви мали намір зробити, так це 1181 00:48:59,230 --> 00:49:00,950 як правило, дуже хороша практика. 1182 00:49:00,950 --> 00:49:02,940 Кожні кілька рядків коду, написати коментар до 1183 00:49:02,940 --> 00:49:04,490 себе або своїх колег. 1184 00:49:04,490 --> 00:49:08,460 Так от, я хочу сказати: "Запитайте у користувача температурі". 1185 00:49:08,460 --> 00:49:10,890 Не повинно бути повне пропозицію, тільки коротка фраза. 1186 00:49:10,890 --> 00:49:14,270 Але ідея коментуючи в C є те, що кожен з ваших 1187 00:49:14,270 --> 00:49:17,980 Коментарі повинні дати вам сили - або, скажімо, TF або колега - 1188 00:49:17,980 --> 00:49:21,290 ковзати вашою програмою і точно знати, що він робить, не 1189 00:49:21,290 --> 00:49:24,650 стільки читанням коду, але, прочитавши коментарі, які 1190 00:49:24,650 --> 00:49:26,220 повинні бути короткими і ясними. 1191 00:49:26,220 --> 00:49:29,030 Гаразд, тепер дозвольте мені йти вперед і сказати: "Перетворення 1192 00:49:29,030 --> 00:49:32,660 Фаренгейта в градуси Цельсія ". Таким чином, я збираюся йти вперед і робити, 1193 00:49:32,660 --> 00:49:34,340 скажімо, плавати в. 1194 00:49:34,340 --> 00:49:36,610 Ми будемо тримати Цельсія як значення з плаваючою точкою. 1195 00:49:36,610 --> 00:49:37,630 >> І дозвольте мені прийняти удар на цьому. 1196 00:49:37,630 --> 00:49:40,350 Формула, знову ж таки, тут. 1197 00:49:40,350 --> 00:49:45,510 Як 5/9 раз F мінус 32. 1198 00:49:45,510 --> 00:49:46,360 Так давайте зробимо це. 1199 00:49:46,360 --> 00:49:50,450 Так, 5 ділиться на 9, мінус - 1200 00:49:50,450 --> 00:49:52,330 Ой, я зіпсував його вже. 1201 00:49:52,330 --> 00:49:53,070 Times. 1202 00:49:53,070 --> 00:49:56,550 Таким чином, 5/9 раз F мінус 32. 1203 00:49:56,550 --> 00:49:59,650 Таким чином, F мінус 32, крапка з комою. 1204 00:49:59,650 --> 00:50:02,000 І тепер, тут, я буду йти вперед 1205 00:50:02,000 --> 00:50:03,220 і говорять, роздрукувати результат. 1206 00:50:03,220 --> 00:50:05,160 І ця частина просто. Printf. 1207 00:50:05,160 --> 00:50:07,980 Як я можу йти про друк цього? 1208 00:50:07,980 --> 00:50:16,890 Ну, я міг сказати: "Це число в Цельсія% F \ п", 1209 00:50:16,890 --> 00:50:18,060 тільки для деяких естетики. 1210 00:50:18,060 --> 00:50:20,450 І потім, яке значення я хочу підключити тут, як у Printf 1211 00:50:20,450 --> 00:50:21,360 Другий аргумент? 1212 00:50:21,360 --> 00:50:21,650 Добре. 1213 00:50:21,650 --> 00:50:22,540 Так що просто с. 1214 00:50:22,540 --> 00:50:24,760 Отже, ми почнемо з цього, а потім просто повернути 0. 1215 00:50:24,760 --> 00:50:25,960 Знову ж таки, це не має нічого спільного з математикою. 1216 00:50:25,960 --> 00:50:27,610 Це просто означає, що все добре. 1217 00:50:27,610 --> 00:50:31,210 >> Тепер, це правильно, ця програма? 1218 00:50:31,210 --> 00:50:31,520 Добре. 1219 00:50:31,520 --> 00:50:33,630 Так що я зробив кілька помилок. 1220 00:50:33,630 --> 00:50:35,980 Навіть якщо ви не знаєте, що програмування, ви можете відсортувати 1221 00:50:35,980 --> 00:50:37,120 з виводимо назад в початковій школі, що 1222 00:50:37,120 --> 00:50:38,740 помилки тут може бути. 1223 00:50:38,740 --> 00:50:40,050 Що одним з перших? 1224 00:50:40,050 --> 00:50:41,256 АУДИТОРІЯ: [нерозбірливо] 1225 00:50:41,256 --> 00:50:41,660 David J. Малан: Так. 1226 00:50:41,660 --> 00:50:42,940 Таким чином, ми пропустили дужках. 1227 00:50:42,940 --> 00:50:45,420 Це був навмисний, що я зробив дужках в основний 1228 00:50:45,420 --> 00:50:48,130 ковзати тут, тому що там насправді це поняття порядку 1229 00:50:48,130 --> 00:50:51,590 операцій, або перевага, в результаті чого деякі операції - 1230 00:50:51,590 --> 00:50:52,890 множення - 1231 00:50:52,890 --> 00:50:56,000 мають більш високу обов'язковими, мають більш високий пріоритет, ніж речі 1232 00:50:56,000 --> 00:50:58,050 як додавання або віднімання. 1233 00:50:58,050 --> 00:51:00,550 Таким чином, ми зробили це протягом багатьох років тільки, щоб ясно точно, 1234 00:51:00,550 --> 00:51:02,840 що математичні операції повинно бути зроблено в першу чергу. 1235 00:51:02,840 --> 00:51:05,010 Так що я, ймовірно, слід наслідувати саме це. 1236 00:51:05,010 --> 00:51:08,990 В іншому випадку комп'ютер приблизно буде намагатися зробити 1237 00:51:08,990 --> 00:51:13,090 щось на зразок розриву 5 на 9, а потім помножити F, а потім відняти 1238 00:51:13,090 --> 00:51:14,850 32 з всього цього. 1239 00:51:14,850 --> 00:51:16,480 Що насправді не те, що ми хочемо зробити. 1240 00:51:16,480 --> 00:51:17,340 Так що давайте дужки. 1241 00:51:17,340 --> 00:51:20,860 Давайте додамо мій дужках тут, дужки тут. 1242 00:51:20,860 --> 00:51:22,670 Давайте поставимо це тут. 1243 00:51:22,670 --> 00:51:25,130 Ось, я тільки що помітив ще одну помилку я зробив на цьому шляху. 1244 00:51:25,130 --> 00:51:25,680 Так? 1245 00:51:25,680 --> 00:51:26,930 АУДИТОРІЯ: [нерозбірливо] 1246 00:51:29,632 --> 00:51:30,130 >> David J. Малан: Ах. 1247 00:51:30,130 --> 00:51:30,470 Добре. 1248 00:51:30,470 --> 00:51:32,400 Таким чином, ми насправді є і те ж число 1249 00:51:32,400 --> 00:51:34,020 поділ питання, ніж раніше. 1250 00:51:34,020 --> 00:51:35,800 Я виправити це, давайте подивимося, що симптом. 1251 00:51:35,800 --> 00:51:36,990 Але ми збираємося, щоб виправити одну 1252 00:51:36,990 --> 00:51:37,680 Інша помилка тут. 1253 00:51:37,680 --> 00:51:38,015 Так? 1254 00:51:38,015 --> 00:51:39,540 АУДИТОРІЯ: [нерозбірливо] 1255 00:51:39,540 --> 00:51:40,070 David J. Малан: Так. 1256 00:51:40,070 --> 00:51:43,130 Таким чином, дурні помилки я зробив, але неймовірно важливо. 1257 00:51:43,130 --> 00:51:45,870 Комп'ютер не збирається просто закривають очі, і нехай 1258 00:51:45,870 --> 00:51:48,770 мені використовувати капітал F, коли я фактично оголосив змінну 1259 00:51:48,770 --> 00:51:51,360 як рядкова е тут, у рядку 8. 1260 00:51:51,360 --> 00:51:54,470 Так що мені потрібно виправити в рядку 11 капіталізацію мій, який 1261 00:51:54,470 --> 00:51:56,820 Хвилину тому був столицею F помилково. 1262 00:51:56,820 --> 00:51:57,610 Що тут? 1263 00:51:57,610 --> 00:51:59,980 Якщо це рядкові, а? 1264 00:51:59,980 --> 00:52:02,260 Вона повинна бути, але це збіг. 1265 00:52:02,260 --> 00:52:05,070 Саме% F не має нічого спільного зі змінною. 1266 00:52:05,070 --> 00:52:07,980 Так просто, щоб бути супер ясно, дозвольте мені йти вперед і 1267 00:52:07,980 --> 00:52:10,710 перейменувати, коротше, "температура". Дозвольте мені перейменувати 1268 00:52:10,710 --> 00:52:15,050 ця "температура". Дозвольте мені не перейменувати. 1269 00:52:15,050 --> 00:52:18,180 Тому що, знову ж таки,% F глобально означає "значення з плаваючою точкою". 1270 00:52:18,180 --> 00:52:19,950 Не має нічого спільного з моїм змінної. 1271 00:52:19,950 --> 00:52:23,080 Але «температуру» по всій місце лише трохи багатослівно, 1272 00:52:23,080 --> 00:52:25,370 так що я збираюся повернутися до моєї малої літери "F" с. 1273 00:52:25,370 --> 00:52:27,890 >> Тепер, дозвольте мені йти вперед до мого вікна тут. 1274 00:52:27,890 --> 00:52:29,190 Зробити f2c - 1275 00:52:29,190 --> 00:52:31,200 який, знову ж таки, довільне ім'я, яке я 1276 00:52:31,200 --> 00:52:32,590 дали цей файл. 1277 00:52:32,590 --> 00:52:33,690 Здається, зібрали. 1278 00:52:33,690 --> 00:52:35,080 Дозвольте мені виконати f2c. 1279 00:52:35,080 --> 00:52:35,780 Enter. 1280 00:52:35,780 --> 00:52:37,786 Температура в градусах Фаренгейта - давайте робити легко. 1281 00:52:37,786 --> 00:52:39,370 32. 1282 00:52:39,370 --> 00:52:40,910 Добре, виправити. 1283 00:52:40,910 --> 00:52:45,910 Але, якщо я зараз роблю 212 для кип'ятіння - 1284 00:52:45,910 --> 00:52:46,630 блін. 1285 00:52:46,630 --> 00:52:47,030 Добре. 1286 00:52:47,030 --> 00:52:50,780 Таким чином, очевидно, не виправити, якщо ваш TF намагається 1287 00:52:50,780 --> 00:52:51,800 принаймні, два значення. 1288 00:52:51,800 --> 00:52:53,340 Так в чому ж тут проблема? 1289 00:52:53,340 --> 00:52:55,970 Ну, ви вже поклав палець на те, що проблема є. 1290 00:52:55,970 --> 00:52:57,600 Але чому це так? 1291 00:52:57,600 --> 00:53:00,630 Тут, нагорі, коли я роблю математику з 5 розділений на 9. 1292 00:53:00,630 --> 00:53:02,190 Таким чином, концептуально, це абсолютно правильно. 1293 00:53:02,190 --> 00:53:03,690 Повністю відповідно до формули. 1294 00:53:03,690 --> 00:53:05,940 Але тільки з комп'ютерами робити саме те, що ви 1295 00:53:05,940 --> 00:53:06,760 скажіть їм робити. 1296 00:53:06,760 --> 00:53:08,940 І те, що ми фактично говорить комп'ютеру тут 1297 00:53:08,940 --> 00:53:12,320 ділити ціле число 5 на цілих 9 1298 00:53:12,320 --> 00:53:13,670 і дайте мені результат. 1299 00:53:13,670 --> 00:53:16,230 Проблема в тому, однак, коли ви поділом з використанням даних 1300 00:53:16,230 --> 00:53:20,220 типу, на виході буде той же тип даних в якості входів. 1301 00:53:20,220 --> 00:53:23,670 І тому, якщо два входи є цілими, то вихід буде 1302 00:53:23,670 --> 00:53:25,110 бути Int. 1303 00:53:25,110 --> 00:53:28,770 І так 5 розділений на 9 є точкою щось. 1304 00:53:28,770 --> 00:53:32,320 Але те, що найближче ціле число, щоб вказати щось? 1305 00:53:32,320 --> 00:53:33,630 Таким чином, це насправді 0. 1306 00:53:33,630 --> 00:53:36,620 Так як ми обговорювали в понеділок, все після десяткової 1307 00:53:36,620 --> 00:53:37,940 точка залишається усіченим. 1308 00:53:37,940 --> 00:53:39,495 Він просто отримує викинути. 1309 00:53:39,495 --> 00:53:42,760 Так що це повна помилка, тому що я міг би з таким же успіхом 1310 00:53:42,760 --> 00:53:44,700 всі помножити на 0 тут. 1311 00:53:44,700 --> 00:53:46,550 >> Тепер я можу виправити це в кілька способів. 1312 00:53:46,550 --> 00:53:48,080 Я міг би це зробити. 1313 00:53:48,080 --> 00:53:50,490 5,0 розділений на 9,0. 1314 00:53:50,490 --> 00:53:52,110 Технічно, я навіть не потрібно цього робити. 1315 00:53:52,110 --> 00:53:55,780 Це робиться досить просто зробити одне з чисел з плаваючою точкою - 1316 00:53:55,780 --> 00:53:58,290 або подвійним - поставивши десяткової крапки тут. 1317 00:53:58,290 --> 00:54:01,740 Тому що те, що відбувається зараз, коли ви розділите ціле число на 1318 00:54:01,740 --> 00:54:04,670 поплавця, або подвійною, комп'ютер збирається реалізувати 1319 00:54:04,670 --> 00:54:06,830 ой, один з них є більш точним. 1320 00:54:06,830 --> 00:54:09,420 Дозвольте мені помилитися у бік, щоб дати вам більш точно, ніж 1321 00:54:09,420 --> 00:54:10,310 Ви призначений. 1322 00:54:10,310 --> 00:54:12,700 Так це буде конвертувати результат - 1323 00:54:12,700 --> 00:54:16,240 він буде повертати результат як значення з плаваючою точкою, а також. 1324 00:54:16,240 --> 00:54:17,330 Так що буде працювати. 1325 00:54:17,330 --> 00:54:18,060 Це буде працювати. 1326 00:54:18,060 --> 00:54:20,010 І є ще один механізм, який ми побачимо в 1327 00:54:20,010 --> 00:54:21,390 Більш докладно на наступному тижні. 1328 00:54:21,390 --> 00:54:24,690 Ви можете насправді, як програміст, скажіть комп'ютера 1329 00:54:24,690 --> 00:54:27,930 насправді ставитися один до типу даних, як 1330 00:54:27,930 --> 00:54:29,260 якби він був іншим. 1331 00:54:29,260 --> 00:54:30,990 >> Так що я міг насправді це зробити. 1332 00:54:30,990 --> 00:54:35,280 У дужках, що я можу сказати щось подібне (з плаваючою точкою), відкритий 1333 00:54:35,280 --> 00:54:36,350 хлопець, поруч хлопець. 1334 00:54:36,350 --> 00:54:39,050 І це те, що називається "кастинг". Знову ж таки, більш 1335 00:54:39,050 --> 00:54:39,940 на наступному тижні. 1336 00:54:39,940 --> 00:54:42,280 Але це тільки програмний спосіб сказати 1337 00:54:42,280 --> 00:54:45,910 комп'ютер, та я знаю, 9, цілі чи довго. 1338 00:54:45,910 --> 00:54:47,700 Я знаю, що це значення з плаваючою точкою. 1339 00:54:47,700 --> 00:54:49,420 Але розглядати його як такої в будь-якому випадку. 1340 00:54:49,420 --> 00:54:52,000 Таким чином, щоб кинути типу даних означає для перетворення 1341 00:54:52,000 --> 00:54:53,310 від одного до іншого. 1342 00:54:53,310 --> 00:54:55,790 Чесно кажучи, це трохи потворні, тому я хотів би запропонувати ми йдемо 1343 00:54:55,790 --> 00:54:58,830 повернутися до первинного пропозицією просто перетворення 1344 00:54:58,830 --> 00:55:00,770 ці речі з плаваючою комою вручну. 1345 00:55:00,770 --> 00:55:02,890 Тому що зараз це просто супер ясно, що відбувається, і 1346 00:55:02,890 --> 00:55:04,280 це ще не все, що відволікає. 1347 00:55:04,280 --> 00:55:06,710 >> Отже, давайте тепер повернемося в моє вікно терміналу. 1348 00:55:06,710 --> 00:55:07,990 Зробити f2c. 1349 00:55:07,990 --> 00:55:09,430 Дозвольте мені йти вперед і виконати це. 1350 00:55:09,430 --> 00:55:12,340 І, як в стороні, вам набридне вводити ці команди 1351 00:55:12,340 --> 00:55:14,910 знову і знову, розумієш, що комп'ютери, як і Linux тут, 1352 00:55:14,910 --> 00:55:16,010 як правило, досить розумна. 1353 00:55:16,010 --> 00:55:18,890 І якби я вдарив вгору, ми можемо пройти через всю свою історію 1354 00:55:18,890 --> 00:55:20,380 Команди, вгору і вниз. 1355 00:55:20,380 --> 00:55:23,840 Тому в даному випадку тут, я можу просто піти до запуску зробити f2c. 1356 00:55:23,840 --> 00:55:25,830 Мене крикнув, тому що я тільки що зробив, що секунду тому. 1357 00:55:25,830 --> 00:55:27,030 Він вже в курсі. 1358 00:55:27,030 --> 00:55:30,720 Так що тепер я можу запустити f2c знову. 1359 00:55:30,720 --> 00:55:33,260 Давайте спробуємо 32 за Фаренгейтом. 1360 00:55:33,260 --> 00:55:36,720 Тепер давайте спробуємо 212 за Фаренгейтом. 1361 00:55:36,720 --> 00:55:37,250 >> Уф. 1362 00:55:37,250 --> 00:55:38,250 Здається, працює. 1363 00:55:38,250 --> 00:55:41,760 Тепер, це добре, але вона відчуває себе трохи довільним, що 1364 00:55:41,760 --> 00:55:44,890 Я показую шість цифр після десяткової крапки. 1365 00:55:44,890 --> 00:55:45,070 Вірно? 1366 00:55:45,070 --> 00:55:47,830 Якщо ви погода людини по телевізору, ти ніби Doofus 1367 00:55:47,830 --> 00:55:49,150 якщо ви читаєте температури 1368 00:55:49,150 --> 00:55:50,070 ця ступінь точності. 1369 00:55:50,070 --> 00:55:51,270 Так давайте спростимо це. 1370 00:55:51,270 --> 00:55:53,880 Так що давайте насправді йдуть сюди, до мого Printf. 1371 00:55:53,880 --> 00:55:55,490 І так, я хочу, щоб плавати. 1372 00:55:55,490 --> 00:55:57,570 Але я хочу, щоб тепер визначити точність. 1373 00:55:57,570 --> 00:55:59,070 І я збираюся бути трохи лаконічніше. 1374 00:55:59,070 --> 00:56:03,090 Я хочу сказати, дайте мені одну точку після коми. 1375 00:56:03,090 --> 00:56:07,590 Так, а чому, скажімо,% F, я збираюся сказати% .1 ф. 1376 00:56:07,590 --> 00:56:09,760 І це тільки означає, дайте мені одну позицію 1377 00:56:09,760 --> 00:56:11,410 після коми. 1378 00:56:11,410 --> 00:56:11,700 Добре. 1379 00:56:11,700 --> 00:56:12,570 Давайте спробуємо це знову. 1380 00:56:12,570 --> 00:56:15,590 Дозвольте мені знову запустити його після компіляції. 1381 00:56:15,590 --> 00:56:18,160 А зараз я набираю в 32, і я повернуся 1382 00:56:18,160 --> 00:56:19,310 більш ємкі значення. 1383 00:56:19,310 --> 00:56:22,480 І я можу ввести, зараз 212, і отримати назад більш ємним 1384 00:56:22,480 --> 00:56:23,260 значення, а також. 1385 00:56:23,260 --> 00:56:25,190 І є інші речі, які ви можете зробити з Printf. 1386 00:56:25,190 --> 00:56:27,950 Ви дійсно можете вказати, наскільки широкий число повинне бути. 1387 00:56:27,950 --> 00:56:30,900 Якщо ви хочете, щоб оббивка на ньому, так що ви можете вирівняти по правому краю або 1388 00:56:30,900 --> 00:56:32,360 вирівнювання вліво всі ваші номери або 1389 00:56:32,360 --> 00:56:33,400 намагаються центрі речей. 1390 00:56:33,400 --> 00:56:35,340 Так розумію, що є маленькі хитрощі, які ви можете зробити там. 1391 00:56:35,340 --> 00:56:38,420 Але вони зводяться до того, формат кодів, 1392 00:56:38,420 --> 00:56:39,600 як у нас є. 1393 00:56:39,600 --> 00:56:41,090 >> Так що в плані це питання пріоритету. 1394 00:56:41,090 --> 00:56:43,820 Це дуже нудна таблиця, щоб пройти через методично. 1395 00:56:43,820 --> 00:56:46,780 Але розумію, що автори C придумали 1396 00:56:46,780 --> 00:56:50,190 правил, що визначають, які оператори мають вищий 1397 00:56:50,190 --> 00:56:53,680 пріоритет, більш зобов'язують влади, ніж інші. 1398 00:56:53,680 --> 00:56:55,890 Таким чином, у той час як в початковій школі, ми, як правило знав, що це 1399 00:56:55,890 --> 00:56:58,930 множення і ділення, потім додавання і віднімання, 1400 00:56:58,930 --> 00:56:59,950 Потім деякі інші речі. 1401 00:56:59,950 --> 00:57:01,720 У світі програмування, є багато 1402 00:57:01,720 --> 00:57:03,360 довгий список речей. 1403 00:57:03,360 --> 00:57:05,150 І це не те, що варто запам'ятати зараз. 1404 00:57:05,150 --> 00:57:07,310 Ви отримаєте пристосуватися до нього незабаром. 1405 00:57:07,310 --> 00:57:10,690 Але, як і в початковій школі, як правило дужках вирішити 1406 00:57:10,690 --> 00:57:12,990 питання перевага, зробивши супер ясно, 1407 00:57:12,990 --> 00:57:15,620 комп'ютера і людини так, що він призначений. 1408 00:57:15,620 --> 00:57:17,770 Так вважають це трохи шпаргалку там. 1409 00:57:17,770 --> 00:57:21,690 Але більшість з цих деталей ми не зможемо отримати протягом деякого часу. 1410 00:57:21,690 --> 00:57:21,900 >> Добре. 1411 00:57:21,900 --> 00:57:24,120 Тепер, давайте будувати і відійти від цих дурних маленьких 1412 00:57:24,120 --> 00:57:25,460 математичні приклади. 1413 00:57:25,460 --> 00:57:27,500 Тим не менше використовувати ті ж основи, але почати 1414 00:57:27,500 --> 00:57:29,960 виразити себе трохи більше як Scratch. 1415 00:57:29,960 --> 00:57:31,660 Таким чином, в Scratch, у нас були ці логічні вирази. 1416 00:57:31,660 --> 00:57:34,890 І на англійській, логічне вираження, це що? 1417 00:57:34,890 --> 00:57:35,580 Правда чи брехня. 1418 00:57:35,580 --> 00:57:38,300 Це те, що оцінюється як істинне або помилкове. 1419 00:57:38,300 --> 00:57:39,060 1 або 0. 1420 00:57:39,060 --> 00:57:39,870 Включений або виключений. 1421 00:57:39,870 --> 00:57:41,000 Все, що ви хочете назвати це. 1422 00:57:41,000 --> 00:57:43,210 Зараз в Scratch, шматочки головоломки виглядала наступним чином. 1423 00:57:43,210 --> 00:57:45,850 І це комбінація, на дні, з трьох 1424 00:57:45,850 --> 00:57:47,980 шматочки головоломки. 1425 00:57:47,980 --> 00:57:48,980 Один зв'язку - 1426 00:57:48,980 --> 00:57:51,710 те, що має порожній і пустий. 1427 00:57:51,710 --> 00:57:53,970 А потім два логічних виразів всередині нього. 1428 00:57:53,970 --> 00:57:56,460 Таким чином, ви можете вкладати логічні вирази, щоб отримати більше 1429 00:57:56,460 --> 00:57:59,360 складні логічні вирази. 1430 00:57:59,360 --> 00:58:03,930 Наприклад, якщо це субота, і це добре 1431 00:58:03,930 --> 00:58:06,180 погодою, то вийти на вулицю. 1432 00:58:06,180 --> 00:58:07,500 Або щось в довільній подібне. 1433 00:58:07,500 --> 00:58:10,090 Таким чином, ви можете приєднатися логічні вирази, щоб придумати 1434 00:58:10,090 --> 00:58:12,780 Велике значення істинності, відповідь на який базується 1435 00:58:12,780 --> 00:58:13,800 на більш дрібні. 1436 00:58:13,800 --> 00:58:15,770 >> Тепер, C, на щастя, це відображення 1437 00:58:15,770 --> 00:58:16,720 насправді досить проста. 1438 00:58:16,720 --> 00:58:18,820 Дужки допомогти внести ясність тут. 1439 00:58:18,820 --> 00:58:21,700 && Те, що означає «та». Так от, як 1440 00:58:21,700 --> 00:58:24,700 Ми збираємося перетворити ці блоки з нуля C. 1441 00:58:24,700 --> 00:58:27,590 І умови, які ми бачили в Scratch, на лівій руці 1442 00:58:27,590 --> 00:58:31,150 стороні, я можу скласти їх так само в С. Якщо х менше 1443 00:58:31,150 --> 00:58:32,970 ніж у, то зробити це. 1444 00:58:32,970 --> 00:58:35,100 Інакше, якщо х більше у, то зробити це. 1445 00:58:35,100 --> 00:58:38,030 Решта логічно вони повинні бути рівні, так би мовити 1446 00:58:38,030 --> 00:58:39,140 що вони рівні. 1447 00:58:39,140 --> 00:58:41,210 Так що тепер ми можемо почати будувати ці речі. 1448 00:58:41,210 --> 00:58:42,170 >> Так давайте зробимо приклад. 1449 00:58:42,170 --> 00:58:45,550 Дозвольте мені відкрити файл, який знаходиться на веб-сайт курсу, що 1450 00:58:45,550 --> 00:58:47,270 Я написав наперед. 1451 00:58:47,270 --> 00:58:50,540 Це називається nonswitch.c. 1452 00:58:50,540 --> 00:58:52,270 І ми побачимо, чому в один момент. 1453 00:58:52,270 --> 00:58:54,770 Так що в цьому файлі - nonswitch.c-- 1454 00:58:54,770 --> 00:58:56,830 спочатку зрозуміти, що є ціла купа 1455 00:58:56,830 --> 00:58:58,460 Коментарі на самому верху. 1456 00:58:58,460 --> 00:59:00,110 От тільки пояснити назву файлу, що це 1457 00:59:00,110 --> 00:59:01,260 робить, і так далі. 1458 00:59:01,260 --> 00:59:04,390 І він, очевидно, демонструє використання логічне І-ния - 1459 00:59:04,390 --> 00:59:06,220 об'єднавши два вирази. 1460 00:59:06,220 --> 00:59:07,670 >> Отже, давайте подивимося, як ця програма працює. 1461 00:59:07,670 --> 00:59:10,840 Я включив два моїх файлів, cs50.h і stdio.h. 1462 00:59:10,840 --> 00:59:13,180 Якщо я прокрутіть униз, тепер, до програми, це трохи більше 1463 00:59:13,180 --> 00:59:15,730 що ми вже писали раніше, але досить читається. 1464 00:59:15,730 --> 00:59:18,360 Так що я спочатку роздрукувати для користувача, у рядку 18, 1465 00:59:18,360 --> 00:59:20,460 "Дайте мені число від 1 до 10". Так 1466 00:59:20,460 --> 00:59:21,530 ось прямо там. 1467 00:59:21,530 --> 00:59:23,410 Тепер я отримую ціле. 1468 00:59:23,410 --> 00:59:25,380 Але розумію, що GetInt - досить простий. 1469 00:59:25,380 --> 00:59:26,510 Це просто буде отримати Int. 1470 00:59:26,510 --> 00:59:28,830 Це буде гарантувати, що це отримати Int, а не 1471 00:59:28,830 --> 00:59:30,060 Рядок або число з плаваючою крапкою. 1472 00:59:30,060 --> 00:59:32,390 Але це не збирається робити будь-які кордони перевірки. 1473 00:59:32,390 --> 00:59:34,750 Це не збирається фільтрувати номери, щоб бути між 1474 00:59:34,750 --> 00:59:35,630 певному діапазоні. 1475 00:59:35,630 --> 00:59:37,730 Таким чином, ми повинні реалізувати це самі. 1476 00:59:37,730 --> 00:59:40,680 Так само, як в Scratch, де я міг би зробити з'єднання 1477 00:59:40,680 --> 00:59:43,560 два вирази, я можу зробити це в C наступним чином. 1478 00:59:43,560 --> 00:59:48,660 Якщо п більше або дорівнює 1, а п менше і 1479 00:59:48,660 --> 00:59:52,220 або дорівнює 3, я збираюся вельми довільно указ, що 1480 00:59:52,220 --> 00:59:53,830 число було невеликим числом. 1481 00:59:53,830 --> 00:59:56,730 Тільки заради утвердження. 1482 00:59:56,730 --> 01:00:00,210 Інакше, якщо п від 4 до 6, друк "Ви вибрали середній 1483 01:00:00,210 --> 01:00:03,440 номер. "Else, якщо п від 7 до 10, друк" Ви вибрали 1484 01:00:03,440 --> 01:00:06,390 Велика кількість ". Else Print" Ви вибираєте неправильний номер ». 1485 01:00:06,390 --> 01:00:07,900 Тому логічно, що наступним, якщо ми 1486 01:00:07,900 --> 01:00:09,230 вичерпали наш асортимент. 1487 01:00:09,230 --> 01:00:12,400 >> Так розумію, що це не зовсім так, як ми пишемо більше або 1488 01:00:12,400 --> 01:00:15,000 рівними в математичному класі. 1489 01:00:15,000 --> 01:00:15,160 Вірно? 1490 01:00:15,160 --> 01:00:17,430 Ви зазвичай малюють його як це, з лінією під ним. 1491 01:00:17,430 --> 01:00:19,250 Але немає такої клавіші на клавіатурі. 1492 01:00:19,250 --> 01:00:22,390 Таким чином, символ C для вираження більше або 1493 01:00:22,390 --> 01:00:25,770 одно це два символи, а символ менш 1494 01:00:25,770 --> 01:00:29,100 або дорівнює складається з двох символів, а також. 1495 01:00:29,100 --> 01:00:29,330 Добре. 1496 01:00:29,330 --> 01:00:31,910 Так що, якщо я запускаю цю програму, ви можете здогадатися, що це 1497 01:00:31,910 --> 01:00:32,650 збирається робити. 1498 01:00:32,650 --> 01:00:36,180 Якби я піти далі і зробити nonswitch, Enter. 1499 01:00:36,180 --> 01:00:38,130 А потім запустити nonswitch. 1500 01:00:38,130 --> 01:00:39,530 Дайте мені номер від 1 до 10. 1501 01:00:39,530 --> 01:00:40,870 Я збираюся дати йому 11. 1502 01:00:40,870 --> 01:00:42,280 Я вибрав неправильний номер. 1503 01:00:42,280 --> 01:00:44,090 Дозвольте мені спробувати номер 3. 1504 01:00:44,090 --> 01:00:45,990 Я взяв невелику кількість. 1505 01:00:45,990 --> 01:00:48,360 Таким чином, існує досить простий. 1506 01:00:48,360 --> 01:00:52,230 >> Що робити, якщо я хочу змінити поведінку цієї програми і 1507 01:00:52,230 --> 01:00:54,250 зробити щось трохи по-іншому, а? 1508 01:00:54,250 --> 01:00:57,620 Дозвольте мені йти вперед і говорити про це. 1509 01:00:57,620 --> 01:00:59,480 Дозвольте мені позбавитися від всього цього. 1510 01:00:59,480 --> 01:01:03,780 І дозвольте мені сказати, якщо (п == 42). 1511 01:01:03,780 --> 01:01:08,730 А потім я збираюся йти вперед і сказати друку "Ви вибрали 1512 01:01:08,730 --> 01:01:16,340 Правильна відповідь ". Решту ми збираємося йти вперед і сказати, 1513 01:01:16,340 --> 01:01:18,460 Е ("Ви вибрали 1514 01:01:18,460 --> 01:01:21,170 неправильна відповідь ");. Гаразд. 1515 01:01:21,170 --> 01:01:22,040 Просто так. 1516 01:01:22,040 --> 01:01:23,890 >> Тепер кілька пунктів ми можемо зробити тут. 1517 01:01:23,890 --> 01:01:26,570 Один з них, я не ввести символ, який ви думаєте, 1518 01:01:26,570 --> 01:01:27,390 Найбільш розумним. 1519 01:01:27,390 --> 01:01:30,110 Коли я хочу, щоб перевірити рівність, виявляється, ви не використовуєте 1520 01:01:30,110 --> 01:01:30,910 знак рівності. 1521 01:01:30,910 --> 01:01:34,000 Ви замість цього використовувати рівних знак рівності. 1522 01:01:34,000 --> 01:01:36,440 І чому б це міг бути, просто інтуїтивно? 1523 01:01:36,440 --> 01:01:37,030 Так. 1524 01:01:37,030 --> 01:01:39,330 АУДИТОРІЯ: [нерозбірливо] 1525 01:01:39,330 --> 01:01:39,615 David J. Малан: Правильно. 1526 01:01:39,615 --> 01:01:41,630 Знак рівності вже використовується для завдання. 1527 01:01:41,630 --> 01:01:43,020 Хтось дійсно не думаю, що це до кінця. 1528 01:01:43,020 --> 01:01:45,820 І ось тепер, коли справа доходить до перевірки рівності, ми повинні 1529 01:01:45,820 --> 01:01:48,850 бути більш явним, і говорити рівних з рівними. 1530 01:01:48,850 --> 01:01:52,110 Дуже поширеною помилкою є, щоб зробити це. 1531 01:01:52,110 --> 01:01:54,800 І, якщо в робочий час або на наступному тижні або в 1532 01:01:54,800 --> 01:01:58,340 Наступні два тижні ви робите щось на зразок цього, а потім 1533 01:01:58,340 --> 01:02:00,920 Боротися з цим на 10, 20 хвилин, намагаючись з'ясувати, 1534 01:02:00,920 --> 01:02:03,330 що проклята помилка є, розумієте, що ви один з тих, 1535 01:02:03,330 --> 01:02:04,470 люди, які зробили цю помилку. 1536 01:02:04,470 --> 01:02:06,030 Таким чином, супер легко зробити. 1537 01:02:06,030 --> 01:02:08,240 Але мета зараз, щоб запобігти цю помилку. 1538 01:02:08,240 --> 01:02:11,840 Це може оцінити, тому що це насправді говорив? 1539 01:02:11,840 --> 01:02:15,010 Якщо п отримує 42. 1540 01:02:15,010 --> 01:02:18,250 Таким чином, дієслово люди використовують, в усній формі, щоб висловити 1541 01:02:18,250 --> 01:02:21,800 Поняття призначення "отримує". Так що, якщо п отримує 42. 1542 01:02:21,800 --> 01:02:24,060 Таким чином, це означає, що призначити 42 до н. 1543 01:02:24,060 --> 01:02:26,250 Тепер у мене є логічне вираження в круглих дужках, 1544 01:02:26,250 --> 01:02:30,230 Усередині цієї умови, вартість яких становить 42. 1545 01:02:30,230 --> 01:02:30,390 Вірно? 1546 01:02:30,390 --> 01:02:32,690 Тому що, якщо оцінювати його зсередини, загальна 1547 01:02:32,690 --> 01:02:34,100 Відповідь, в даний час, становить 42. 1548 01:02:34,100 --> 01:02:37,360 >> Так що якщо я задав вам питання, "якщо (42)," Що таке 1549 01:02:37,360 --> 01:02:38,410 , Що дійсно говорив? 1550 01:02:38,410 --> 01:02:40,990 Ну, логічні вираження може бути тільки істинним або хибним. 1551 01:02:40,990 --> 01:02:42,010 1 або 0. 1552 01:02:42,010 --> 01:02:43,010 Включений або виключений. 1553 01:02:43,010 --> 01:02:45,240 Таким чином, ми, здається, є кутку даному випадку, згідно з якою всі 1554 01:02:45,240 --> 01:02:50,060 Раптово, я кажу "якщо (42)". Це не логічне значення. 1555 01:02:50,060 --> 01:02:54,500 Так що комп'ютери роблять, тим не менш, вона по суті прирівнює 1556 01:02:54,500 --> 01:02:58,620 все, що не 0 інтерпретується, щоб бути правдою. 1557 01:02:58,620 --> 01:02:59,340 1. 1558 01:02:59,340 --> 01:02:59,690 On. 1559 01:02:59,690 --> 01:03:01,510 Всі вони функціонально еквівалентні. 1560 01:03:01,510 --> 01:03:05,070 Тільки значення 0 або ключове слово помилкове, як ми будемо 1561 01:03:05,070 --> 01:03:07,860 в кінцевому рахунку бачити, насправді невірно. 1562 01:03:07,860 --> 01:03:15,040 Таким чином, "якщо (42)" буде насправді бути правдою, тому що вона не дорівнює нулю. 1563 01:03:15,040 --> 01:03:18,620 Таким чином, щоб бути більш точним тут, логічне значення, насправді не так 1564 01:03:18,620 --> 01:03:20,680 багато істинною або помилковою, але для цього 1565 01:03:20,680 --> 01:03:24,650 випадку, якщо дорівнює 0 або відмінні від нуля. 1566 01:03:24,650 --> 01:03:26,330 Таким чином, помилкова або не помилкова. 1567 01:03:26,330 --> 01:03:28,640 І це дозволяє нам охоплювати все більше 1568 01:03:28,640 --> 01:03:30,980 можливості в дужках. 1569 01:03:30,980 --> 01:03:33,840 Так що нам потрібно, завжди так ретельно, кажуть, що це - 1570 01:03:33,840 --> 01:03:35,620 Якщо (п == 42). 1571 01:03:35,620 --> 01:03:39,100 Просто тому, що нам потрібно вказати тесту рівності, 1572 01:03:39,100 --> 01:03:40,930 Чи не присвоювання значення. 1573 01:03:40,930 --> 01:03:42,830 >> Що ще варто відзначити тут? 1574 01:03:42,830 --> 01:03:46,030 Ці фігурні дужки насправді не потрібно. 1575 01:03:46,030 --> 01:03:48,650 Я роблю їх просто щоб бути ніт-прискіпливі тут. 1576 01:03:48,650 --> 01:03:51,350 Але коли у вас є умова, що є тільки один рядок 1577 01:03:51,350 --> 01:03:55,100 код, для зручності, програмісти не повинні використовувати 1578 01:03:55,100 --> 01:03:56,030 фігурні дужки. 1579 01:03:56,030 --> 01:03:59,370 Досить просто відступ, з естетичних міркувань, а 1580 01:03:59,370 --> 01:04:01,050 Потім написати рядок коду. 1581 01:04:01,050 --> 01:04:04,160 Тільки тоді, коли ви хочете написати два рядки коду - для 1582 01:04:04,160 --> 01:04:08,230 Наприклад, ще Е ("Bye!"). Якщо ви хочете зробити 1583 01:04:08,230 --> 01:04:09,540 , Що це не працює. 1584 01:04:09,540 --> 01:04:11,700 Ви можете відступу все, що ви хочете, а те, що у вас є 1585 01:04:11,700 --> 01:04:14,600 ввели два рядки коду без використання фігурних дужок 1586 01:04:14,600 --> 01:04:16,860 означає, що ця програма не буде працювати правильно, або може 1587 01:04:16,860 --> 01:04:18,530 навіть не збирати правильно. 1588 01:04:18,530 --> 01:04:21,040 Таким чином, на даний момент, чесно кажучи, я думаю, що краще просто звичка 1589 01:04:21,040 --> 01:04:24,460 використовувати фігурні дужки, і ви побачите, що вони роблять 1590 01:04:24,460 --> 01:04:25,750 Супер ясно, що відбувається. 1591 01:04:25,750 --> 01:04:29,410 >> Крім того, як в сторону - особливо, якщо ви серед тих, хто використовує 1592 01:04:29,410 --> 01:04:31,700 рекомендовані книги або онлайн-ресурсів - 1593 01:04:31,700 --> 01:04:33,480 розумію, що є таке поняття стилю в 1594 01:04:33,480 --> 01:04:34,130 програмування. 1595 01:04:34,130 --> 01:04:37,280 І деякі люди насправді воліють ставити фігурні дужки 1596 01:04:37,280 --> 01:04:38,720 тут на лінію. 1597 01:04:38,720 --> 01:04:41,520 Деякі люди вважають за краще робити смішні речі, 1598 01:04:41,520 --> 01:04:43,830 як їх тут. 1599 01:04:43,830 --> 01:04:45,140 Там немає неправильних відповідей, коли справа доходить до 1600 01:04:45,140 --> 01:04:46,710 стиль, але це не так. 1601 01:04:46,710 --> 01:04:47,700 Але деякі люди роблять це. 1602 01:04:47,700 --> 01:04:49,160 [Сміх] 1603 01:04:49,160 --> 01:04:51,760 David J. Малан: Так я говорю про це зараз, просто тому, що, як 1604 01:04:51,760 --> 01:04:54,400 Ви прочитали про речі в книгах або в Інтернеті, ви збираєтеся отримати 1605 01:04:54,400 --> 01:04:55,990 різні повідомлення з різних вчителів і 1606 01:04:55,990 --> 01:04:56,730 різних авторів. 1607 01:04:56,730 --> 01:04:58,640 І так само, розуміємо, що, функціонально, вони 1608 01:04:58,640 --> 01:05:00,740 в цілому еквівалентні, але бути послідовним. 1609 01:05:00,740 --> 01:05:02,850 Так що в цьому випадку, ми будемо стандартизувати фігурні 1610 01:05:02,850 --> 01:05:04,650 дужки шикуються тут зліва. 1611 01:05:04,650 --> 01:05:04,910 >> Добре. 1612 01:05:04,910 --> 01:05:07,040 Так що давайте йти вперед тепер і запустити це, і подивимося, що станеться 1613 01:05:07,040 --> 01:05:07,780 з цією програмою. 1614 01:05:07,780 --> 01:05:09,970 Зробити nonswitch. 1615 01:05:09,970 --> 01:05:11,040 Потім запустіть nonswitch. 1616 01:05:11,040 --> 01:05:13,900 Дайте мені число від 0 до - так що це не відповідних 1617 01:05:13,900 --> 01:05:16,480 більше, але я просто хочу, щоб як завгодно говорити 42. 1618 01:05:16,480 --> 01:05:17,850 І я вибрав правильну відповідь. 1619 01:05:17,850 --> 01:05:20,430 Ну що ж, давайте насправді взяти це в іншому напрямку. 1620 01:05:20,430 --> 01:05:22,070 Виявляється, є деякий інший синтаксис, який ми 1621 01:05:22,070 --> 01:05:23,480 Можна використовувати в програмі. 1622 01:05:23,480 --> 01:05:27,310 Ось нова частина синтаксису, функціонально те ж саме, 1623 01:05:27,310 --> 01:05:30,680 а просто вводить ще один спосіб виразити себе. 1624 01:05:30,680 --> 01:05:32,830 Отже, це те, що називається "перемикач заяву". І 1625 01:05:32,830 --> 01:05:34,820 Перемикач заяві працює таким чином. 1626 01:05:34,820 --> 01:05:37,580 Вона займає в дужках значення, яке ви хочете 1627 01:05:37,580 --> 01:05:38,860 "Перемикач" на. 1628 01:05:38,860 --> 01:05:41,490 Ви хочете, щоб вести себе по різному в залежності від його значення. 1629 01:05:41,490 --> 01:05:44,360 Таким чином, це означає, що перемикач на значення п. 1630 01:05:44,360 --> 01:05:45,480 А що це значить? 1631 01:05:45,480 --> 01:05:50,530 Ну, а якщо п = 1 або 2 або 3, йти вперед і роздрукувати "Ви 1632 01:05:50,530 --> 01:05:52,680 отриманні великої кількості ", а потім розірвати. 1633 01:05:52,680 --> 01:05:55,720 Причина розриву в тому, що шлях C працює, як 1634 01:05:55,720 --> 01:05:59,790 тільки він знаходить випадок, який відповідає, він починає виконання 1635 01:05:59,790 --> 01:06:01,610 весь код нижче. 1636 01:06:01,610 --> 01:06:04,580 Так що, якщо у мене є один рядок коду, як я тут, на лінії 27, то 1637 01:06:04,580 --> 01:06:05,360 запускається на виконання. 1638 01:06:05,360 --> 01:06:07,520 Якщо я додам ще одну лінію тут, він запускається на виконання. 1639 01:06:07,520 --> 01:06:09,350 Інша лінія тут, він запускається на виконання. 1640 01:06:09,350 --> 01:06:12,460 Програма припиняє виконання тільки те, що нижче 1641 01:06:12,460 --> 01:06:14,680 застосовним заявою про випадок, коли я явно 1642 01:06:14,680 --> 01:06:17,210 сказати "зламати". Так що не так. 1643 01:06:17,210 --> 01:06:19,220 Так, в даному випадку, в якості результату. 1644 01:06:19,220 --> 01:06:22,130 Випадок 4 або 5 або 6, аналогічно, буде 1645 01:06:22,130 --> 01:06:23,160 роздрукувати повідомлення. 1646 01:06:23,160 --> 01:06:24,410 У цьому випадку середні числа. 1647 01:06:24,410 --> 01:06:25,200 Перерва. 1648 01:06:25,200 --> 01:06:28,160 Випадок 7, 8, 9, 10, це буде роздрукувати "Ви вибрали великий 1649 01:06:28,160 --> 01:06:28,950 номер. "Break. 1650 01:06:28,950 --> 01:06:31,290 А тут ще буквально ключове слово називається "за замовчуванням" 1651 01:06:31,290 --> 01:06:34,090 це ефективно, як "інше" побудувати. 1652 01:06:34,090 --> 01:06:36,010 Таким чином, новий синтаксис, але інтелектуально, 1653 01:06:36,010 --> 01:06:37,060 нічого нового тут немає. 1654 01:06:37,060 --> 01:06:38,280 Це як Scratch. 1655 01:06:38,280 --> 01:06:41,040 Якщо, інакше, якщо, інакше, якщо, на зразок блоку. 1656 01:06:41,040 --> 01:06:44,560 >> Так от включений версію цієї програми. 1657 01:06:44,560 --> 01:06:46,280 Але зверніть увагу, що ми зробили це з номерами тут. 1658 01:06:46,280 --> 01:06:49,040 Дозвольте мені відкрити другою версією, просто щоб показати, 1659 01:06:49,040 --> 01:06:50,670 щось більш конкретне. 1660 01:06:50,670 --> 01:06:52,840 Таким чином, тут ми маємо класи замість цього. 1661 01:06:52,840 --> 01:06:55,540 Виявляється, можна використовувати перемикачі не тільки на цілі, але на 1662 01:06:55,540 --> 01:06:56,340 символи. 1663 01:06:56,340 --> 01:06:58,930 Не у всіх типах даних, але принаймні на символи. 1664 01:06:58,930 --> 01:07:02,670 Так от, ми могли б зробити щось подібне, якщо значення С, 1665 01:07:02,670 --> 01:07:06,230 Користувач набрали, в рядку 19 за допомогою GetChar функції, 1666 01:07:06,230 --> 01:07:09,410 це капітал або нижній регістр, давайте інтерпретувати його як клас, 1667 01:07:09,410 --> 01:07:11,340 і говорять, що вони вибрали відмінну оцінку. 1668 01:07:11,340 --> 01:07:14,690 І вниз уздовж перемикач заяву, у нас є інші 1669 01:07:14,690 --> 01:07:17,950 випадків "B" з і "C" з, і так далі. 1670 01:07:17,950 --> 01:07:19,780 Але давайте зараз завершують одну річ. 1671 01:07:19,780 --> 01:07:21,130 І знову, начебто пролетів через 1672 01:07:21,130 --> 01:07:22,200 Деякі з цих прикладів. 1673 01:07:22,200 --> 01:07:26,990 Але це дійсно так, що ми можемо їх застосовувати, то зараз - 1674 01:07:26,990 --> 01:07:28,880 або дійсно, просто перевести їх в даний час - 1675 01:07:28,880 --> 01:07:32,220 до С. 1676 01:07:32,220 --> 01:07:33,310 >> Отже, дозвольте мені йти вперед і робити це. 1677 01:07:33,310 --> 01:07:34,830 Я збираюся відкрити новий файл. 1678 01:07:34,830 --> 01:07:39,430 І я збираюся зробити, включають . 1679 01:07:39,430 --> 01:07:42,770 А потім я збираюся зробити Int основних (недійсними). 1680 01:07:42,770 --> 01:07:46,390 Дозвольте мені зберегти цей файл як loop.c. 1681 01:07:46,390 --> 01:07:48,280 Просто в якості прикладу. 1682 01:07:48,280 --> 01:07:49,910 І я збираюся піти далі і зробити наступне. 1683 01:07:49,910 --> 01:07:54,180 Я хочу написати дуже втомлює програми. 1684 01:07:54,180 --> 01:07:56,170 Так 10. 1685 01:07:56,170 --> 01:07:58,862 Давайте зробимо це. 1686 01:07:58,862 --> 01:07:59,320 9. 1687 01:07:59,320 --> 01:08:00,360 Добре. 1688 01:08:00,360 --> 01:08:02,120 Як тільки ви починаєте робити це в програмуванні, ви 1689 01:08:02,120 --> 01:08:03,490 ймовірно, робите щось неправильно. 1690 01:08:03,490 --> 01:08:04,950 Але ми почнемо там в будь-якому випадку. 1691 01:08:04,950 --> 01:08:05,430 Ой. 1692 01:08:05,430 --> 01:08:06,950 Це насправді так. 1693 01:08:06,950 --> 01:08:08,230 7. 1694 01:08:08,230 --> 01:08:09,440 6. 1695 01:08:09,440 --> 01:08:10,750 5. 1696 01:08:10,750 --> 01:08:11,200 4. 1697 01:08:11,200 --> 01:08:12,450 Нічого не станеться, коли ми доберемося до 0. 1698 01:08:12,450 --> 01:08:13,290 3. 1699 01:08:13,290 --> 01:08:14,590 2. 1700 01:08:14,590 --> 01:08:15,630 1. 1701 01:08:15,630 --> 01:08:16,020 Добре. 1702 01:08:16,020 --> 01:08:17,560 0. 1703 01:08:17,560 --> 01:08:18,689 Видалити. 1704 01:08:18,689 --> 01:08:19,029 >> Добре. 1705 01:08:19,029 --> 01:08:20,029 Таким чином, повертається 0. 1706 01:08:20,029 --> 01:08:22,010 Таким чином, ця програма, очевидно, буде робити те, що він дуже 1707 01:08:22,010 --> 01:08:23,310 утомливо говорить, що збирається робити. 1708 01:08:23,310 --> 01:08:24,060 Це буде друкувати всі ці 1709 01:08:24,060 --> 01:08:25,290 Значення, від верху до низу. 1710 01:08:25,290 --> 01:08:27,140 Отже, дозвольте мені роблять петлю. 1711 01:08:27,140 --> 01:08:28,640 А потім - вигуки. 1712 01:08:28,640 --> 01:08:29,700 Зробіть петлю. 1713 01:08:29,700 --> 01:08:31,479 Я був в іншому каталозі. 1714 01:08:31,479 --> 01:08:33,300 А тепер дозвольте мені виконати цикл. 1715 01:08:33,300 --> 01:08:34,140 Enter. 1716 01:08:34,140 --> 01:08:34,620 Woohoo. 1717 01:08:34,620 --> 01:08:35,270 Дуже красиво. 1718 01:08:35,270 --> 01:08:36,279 Хороший, довгий програми. 1719 01:08:36,279 --> 01:08:38,109 >> Гаразд, а тепер давайте зробимо це краще. 1720 01:08:38,109 --> 01:08:40,810 Як і в Scratch, коли ви почали використовувати цикл 1721 01:08:40,810 --> 01:08:43,149 будувати, а не просто копіювати і вставляти всі 1722 01:08:43,149 --> 01:08:45,580 шматочки головоломки, дозвольте мені представити цю річ. 1723 01:08:45,580 --> 01:08:48,609 Таким чином, в C, існують різні циклічні конструкції, 1724 01:08:48,609 --> 01:08:50,540 одна з яких виглядає наступним чином. 1725 01:08:50,540 --> 01:08:55,069 "За" петля має три речі, розділені двома крапками з комою. 1726 01:08:55,069 --> 01:08:57,770 І потім, всередині тіла циклу, так би мовити - 1727 01:08:57,770 --> 01:08:59,390 матеріал всередині фігурних дужках - 1728 01:08:59,390 --> 01:09:01,010 ми можемо зробити щось знову і знову. 1729 01:09:01,010 --> 01:09:02,310 Так що у мене тут на екрані, це 1730 01:09:02,310 --> 01:09:03,300 Буквально коментар. 1731 01:09:03,300 --> 01:09:05,380 / / Означає, що тут йде коментар. 1732 01:09:05,380 --> 01:09:06,180 Це не код. 1733 01:09:06,180 --> 01:09:08,890 Це тільки англійський Опис, для мене, людини. 1734 01:09:08,890 --> 01:09:11,300 >> Так ініціалізації, умови та поновлення. 1735 01:09:11,300 --> 01:09:12,770 Ну, давайте подивимося, як це працює. 1736 01:09:12,770 --> 01:09:15,520 Це дозволяє мені переписати цю програму таким чином. 1737 01:09:15,520 --> 01:09:16,399 За - 1738 01:09:16,399 --> 01:09:18,029 так ось іде мій цикл - 1739 01:09:18,029 --> 01:09:19,439 Int я - 1740 01:09:19,439 --> 01:09:21,330 Тут приходить змінна називається "я" - 1741 01:09:21,330 --> 01:09:23,140 отримує ініціалізований до 10. 1742 01:09:23,140 --> 01:09:25,260 Так що мій ініціалізації. 1743 01:09:25,260 --> 01:09:29,450 Я хочу зробити цей цикл до тих пір, як "Я" більше або 1744 01:09:29,450 --> 01:09:30,899 дорівнює 0. 1745 01:09:30,899 --> 01:09:32,880 І на кожній ітерації цього циклу, я хочу, 1746 01:09:32,880 --> 01:09:34,979 зробити я -. 1747 01:09:34,979 --> 01:09:36,310 Таким чином, ми побачили + + в понеділок. 1748 01:09:36,310 --> 01:09:37,660 - Все навпаки. 1749 01:09:37,660 --> 01:09:39,410 Це зменшує значення на 1. 1750 01:09:39,410 --> 01:09:43,319 Усередині цього циклу, я хочу зробити щось. 1751 01:09:43,319 --> 01:09:46,390 Так що я збираюся сказати щось подібне Printf. 1752 01:09:46,390 --> 01:09:48,939 Я не хочу сказати, 10 зараз, тому що це, очевидно, тільки 1753 01:09:48,939 --> 01:09:50,000 в друк і те ж значення. 1754 01:09:50,000 --> 01:09:52,246 Що я хочу надрукувати, а, напевно? 1755 01:09:52,246 --> 01:09:52,590 Так. 1756 01:09:52,590 --> 01:09:55,270 Таким чином, "я". Таким чином,% D, I. 1757 01:09:55,270 --> 01:09:57,340 >> Так що я збираюся вкрасти одну з цих ідей від більш ранніх - 1758 01:09:57,340 --> 01:09:59,640 ця заміна формату кодів - 1759 01:09:59,640 --> 01:10:01,620 , А потім тут, внизу, я буду повертати 0, всього 1760 01:10:01,620 --> 01:10:02,710 для хорошої заходом. 1761 01:10:02,710 --> 01:10:04,740 Але тепер у мене є більш ємкі програми. 1762 01:10:04,740 --> 01:10:07,490 Це всього лише кілька рядків, а не який-небудь 10 або 11 ліній. 1763 01:10:07,490 --> 01:10:09,440 Пустіть мене до моєї рядку сюди. 1764 01:10:09,440 --> 01:10:10,630 Рімейк циклу. 1765 01:10:10,630 --> 01:10:12,140 Повторіть цикл. 1766 01:10:12,140 --> 01:10:13,570 І це, здається, те ж саме. 1767 01:10:13,570 --> 01:10:15,550 Тепер програма немає більш цікавою. 1768 01:10:15,550 --> 01:10:17,180 Але тепер я можу щось на зразок цього. 1769 01:10:17,180 --> 01:10:18,970 Я можу змінити це до 100. 1770 01:10:18,970 --> 01:10:21,400 Потім я можу перекомпілювати програму. 1771 01:10:21,400 --> 01:10:23,360 І тоді я зможу знову запустити мою програму. 1772 01:10:23,360 --> 01:10:26,390 І тепер він йде супер-швидко на сучасних комп'ютерах. 1773 01:10:26,390 --> 01:10:27,820 Але є в мене - 1774 01:10:27,820 --> 01:10:29,620 а насправді, мій прокрутки буфера не 1775 01:10:29,620 --> 01:10:30,890 навіть піти так далеко. 1776 01:10:30,890 --> 01:10:31,680 Там ми йдемо. 1777 01:10:31,680 --> 01:10:34,090 Так що у нас є всі 100. 1778 01:10:34,090 --> 01:10:35,880 Але це легко зробити помилки тут. 1779 01:10:35,880 --> 01:10:37,920 Що буде очікуване поведінка, якщо я 1780 01:10:37,920 --> 01:10:41,150 випадково це зробити? 1781 01:10:41,150 --> 01:10:42,550 Таким чином, він відчуває, як нескінченно. 1782 01:10:42,550 --> 01:10:44,670 Отже, давайте подивимося, якщо комп'ютер поводиться. 1783 01:10:44,670 --> 01:10:47,020 >> Отже, дозвольте мені піти далі і зробити петлю. 1784 01:10:47,020 --> 01:10:48,355 І дозвольте мені виконати цикл. 1785 01:10:53,590 --> 01:10:55,210 Так що давайте повернемося до цього через хвилину. 1786 01:10:55,210 --> 01:10:56,720 Ми повідомимо, які працюють. 1787 01:10:56,720 --> 01:10:59,520 Тому що ми повинні рахувати до, мінімально? 1788 01:10:59,520 --> 01:11:02,200 Ймовірно, принаймні, 2 млрд, якщо у нас є, що багато бітів, а 1789 01:11:02,200 --> 01:11:03,660 ми використовуємо позитивні значення. 1790 01:11:03,660 --> 01:11:04,890 Отже, давайте переходити сюди. 1791 01:11:04,890 --> 01:11:07,810 Крім цих видів петель, у нас є те, що називається в той час як 1792 01:11:07,810 --> 01:11:09,430 петель. Таким чином, як і в Scratch, ви мали Назавжди 1793 01:11:09,430 --> 01:11:11,240 блоки, і у вас повтор блоків. 1794 01:11:11,240 --> 01:11:13,270 Крім того, в C, ви просто є інші способи 1795 01:11:13,270 --> 01:11:14,260 виразити себе. 1796 01:11:14,260 --> 01:11:17,110 Так що у вас є це поняття в той час як цикл, який дозволяє 1797 01:11:17,110 --> 01:11:18,860 виразити себе трохи по-іншому. 1798 01:11:18,860 --> 01:11:21,490 І тоді у вас є те, що називається зроби той час як цикл, 1799 01:11:21,490 --> 01:11:24,200 , Який працює трохи по-іншому, а також. 1800 01:11:24,200 --> 01:11:25,320 І ми будемо дражнити один від одного ці з плином часу. 1801 01:11:25,320 --> 01:11:28,630 >> Але давайте подивимося на це останнє тут. 1802 01:11:28,630 --> 01:11:30,160 Якщо ми йдемо в - 1803 01:11:30,160 --> 01:11:31,466 все ще працює. 1804 01:11:31,466 --> 01:11:32,770 Це досить нескінченним. 1805 01:11:32,770 --> 01:11:36,870 Отже, дозвольте мені перейти в позитивну, і показати, як ми можемо насправді 1806 01:11:36,870 --> 01:11:39,410 управляти користувальницького введення небагато більш ефективно. 1807 01:11:39,410 --> 01:11:40,910 Це досить короткій програмі. 1808 01:11:40,910 --> 01:11:43,730 І тут у нас, в основному, Int N декларації. 1809 01:11:43,730 --> 01:11:46,570 Так дайте мені змінну с. Тепер, я буквально говорю 1810 01:11:46,570 --> 01:11:48,340 "Робити". А потім я отримав відкриту фігурні 1811 01:11:48,340 --> 01:11:49,630 дужки, недалеко фігурною дужкою. 1812 01:11:49,630 --> 01:11:52,000 А потім помітили, одразу після цього, він говорить, а п 1813 01:11:52,000 --> 01:11:53,790 менше, ніж 1. 1814 01:11:53,790 --> 01:11:55,300 Так зауважити, що ці лінії - 1815 01:11:55,300 --> 01:11:56,740 Від 19 до 24 - 1816 01:11:56,740 --> 01:11:59,450 складати колективно DO-циклу. 1817 01:11:59,450 --> 01:12:01,280 І знову ж, новий синтаксис, не нова ідея. 1818 01:12:01,280 --> 01:12:03,740 Це просто ще один спосіб циклів, синтаксично. 1819 01:12:03,740 --> 01:12:04,890 Так що ж це зробити? 1820 01:12:04,890 --> 01:12:08,000 Виконайте наступні дії в той час як п менше 1. 1821 01:12:08,000 --> 01:12:09,080 Отже, що ж я хочу зробити? 1822 01:12:09,080 --> 01:12:11,390 Я вимагаю, щоб ви дати мені ціле позитивне число. 1823 01:12:11,390 --> 01:12:14,110 Тоді я насправді намагаються отримати ціле число від користувача. 1824 01:12:14,110 --> 01:12:16,740 Але з точки зору порядку операцій тут, тому що 1825 01:12:16,740 --> 01:12:21,850 в той час як умова тут, я тоді збирався перевірити, п 1826 01:12:21,850 --> 01:12:23,100 менше ніж 1? 1827 01:12:23,100 --> 01:12:24,600 Таким чином, припустимо, що користувач - 1828 01:12:24,600 --> 01:12:26,450 після того, як зажадав таким чином - 1829 01:12:26,450 --> 01:12:29,190 типу в значення 0. 1830 01:12:29,190 --> 01:12:34,510 Ця умова буде істинно або хибно? 1831 01:12:34,510 --> 01:12:35,820 Ну, це насправді відбувається, щоб бути правдою. 1832 01:12:35,820 --> 01:12:38,700 Тому що п 0, 0 менше 1. 1833 01:12:38,700 --> 01:12:40,140 Так що ж це значить? 1834 01:12:40,140 --> 01:12:41,160 Зроби це ще раз. 1835 01:12:41,160 --> 01:12:41,990 Зроби це ще раз. 1836 01:12:41,990 --> 01:12:42,640 Зроби це ще раз. 1837 01:12:42,640 --> 01:12:46,080 Тільки один раз, що стан БРЕХНЯ. 1838 01:12:46,080 --> 01:12:47,510 Якщо я друкую в 42. 1839 01:12:47,510 --> 01:12:49,690 Ну ні, 42 не менше, ніж 1. 1840 01:12:49,690 --> 01:12:52,320 Тому цей цикл здійснюється виконання. 1841 01:12:52,320 --> 01:12:54,650 І ось в той момент, програма буде сказати, спасибі за 1842 01:12:54,650 --> 01:12:57,530 42, в цьому випадку. 1843 01:12:57,530 --> 01:13:00,320 Тепер у вас є це спосіб виразити себе - 1844 01:13:00,320 --> 01:13:02,360 Ми не повинні чекати цього до кінця. 1845 01:13:02,360 --> 01:13:03,620 Це займе деякий час. 1846 01:13:03,620 --> 01:13:04,990 Далі буде наступного разу, може бути. 1847 01:13:04,990 --> 01:13:08,050 >> Але тепер у вас є можливість, ми сподіваємося зрозуміти, 1848 01:13:08,050 --> 01:13:09,060 Трохи гумору виродка. 1849 01:13:09,060 --> 01:13:11,560 Вибачення. 1850 01:13:11,560 --> 01:13:13,620 Це не представник гумору в комп'ютерній науці 1851 01:13:13,620 --> 01:13:14,870 світу, але це мило. 1852 01:13:21,020 --> 01:13:23,890 [Сміється] Давайте кінця на цій ноті. 1853 01:13:23,890 --> 01:13:25,750 І ми будемо бачити Вас в понеділок. 1854 01:13:25,750 --> 01:13:31,629 [Оплески]