1 00:00:00,000 --> 00:00:00,000 2 00:00:00,000 --> 00:00:00,000 [МУЗИКА] 3 00:00:00,000 --> 00:00:13,950 4 00:00:13,950 --> 00:00:16,240 >> Дейвид Дж Малан: Добре, това е CS50. 5 00:00:16,240 --> 00:00:18,010 И това е една седмица. 6 00:00:18,010 --> 00:00:22,050 Така се припомни, че за последен път в нула седмица, ние се фокусирахме върху изчислителната мислене. 7 00:00:22,050 --> 00:00:25,440 И ние прехвърлихме от които да Scratch, графично програмиране 8 00:00:25,440 --> 00:00:27,360 език от нашите приятели в Media Lab на Масачузетския технологичен институт. 9 00:00:27,360 --> 00:00:31,730 >> И с Scratch, не сме проучи идеи като функции, както и условия, 10 00:00:31,730 --> 00:00:35,210 и примки, и променливи, а дори и събития и теми, и повече. 11 00:00:35,210 --> 00:00:37,880 И днес, ние ще продължите да използвате тези идеи, 12 00:00:37,880 --> 00:00:40,630 и наистина да ги приемате за даденост, но ги преведат 13 00:00:40,630 --> 00:00:44,220 на друг език, известен като C. Сега, C е по-традиционен език. 14 00:00:44,220 --> 00:00:46,020 Това е по-ниско ниво език, ако щете. 15 00:00:46,020 --> 00:00:47,300 >> Това е чисто текстова. 16 00:00:47,300 --> 00:00:49,910 И така, на пръв поглед, това е всичко ще изглежда по-скоро загадъчен 17 00:00:49,910 --> 00:00:51,430 ако никога не сте програмирани преди. 18 00:00:51,430 --> 00:00:53,530 Отиваме да имат точка и запетая и скоби, 19 00:00:53,530 --> 00:00:55,150 и фигурни скоби и др. 20 00:00:55,150 --> 00:00:57,240 Но осъзнавам, че дори макар че синтаксисът е 21 00:00:57,240 --> 00:01:00,600 за да изглежда малко по-незапознатите за повечето от вас, вижте покрай това. 22 00:01:00,600 --> 00:01:03,220 И се опитват да видят идеите че всъщност са запознати, 23 00:01:03,220 --> 00:01:06,750 защото тук, в една седмица какво ще започнем да направите, е да се сравни, 24 00:01:06,750 --> 00:01:08,980 първоначално, Scratch срещу C. 25 00:01:08,980 --> 00:01:12,350 >> Така, например, припомни, че когато ние изпълнена първата от нашите програми 26 00:01:12,350 --> 00:01:16,220 последно време, имахме един блок, който изглеждаше малко нещо като this-- когато 27 00:01:16,220 --> 00:01:19,990 зелен флаг кликнали, и след това имахме един или повече парчета под него пъзел, 28 00:01:19,990 --> 00:01:22,150 в този случай, да кажем, здравей свят. 29 00:01:22,150 --> 00:01:24,870 Така че, наистина, в Scratch, когато кликна, че зелен флаг 30 00:01:24,870 --> 00:01:27,390 да тече моята програма, така че да се каже, те са 31 00:01:27,390 --> 00:01:29,520 блоковете, които се изпълняват, или план. 32 00:01:29,520 --> 00:01:32,230 И по-конкретно, Scratch каза, здравей, свят. 33 00:01:32,230 --> 00:01:35,377 >> Сега, бих могъл да е посочено различни думи тук. 34 00:01:35,377 --> 00:01:37,960 Но ще видим, че, наистина, много на тези blocks-- И наистина, 35 00:01:37,960 --> 00:01:41,880 в C много functions-- могат да бъдат parametrized или потребителски 36 00:01:41,880 --> 00:01:43,150 да направим различни неща. 37 00:01:43,150 --> 00:01:45,520 Всъщност в C, ако ние искате да конвертирате, сега, 38 00:01:45,520 --> 00:01:47,567 това Scratch програма до този друг език, 39 00:01:47,567 --> 00:01:49,650 ние ще напише малко нещо като това. 40 00:01:49,650 --> 00:01:52,540 >> Разбира се, има някои непознати синтаксис там най-вероятно, INT, 41 00:01:52,540 --> 00:01:54,380 и скоби, както и невалидни. 42 00:01:54,380 --> 00:01:57,740 Но printf-- въпреки че бихте мисля, че това ще бъде само за печат. 43 00:01:57,740 --> 00:02:00,120 Но печат означава печат форматирани, както ние скоро ще видите. 44 00:02:00,120 --> 00:02:02,140 Това буквално ще отпечата на екрана каквото 45 00:02:02,140 --> 00:02:05,990 е вътре в тези скоби, които Разбира се в този случай е, здравей свят. 46 00:02:05,990 --> 00:02:09,290 >> Но вие ще забележите някои други синтаксис, някои двойни кавички, 47 00:02:09,290 --> 00:02:11,890 че скобите в края, полу-дебелото черво и други подобни. 48 00:02:11,890 --> 00:02:15,027 Така че там е малко на режийни, така да се каже, както познавателно 49 00:02:15,027 --> 00:02:17,860 и синтактично, че отиваме да трябва да помните, преди дълго. 50 00:02:17,860 --> 00:02:20,720 Но осъзнавам, че с практиката, това ще започне да скочи от вас. 51 00:02:20,720 --> 00:02:24,920 >> Всъщност, нека да се съсредоточи върху това един функция specifically-- в този случай, 52 00:02:24,920 --> 00:02:26,290 поздрави свят. 53 00:02:26,290 --> 00:02:27,560 Така се каже, е функцията. 54 00:02:27,560 --> 00:02:31,320 Здравей, свят е неговата параметър, или аргумент, нейното персонализиране. 55 00:02:31,320 --> 00:02:34,320 >> И равностойността в C е просто ще бъде този един ред тук, 56 00:02:34,320 --> 00:02:38,710 където ФОРМАТ е еквивалентна на, да речем, двойната цитиран низ, здравей 57 00:02:38,710 --> 00:02:41,470 свят е еквивалент, разбира се, за това, което е в бялото поле там. 58 00:02:41,470 --> 00:02:45,680 И обратно наклонена черта N, макар и малко странен и отсъства от нулата, 59 00:02:45,680 --> 00:02:49,380 просто няма да има ефект, ние ще виж в един компютър, като моя Mac или PC, 60 00:02:49,380 --> 00:02:51,660 от просто преместване на курсора на следващия ред. 61 00:02:51,660 --> 00:02:53,970 Това е като да удря Въведете от клавиатурата. 62 00:02:53,970 --> 00:02:55,580 >> Така че ние ще видим, че отново не след дълго. 63 00:02:55,580 --> 00:02:58,640 Но първо, нека да погледнем на този друг пример в случая на цикли. 64 00:02:58,640 --> 00:03:02,830 Имахме тази завинаги линия последно време, който беше серия от пъзел парчета 65 00:03:02,830 --> 00:03:05,490 че е направил нещо буквално forever-- в този случай, 66 00:03:05,490 --> 00:03:08,360 се каже, здравей свят, здравей свят, Здравей, свят, здравей свят. 67 00:03:08,360 --> 00:03:10,350 Така че това е един безкраен цикъл от дизайн. 68 00:03:10,350 --> 00:03:14,580 >> В C, ако искаме да се приложи това същата идея, бихме могли просто да направите това. 69 00:03:14,580 --> 00:03:19,570 Докато е вярно, ФОРМАТ здравей world-- сега а, просто семантично, вид 70 00:03:19,570 --> 00:03:23,090 внушава идеята за правене нещо отново и отново и отново, 71 00:03:23,090 --> 00:03:23,980 и за колко време? 72 00:03:23,980 --> 00:03:27,990 Е, true-- припомни, че Вярно е само на или един. 73 00:03:27,990 --> 00:03:30,660 >> И вярно е, разбира се, винаги е вярно. 74 00:03:30,660 --> 00:03:33,060 Така че това е нещо като безсмислен изявление просто да каже вярно. 75 00:03:33,060 --> 00:03:36,890 Но наистина, това е умишлено, защото ако е вярно е просто винаги е вярно, 76 00:03:36,890 --> 00:03:40,850 отколкото докато вярно само предполага, ако малко непряко 77 00:03:40,850 --> 00:03:44,070 че следващите редове с код между тези фигурни скоби 78 00:03:44,070 --> 00:03:48,320 просто трябва да се изпълни отново, и отново, и отново, и всъщност никога не спира. 79 00:03:48,320 --> 00:03:50,230 >> Но ако искате вашия контур да се спре, тъй като ние 80 00:03:50,230 --> 00:03:54,500 Направих последен път с нещо подобно това, повторете следните 50 пъти, 81 00:03:54,500 --> 00:03:57,700 в C можем да направим същото и с това, което е нарича за loop-- ключова дума 82 00:03:57,700 --> 00:03:59,330 не е време, но за. 83 00:03:59,330 --> 00:04:03,290 И тогава имаме някакъв нов синтаксис тук, с инт аз равна на 0, аз по-малко от 50, 84 00:04:03,290 --> 00:04:03,880 I ++. 85 00:04:03,880 --> 00:04:05,430 И ние ще се върнем към това. 86 00:04:05,430 --> 00:04:09,660 Но това е просто начина, по който ще превежда на снимачната площадка на надраскване блокове 87 00:04:09,660 --> 00:04:13,079 с набор от C реда код. 88 00:04:13,079 --> 00:04:14,450 >> В същото време, помисли променливи. 89 00:04:14,450 --> 00:04:16,540 И, всъщност, ние просто Видях един преди малко. 90 00:04:16,540 --> 00:04:21,220 И в случай на Scratch, ако ние Исках да декларира променлива, наречена I 91 00:04:21,220 --> 00:04:24,590 защото е число, само няколко, и ние искаме да го постави в някаква стойност, 92 00:04:24,590 --> 00:04:28,410 ние ще използваме този портокал блокират here-- зададете аз до 0. 93 00:04:28,410 --> 00:04:30,800 >> И ние ще видим днес и отвъд, точно както миналата седмица, 94 00:04:30,800 --> 00:04:33,850 програмисти правят почти винаги започне броенето от нулата, наистина 95 00:04:33,850 --> 00:04:34,950 по конвенция. 96 00:04:34,950 --> 00:04:37,250 Но също така, защото изземване от нашата дискусия на двоичен, 97 00:04:37,250 --> 00:04:39,990 най-малкият брой можете представляват, с произволен брой битове 98 00:04:39,990 --> 00:04:41,640 е просто ще бъде 0 самия. 99 00:04:41,640 --> 00:04:45,190 И така, ние ще обикновено започнете инициализиране дори нашите променливи до 0. 100 00:04:45,190 --> 00:04:47,710 >> И в C да направят същото, ние ще кажем, инт 101 00:04:47,710 --> 00:04:50,110 за число, аз просто по споразумение. 102 00:04:50,110 --> 00:04:53,390 Можех да нарича тази променлива всичко, което искам, точно като в Scratch. 103 00:04:53,390 --> 00:04:57,770 И след това се равнява на 0 само правоприемници стойност 0 отдясно 104 00:04:57,770 --> 00:05:01,319 и го слага в променливата, или на контейнер за съхранение там, в ляво. 105 00:05:01,319 --> 00:05:04,360 И точка и запетая, тъй като ние ще see-- и сме виждали някои от тези already-- 106 00:05:04,360 --> 00:05:06,530 просто означава край на мисълта. 107 00:05:06,530 --> 00:05:09,430 Продължете да направи нещо друго по линиите, които следват. 108 00:05:09,430 --> 00:05:11,330 >> Сега, какво да кажем за булеви изрази? 109 00:05:11,330 --> 00:05:14,320 Припомнете си, че в самото начало, това са изрази, 110 00:05:14,320 --> 00:05:16,740 че са или истина или false-- въпроси, 111 00:05:16,740 --> 00:05:18,910 наистина, че са или вярно или невярно. 112 00:05:18,910 --> 00:05:21,960 Така че, в случай на Scratch, можем да попитам един прост въпрос като този, 113 00:05:21,960 --> 00:05:24,586 е аз по-малко от 50? 114 00:05:24,586 --> 00:05:25,710 Така че, отново, е цяло число. 115 00:05:25,710 --> 00:05:27,210 Може би ние го използвате в програма Scratch 116 00:05:27,210 --> 00:05:29,310 за да следите на полувремето Или нещо такова. 117 00:05:29,310 --> 00:05:33,810 Така че този синтаксис тук в Scratch просто означава, е, че по-малко от 50? 118 00:05:33,810 --> 00:05:37,330 Е, за щастие, нещо е просто в C. И да превежда, 119 00:05:37,330 --> 00:05:41,780 това ние просто ще кажа, че по-малко от 50, като се използва познат ключ 120 00:05:41,780 --> 00:05:42,850 на клавиатурата. 121 00:05:42,850 --> 00:05:45,141 >> В същото време, ако искате да каже нещо по-общо, 122 00:05:45,141 --> 00:05:49,890 като, добре, е х-малко от Y, където всеки на х и у самите променливи са? 123 00:05:49,890 --> 00:05:52,280 Ние можем да направим същото нещо в C, толкова дълго, тъй като ние сме 124 00:05:52,280 --> 00:05:53,942 създадени тези променливи вече. 125 00:05:53,942 --> 00:05:55,650 И ние ще видим как да направя, че не след дълго. 126 00:05:55,650 --> 00:05:58,590 Ние просто ще кажа, х-малко от ш. 127 00:05:58,590 --> 00:06:00,530 >> Така че ако започне да виж някои прилики. 128 00:06:00,530 --> 00:06:03,490 И тези хора, които са направили Scratch със сигурност са били 129 00:06:03,490 --> 00:06:05,250 вдъхновена от някои от тези основни идеи. 130 00:06:05,250 --> 00:06:10,350 И ще видите на този вид синтаксис в много languages-- 131 00:06:10,350 --> 00:06:12,160 не само нулата, не само C, но Python, 132 00:06:12,160 --> 00:06:14,790 и JavaScript, и други езици на едно място. 133 00:06:14,790 --> 00:06:18,270 >> Нека разгледаме още един конструкт от С, понятието на състояние, 134 00:06:18,270 --> 00:06:20,370 прави нещо условно. 135 00:06:20,370 --> 00:06:22,720 Ако нещо е вярно, направи това. 136 00:06:22,720 --> 00:06:24,457 Ако нещо друго е вярно, прави това. 137 00:06:24,457 --> 00:06:27,040 Това е нещо програмирането еквивалент на разклонение на пътя. 138 00:06:27,040 --> 00:06:29,730 Може би това е двупосочна вилица, трипътен вилица, или повече. 139 00:06:29,730 --> 00:06:32,800 И в Scratch, да имаме виждал нещо подобно. 140 00:06:32,800 --> 00:06:34,010 >> Така че това е една голяма. 141 00:06:34,010 --> 00:06:36,750 Но се разгледа относителната простота на логиката. 142 00:06:36,750 --> 00:06:44,010 Ако X е по-малко от Y, тогава X е по-малко каже от Y, иначе, ако х е по-голяма от у, 143 00:06:44,010 --> 00:06:46,230 след това казват, х е по-голямо, отколкото у. 144 00:06:46,230 --> 00:06:48,300 И след това, логично, ако мислите, че обратно на Scratch 145 00:06:48,300 --> 00:06:52,610 или просто свой собствен човешката интуиция, и, ако X е не по-голяма от у и х 146 00:06:52,610 --> 00:06:57,000 е не по-малко от Y, тогава, разбира се, х ще е равно на х. 147 00:06:57,000 --> 00:06:59,690 Така че в този случай, от гнездене тези Scratch блокове, 148 00:06:59,690 --> 00:07:02,580 можем да постигнем три начин разклонение на пътя? 149 00:07:02,580 --> 00:07:04,980 >> В същото време, ако искаме да направи това в C, то може би 150 00:07:04,980 --> 00:07:08,420 изглежда малко simpler-- най-малко след като се запознае с синтаксиса. 151 00:07:08,420 --> 00:07:12,050 Ако X е по-малко от Y, ФОРМАТ х е по-малко от Y. 152 00:07:12,050 --> 00:07:16,140 Иначе, ако х е по-голяма от у, ФОРМАТ х е по-голяма от у. 153 00:07:16,140 --> 00:07:21,210 Иначе ФОРМАТ х е равно на y-- и, отново, с тези, наклонена черта завършва просто 154 00:07:21,210 --> 00:07:24,160 за тези нови линии, така че ако ви всъщност изтича този вид програма 155 00:07:24,160 --> 00:07:25,940 той просто ще се премести курсора в края на краищата 156 00:07:25,940 --> 00:07:28,100 на следващия ред на екрана. 157 00:07:28,100 --> 00:07:31,270 >> Сега, междувременно Scratch имаше друга по-сложни функции, само 158 00:07:31,270 --> 00:07:34,320 някои от които ние ще първоначално насочат към света на C. 159 00:07:34,320 --> 00:07:37,010 И един от тях е наречен списък в Scratch. 160 00:07:37,010 --> 00:07:39,100 И това беше специален тип на променлива, която 161 00:07:39,100 --> 00:07:42,840 да ви е позволено да се съхранява няколко неща в това обратно, за да архивирате, за да архивирате, за да архивирате. 162 00:07:42,840 --> 00:07:45,540 >> В C, че не разполага с списъци, само по себе си, но нещо 163 00:07:45,540 --> 00:07:48,090 които са по-общо наречен масиви, въпреки че ние ще 164 00:07:48,090 --> 00:07:50,590 да се върне по-късно този семестър да гледаш нещо 165 00:07:50,590 --> 00:07:52,780 нарича списък, или наистина списък свързан. 166 00:07:52,780 --> 00:07:55,510 Но за сега, най-близо еквивалент в C за нас 167 00:07:55,510 --> 00:07:57,345 ще бъде нещо наречен масив. 168 00:07:57,345 --> 00:07:59,740 И масив е просто специален вид променлива 169 00:07:59,740 --> 00:08:03,160 която ви позволява да съхранявате данните обратно, за да архивирате, за да архивирате, да върне. 170 00:08:03,160 --> 00:08:05,840 >> И наистина, в Scratch, ако искахме да получите достъп до 171 00:08:05,840 --> 00:08:09,030 първият елемент на масив или а list-- и аз ще го наричаме, 172 00:08:09,030 --> 00:08:13,600 по силата на споразумение, argv, аргумент вектор, но повече за това не след дълго. 173 00:08:13,600 --> 00:08:17,090 Ако аз искам да отида в първия елемент на argv, в света на Scratch 174 00:08:17,090 --> 00:08:20,930 вие всъщност правите обикновено започнем да броим от 1. 175 00:08:20,930 --> 00:08:22,850 >> И така, аз може да получите т.1 от argv. 176 00:08:22,850 --> 00:08:26,310 Това е просто как изпълнява MIT понятието списъци. 177 00:08:26,310 --> 00:08:29,860 Но в C, аз ще по-просто само да кажа, argv, 178 00:08:29,860 --> 00:08:32,758 който отново е името на моя list-- или да бъде ясен, масив. 179 00:08:32,758 --> 00:08:34,549 И ако искам първият елементи, аз ще съм 180 00:08:34,549 --> 00:08:37,890 да използвате квадратни скоби, които ви може често не се използва при по-клавиатура. 181 00:08:37,890 --> 00:08:40,150 >> Но 0 просто означава, ме първата. 182 00:08:40,150 --> 00:08:42,160 Така че от време на време и като с течение на времето, ние ще 183 00:08:42,160 --> 00:08:44,570 да започнете да виждате тези противопоставяния между Scratch и C, 184 00:08:44,570 --> 00:08:46,070 при което Scratch използва един. 185 00:08:46,070 --> 00:08:47,670 Ние в C използвайте 0 тук. 186 00:08:47,670 --> 00:08:49,420 Но вие бързо ще видите след като разберете 187 00:08:49,420 --> 00:08:52,920 основите на всеки език, това тези неща започват да се получи още по- 188 00:08:52,920 --> 00:08:56,860 запознат чрез практика и практика. 189 00:08:56,860 --> 00:08:59,700 >> Така че нека действително изглежда сега в една програма. 190 00:08:59,700 --> 00:09:04,031 Тук ще бъде първият от нашата C изходния код за цялостни програми. 191 00:09:04,031 --> 00:09:06,280 И програмата отиваме да предложи за разглеждане 192 00:09:06,280 --> 00:09:09,340 е този, който е еквивалентен за които по-рано Scratch парче. 193 00:09:09,340 --> 00:09:13,210 >> Така че тук, ние имаме това, което е може би най-простият програмата C 194 00:09:13,210 --> 00:09:15,410 можете да напишете, че всъщност прави нещо. 195 00:09:15,410 --> 00:09:18,250 Сега, ние ще разгледаме минало, за сега, е да включват, 196 00:09:18,250 --> 00:09:21,190 стандарт io.h, и тези ъгъл скоби, и INT, и нищожен, 197 00:09:21,190 --> 00:09:22,840 и фигурните скоби и други подобни. 198 00:09:22,840 --> 00:09:25,390 >> И нека просто се съсредоточи върху какво, поне интуитивно, 199 00:09:25,390 --> 00:09:26,860 може да скочи върху вас вече. 200 00:09:26,860 --> 00:09:30,300 Всъщност, основната, аз не правя непременно знае какво е това, 201 00:09:30,300 --> 00:09:34,580 но много прилича Scratch имаше, че когато зелен флаг кликнали пъзел парче, 202 00:09:34,580 --> 00:09:39,070 така че няма C като език за програмиране има основна част от код, който 203 00:09:39,070 --> 00:09:43,380 се изпълни по подразбиране. И, наистина, това е буквално ще се нарича основна. 204 00:09:43,380 --> 00:09:44,720 >> Така че основното е функция. 205 00:09:44,720 --> 00:09:48,720 И това е специална функция, която съществува в C, че когато стартирате програмата, 206 00:09:48,720 --> 00:09:52,720 това е основната, които получава, управляван от по подразбиране. В света на Scratch, 207 00:09:52,720 --> 00:09:56,970 то обикновено е, когато зелено знаме кликнали, че имам работи по подразбиране. 208 00:09:56,970 --> 00:10:01,130 >> В същото време, ние сме виждали това и преди, ФОРМАТ или печат форматиран, че е 209 00:10:01,130 --> 00:10:05,620 ще бъде функция, която идва с C, заедно с цял куп други, 210 00:10:05,620 --> 00:10:10,140 че волята от време и времето отново, за да се направи точно 211 00:10:10,140 --> 00:10:12,450 както подсказва името му, отпечатате нещо. 212 00:10:12,450 --> 00:10:13,500 Какво искаме да печата? 213 00:10:13,500 --> 00:10:15,770 Е, ще видим, че от ограждащи герои 214 00:10:15,770 --> 00:10:18,680 като these-- свят здравей, наклонена черта н в двойни кавички, 215 00:10:18,680 --> 00:10:23,040 ние можем да кажем ФОРМАТ точно какво да се отпечата на екрана. 216 00:10:23,040 --> 00:10:26,430 >> Но, за да се направи че, за съжаление, 217 00:10:26,430 --> 00:10:30,010 трябва да се вземе нещо, което е вече загадъчен за нас, хората, 218 00:10:30,010 --> 00:10:34,510 но поне е малко по-readable-- остър включва стандартен io.h, INT, 219 00:10:34,510 --> 00:10:39,340 Основната, нищожен, ФОРМАТ, всички магически заклинания ние просто видяха на екрана. 220 00:10:39,340 --> 00:10:42,470 Но ние всъщност трябва да отида по-тайнствена все още. 221 00:10:42,470 --> 00:10:47,140 Ние първо трябва да се преведат на кода че пишем в машинен код. 222 00:10:47,140 --> 00:10:51,370 И припомнят от миналата седмица, че машините, най-малко тези, които познаваме тук, 223 00:10:51,370 --> 00:10:54,450 в края на деня само разбере нули и единици. 224 00:10:54,450 --> 00:10:58,100 >> И моят Бог, ако ние трябваше да пиша тези нули и единици до действително програма, 225 00:10:58,100 --> 00:11:01,260 тя би много, много бързо вземат на шега от нищо. 226 00:11:01,260 --> 00:11:05,150 Но се оказва, за миналата седмица, че тези модели на нули и единици 227 00:11:05,150 --> 00:11:06,400 Просто трябва специално значение. 228 00:11:06,400 --> 00:11:08,500 В някои контексти, те може да означава номера. 229 00:11:08,500 --> 00:11:11,840 >> В някои контексти, те може да означава, букви или цветове, или произволен брой 230 00:11:11,840 --> 00:11:14,710 на други абстракции там върху. 231 00:11:14,710 --> 00:11:18,450 Но точно както на компютъра ви има на CPU, Централен процесор, 232 00:11:18,450 --> 00:11:20,390 или мозъците вътре на вашия компютър. 233 00:11:20,390 --> 00:11:22,240 Това е обикновено Intel вътре, защото това е 234 00:11:22,240 --> 00:11:24,900 един от най-големите компании че прави процесори за компютри. 235 00:11:24,900 --> 00:11:28,910 >> Е, Intel процесори и др просто са решили предварително 236 00:11:28,910 --> 00:11:33,970 че някои модели на нули и такива означава конкретни неща. 237 00:11:33,970 --> 00:11:37,040 Някои модели на нули и единици ще означава, отпечатайте тази на екрана, 238 00:11:37,040 --> 00:11:39,710 или добавете тези две числа, или извадим тези две числа, 239 00:11:39,710 --> 00:11:43,310 или премести тази част от данните от памет на компютъра ми тук, 240 00:11:43,310 --> 00:11:47,870 или произволен брой други много ниско ниво, но в крайна сметка полезно, операции. 241 00:11:47,870 --> 00:11:53,022 Но, за щастие, ние, хората са не вървеше да трябва да знаете това ниво на детайлност. 242 00:11:53,022 --> 00:11:56,230 Всъщност, точно като последния път, когато ние абстрахира отново, и отново, и отново, 243 00:11:56,230 --> 00:11:58,930 сграда от много ниско ниво примитиви като нули и единици 244 00:11:58,930 --> 00:12:01,160 за концепции по-високо ниво като цифри и букви, 245 00:12:01,160 --> 00:12:04,330 и цветове, както и повече, така можем и ние като програмисти 246 00:12:04,330 --> 00:12:07,080 стои на раменете на други, които са дошли преди нас 247 00:12:07,080 --> 00:12:11,260 и използвате софтуер, който друга хора са писали преди us-- 248 00:12:11,260 --> 00:12:14,340 а именно програми, наречени компилатори. 249 00:12:14,340 --> 00:12:17,770 >> C е език, който обикновено се компилира, 250 00:12:17,770 --> 00:12:22,130 което означава да преобразува от изходния код на машинен код. 251 00:12:22,130 --> 00:12:25,230 По-конкретно, какво означава това е, че ако имаш източник 252 00:12:25,230 --> 00:12:29,530 код, който вие сами пишат, тъй като ние скоро ще в един момент на екрана, 253 00:12:29,530 --> 00:12:33,140 и искате да го превърнете в крайна сметка да се машина code-- 254 00:12:33,140 --> 00:12:37,100 тези нули и единици, които само вашия Mac или вашия компютър 255 00:12:37,100 --> 00:12:41,230 understands-- имаш първи хранят, че изходния код в като 256 00:12:41,230 --> 00:12:46,340 въвеждане на специален програма, наречена компилатор, 257 00:12:46,340 --> 00:12:48,974 на изхода на който трябва да видите е машинен код. 258 00:12:48,974 --> 00:12:51,890 И наистина, за последен път говорихме за, наистина, в края на деня, 259 00:12:51,890 --> 00:12:52,610 разрешаване на проблем. 260 00:12:52,610 --> 00:12:53,360 Имаш входове. 261 00:12:53,360 --> 00:12:54,318 И имаш изходи. 262 00:12:54,318 --> 00:12:56,560 И имаш някакъв вид на алгоритъм в средата. 263 00:12:56,560 --> 00:12:59,830 >> Алгоритми със сигурност могат да бъдат приложени в областта на софтуера, 264 00:12:59,830 --> 00:13:02,900 както видяхме с Псевдокод миналата седмица и както ще видим с действителния код 265 00:13:02,900 --> 00:13:03,490 тази седмица. 266 00:13:03,490 --> 00:13:06,430 И така компилатор наистина просто има набор от алгоритми вътре 267 00:13:06,430 --> 00:13:10,060 на това, че знаят как да превръщане на специални ключови думи, 268 00:13:10,060 --> 00:13:12,180 като основна, и ФОРМАТ, и други, които ние просто 269 00:13:12,180 --> 00:13:17,620 Видях в моделите на нули и Тези, които Intel вътре и други процесори 270 00:13:17,620 --> 00:13:20,020 всъщност разбира. 271 00:13:20,020 --> 00:13:22,460 И как ще стане това? 272 00:13:22,460 --> 00:13:24,470 Къде ще стигнем компилатор? 273 00:13:24,470 --> 00:13:26,400 >> Повечето от нас тук имат Mac или PC. 274 00:13:26,400 --> 00:13:29,152 И сте с Mac OS, или Windows или Linux, или Solaris, 275 00:13:29,152 --> 00:13:30,860 или произволен брой други операционна система. 276 00:13:30,860 --> 00:13:32,568 И наистина, бихме могли излезеш в интернет 277 00:13:32,568 --> 00:13:35,710 и изтегляне на компилатор за вашия Mac или вашия компютър 278 00:13:35,710 --> 00:13:37,360 за вашата операционна система. 279 00:13:37,360 --> 00:13:39,617 Но всички ние ще бъдем на различни страници, така да се каже. 280 00:13:39,617 --> 00:13:41,450 Ние ще трябва леко различни конфигурации. 281 00:13:41,450 --> 00:13:43,210 И нещата няма да работи все едно. 282 00:13:43,210 --> 00:13:45,280 И наистина, тези дни много от нас не използвайте 283 00:13:45,280 --> 00:13:47,516 софтуер, който работи само на нашите лаптопи. 284 00:13:47,516 --> 00:13:49,390 Вместо това, ние използваме нещо като браузър, който 285 00:13:49,390 --> 00:13:52,930 ни позволява да получите достъп до уеб-базирани приложения в облака. 286 00:13:52,930 --> 00:13:55,630 И по-късно този семестър, ние ще направим точно това. 287 00:13:55,630 --> 00:13:59,660 Ние ще пишат приложения или софтуер, използвайки code-- не C, 288 00:13:59,660 --> 00:14:02,860 но други езици като Python и JavaScript--, които работят в облака. 289 00:14:02,860 --> 00:14:05,860 >> И за да направим това, ние се по време на семестъра 290 00:14:05,860 --> 00:14:11,890 всъщност ще се използва, базирана на облак среда, известна като CS50 IDE. 291 00:14:11,890 --> 00:14:16,030 Това е уеб-базирано програмиране среда, или интегрирано развитие 292 00:14:16,030 --> 00:14:20,610 среда, IDE, която е изградена на върха на някои софтуер с отворен код, наречен Cloud 9. 293 00:14:20,610 --> 00:14:22,966 И сме направили някои педагогически опростявания към него 294 00:14:22,966 --> 00:14:25,840 така че да се скрие, определени функции в първите седмици, че ние не се нуждаят, 295 00:14:25,840 --> 00:14:27,770 след което можете да ги разкрие и да направим най- 296 00:14:27,770 --> 00:14:29,400 всичко, което искате с околната среда. 297 00:14:29,400 --> 00:14:32,470 >> И това ни позволява също да предварително инсталиран определен софтуер. 298 00:14:32,470 --> 00:14:35,330 Неща като т.нар CS50 библиотека, която ние скоро ще видите, 299 00:14:35,330 --> 00:14:39,210 ни предоставя в C с някои допълнителна функционалност. 300 00:14:39,210 --> 00:14:44,392 Така че, ако отидете да, в крайна сметка, CS50.io, Вие ще бъдете подканени да влезете в системата, 301 00:14:44,392 --> 00:14:46,350 и след като се направи и да се създаде сметка за свободен, 302 00:14:46,350 --> 00:14:52,150 ще бъде в състояние за достъп до среда, която изглежда доста подобно на това. 303 00:14:52,150 --> 00:14:53,760 >> Сега, това е в режим по подразбиране. 304 00:14:53,760 --> 00:14:55,650 Всичко е хубаво и ярко на екрана. 305 00:14:55,650 --> 00:14:57,941 Много от нас имат навика работи по CS50 парче, че е 306 00:14:57,941 --> 00:14:59,150 доста късно през нощта. 307 00:14:59,150 --> 00:15:02,400 И така, някои от вас може да предпочетат да да го превърне в нощен режим, така да се каже. 308 00:15:02,400 --> 00:15:05,550 >> Но, в крайна сметка, това, което сте ще видим в рамките на CS50 IDE 309 00:15:05,550 --> 00:15:08,340 е три отделни areas-- площ в ляво, където е 310 00:15:08,340 --> 00:15:12,604 вашите файлове ще бъдат в облак, на площ в горния десен ъгъл 311 00:15:12,604 --> 00:15:14,270 където си код ще бъде може да се редактира. 312 00:15:14,270 --> 00:15:16,650 Вие ще бъдете в състояние да се отвори отделните раздели за всяка програма 313 00:15:16,650 --> 00:15:19,670 че ти пиша този семестър вътре на която горния десен ъгъл. 314 00:15:19,670 --> 00:15:23,070 И тогава най-arcanely, и все още силно, 315 00:15:23,070 --> 00:15:26,610 ще бъде това нещо в отдолу, известна като терминален прозорец. 316 00:15:26,610 --> 00:15:29,450 >> Това е старата школа Command Line Interface, 317 00:15:29,450 --> 00:15:32,240 или CLI, която позволява можете да изпълнява команди 318 00:15:32,240 --> 00:15:35,260 на computer-- в този случай, компютъра в cloud-- 319 00:15:35,260 --> 00:15:39,090 да направя неща, като съставят своя код от изходния код на машинен код, 320 00:15:39,090 --> 00:15:43,600 да тече си програми, или да започнат свой уеб сървър, или за достъп до база данни, 321 00:15:43,600 --> 00:15:47,454 и всякакъв брой други техники че ние ще започнем да използваме преди дълго. 322 00:15:47,454 --> 00:15:49,370 Но за да стигнем до там, ние сме Ще всъщност имат 323 00:15:49,370 --> 00:15:51,240 да отидете онлайн и да започнете да играете. 324 00:15:51,240 --> 00:15:54,399 И да се направи това, нека първо започнете бърникането с основната, 325 00:15:54,399 --> 00:15:55,940 и пише основната част от програмата. 326 00:15:55,940 --> 00:15:59,170 И нека да използвате тази функция ФОРМАТ, който се използва по-рано, 327 00:15:59,170 --> 00:16:01,050 просто да каже нещо. 328 00:16:01,050 --> 00:16:04,910 >> Така че тук вече съм вътре на CS50 IDE. 329 00:16:04,910 --> 00:16:05,930 Аз съм регистриран в аванс. 330 00:16:05,930 --> 00:16:07,360 И аз пълен пресява през прозореца. 331 00:16:07,360 --> 00:16:09,670 И така, в края на краищата, вие прекалено през следващите проблеми 332 00:16:09,670 --> 00:16:12,960 ще следват подобни стъпки, които ще осигури онлайн документация. 333 00:16:12,960 --> 00:16:16,360 Така че не е нужно да се притеснявате за абсорбиране на всяко малко техническа стъпка 334 00:16:16,360 --> 00:16:17,730 че правя тук днес. 335 00:16:17,730 --> 00:16:19,222 >> Но вие ще получите екран като този. 336 00:16:19,222 --> 00:16:20,430 Аз се случи да бъде в нощен режим. 337 00:16:20,430 --> 00:16:22,944 И вие може да се проясни всичко от блокирането нощен режим. 338 00:16:22,944 --> 00:16:24,860 И в края на ден, ти започваш да се види 339 00:16:24,860 --> 00:16:30,090 тези три основни areas-- файла браузъра в ляво, кодови разделите до върха, 340 00:16:30,090 --> 00:16:32,430 и на терминал прозореца в дъното. 341 00:16:32,430 --> 00:16:34,890 >> Нека да вървим напред и да напише първата си програма. 342 00:16:34,890 --> 00:16:42,300 Отивам да изпреварващо да отидете на File, Запазване и запазете файла ми като hello.c. 343 00:16:42,300 --> 00:16:46,850 В действителност, по силата на споразумение, всяка програма ние пишат, че е написана на езика на C 344 00:16:46,850 --> 00:16:49,739 трябва да бъде наречена нещо точка С, по споразумение. 345 00:16:49,739 --> 00:16:53,030 Така че аз ще го наречете hello.c, защото Просто искам да кажа здравей на света. 346 00:16:53,030 --> 00:16:54,820 Сега аз ще я увеличите навън и натиснете Save. 347 00:16:54,820 --> 00:16:58,180 И всичко, което имам тук, сега е раздела в които мога да започнете да пишете код. 348 00:16:58,180 --> 00:16:59,490 >> Това няма да се компилира. 349 00:16:59,490 --> 00:17:00,300 Това не означава нищо. 350 00:17:00,300 --> 00:17:02,750 И така, дори и да преобразува това да нули и единици, 351 00:17:02,750 --> 00:17:05,390 процесора ще има не представа какво става наоколо. 352 00:17:05,390 --> 00:17:14,170 Но ако аз пиша линии, които съвпадат с conventions-- C същество C е, 353 00:17:14,170 --> 00:17:20,150 отново, този language-- с синтаксис като това, ФОРМАТ здравей world-- и съм 354 00:17:20,150 --> 00:17:22,210 намерила удобно с прави това с течение на времето. 355 00:17:22,210 --> 00:17:24,510 Така че аз не мисля, че съм направил всички печатни грешки. 356 00:17:24,510 --> 00:17:27,910 >> Но, неизменно, самото начало път, когато направите това, вие ще. 357 00:17:27,910 --> 00:17:31,090 И това, което аз съм на път да направи много вероятно добре да не работи за вас за първи път. 358 00:17:31,090 --> 00:17:33,610 И това е напълно ОК, защото точно сега 359 00:17:33,610 --> 00:17:37,662 може просто да видите един куп новост, но с течение на времето, след като се запознае 360 00:17:37,662 --> 00:17:39,870 с тази на околната среда, и този език, и други, 361 00:17:39,870 --> 00:17:42,370 вие ще започнете да виждате неща, които са или правилен или неправилен. 362 00:17:42,370 --> 00:17:44,369 >> И това е, което преподаване събратя и разбира се 363 00:17:44,369 --> 00:17:48,780 помощници получават толкова добри в течение на времето, се зацапване грешки или грешки в кода си. 364 00:17:48,780 --> 00:17:52,110 Но аз твърдя, че има не са грешки в този код. 365 00:17:52,110 --> 00:17:53,990 Така че сега искате да използвате тази програма. 366 00:17:53,990 --> 00:17:57,440 >> Сега на моята собствена Mac или PC, аз съм в навика двойни икони кликвания 367 00:17:57,440 --> 00:17:59,350 когато искате да стартирате някоя програма. 368 00:17:59,350 --> 00:18:01,080 Но това не е моделът тук. 369 00:18:01,080 --> 00:18:04,570 В тази среда, която е CS50 IDE. 370 00:18:04,570 --> 00:18:07,192 Ние се използва оперативен система, наречена Linux. 371 00:18:07,192 --> 00:18:09,900 Linux напомня на друг операционна система, известна 372 00:18:09,900 --> 00:18:10,850 като Unix. 373 00:18:10,850 --> 00:18:16,340 И Linux е особено известен имащ Command Line околната среда, CLI. 374 00:18:16,340 --> 00:18:20,070 Сега, ние сме с помощта на специален вкус на Linux, наречена Ubuntu. 375 00:18:20,070 --> 00:18:22,770 И Ubuntu е просто определена версия на Linux. 376 00:18:22,770 --> 00:18:27,900 >> Но тези на Linux тези дни да направя всъщност дойде с графичен потребителски интерфейс. 377 00:18:27,900 --> 00:18:30,360 И този, който се случи с се използване тук е уеб-базирана. 378 00:18:30,360 --> 00:18:32,735 Така че това може да изглежда дори по- малко по-различна от нещо 379 00:18:32,735 --> 00:18:35,310 Вие сами може да се наложи виждал или тече в миналото. 380 00:18:35,310 --> 00:18:37,910 >> Така че аз ще отида напред сега и направете следното. 381 00:18:37,910 --> 00:18:40,950 Аз бях спасен този файл като hello.c. 382 00:18:40,950 --> 00:18:47,350 Отивам да се продължи напред и тип clanghello.c Така звън 383 00:18:47,350 --> 00:18:49,850 за езика на C е компилатор. 384 00:18:49,850 --> 00:18:51,952 Това е предварително инсталиран в CS50 IDE. 385 00:18:51,952 --> 00:18:54,910 И вие можете да абсолютно изтегляне и инсталиране на тази на собствения си Mac или PC. 386 00:18:54,910 --> 00:18:57,910 >> Но, отново, бихте няма всички предварително конфигурация направил за вас. 387 00:18:57,910 --> 00:19:00,940 Така че за сега, аз съм просто ще избяга clanghello.c. 388 00:19:00,940 --> 00:19:03,240 И сега забележи този синтаксис тук в крайна сметка ще 389 00:19:03,240 --> 00:19:06,930 осъзнае просто означава, че аз съм в по- папка или директория, наречена Workspace. 390 00:19:06,930 --> 00:19:11,030 Този знак за долар е просто конвенция за смисъл, въведете вашите команди тук. 391 00:19:11,030 --> 00:19:14,560 >> Това е, което се нарича бързо, просто По споразумение е знак за долар. 392 00:19:14,560 --> 00:19:19,130 И ако аз отида напред сега и кликнете Въведете, нищо не изглежда да се е случило. 393 00:19:19,130 --> 00:19:20,930 Но това е всъщност нещо добро. 394 00:19:20,930 --> 00:19:23,650 Колкото по-малко, което се случва на екрана, толкова по-вероятно 395 00:19:23,650 --> 00:19:26,710 кода си е да бъде вярна, най-малко синтактично. 396 00:19:26,710 --> 00:19:29,120 >> Така че, ако искате да стартирате тази програма, какво да правя? 397 00:19:29,120 --> 00:19:33,770 Е, оказва се, че подразбиране име по споразумение 398 00:19:33,770 --> 00:19:38,854 за програми, когато не конкретизират име за вашата програма е само a.out. 399 00:19:38,854 --> 00:19:41,270 И този синтаксис прекалено, ще се запознаят с преди дълго. 400 00:19:41,270 --> 00:19:47,500 >> Dot наклонена черта просто означава, хей, CS50 IDE, стартирайте програма, наречена a.out 401 00:19:47,500 --> 00:19:49,400 че е вътре в сегашната ми директория. 402 00:19:49,400 --> 00:19:51,520 Това дот означава текущата директория. 403 00:19:51,520 --> 00:19:55,040 И ние ще видим какви други такива последователности на знака означава преди дълго. 404 00:19:55,040 --> 00:19:58,430 >> Така че тук ние отивам, Enter, здравей свят. 405 00:19:58,430 --> 00:20:00,080 И вие ще забележите, че това, което се е случило? 406 00:20:00,080 --> 00:20:01,580 Не само, че го отпечатате здравей свят. 407 00:20:01,580 --> 00:20:05,990 Той също така разви курсора на следващия ред. 408 00:20:05,990 --> 00:20:07,160 >> И защо беше това? 409 00:20:07,160 --> 00:20:12,400 Какво е кодът, който писахме преди че се гарантира, че ще курсора 410 00:20:12,400 --> 00:20:14,882 отидете на следващия ред? 411 00:20:14,882 --> 00:20:16,840 Странно нещо за компютър е тя само ще 412 00:20:16,840 --> 00:20:18,570 да направи буквално каквото го кажа, за да се направи. 413 00:20:18,570 --> 00:20:26,050 >> Така че, ако го кажа, за да ФОРМАТ здравей, запетая, пространство, свят, в близост цитат, 414 00:20:26,050 --> 00:20:29,090 това е буквално само ще за отпечатване на тези символи. 415 00:20:29,090 --> 00:20:31,980 Но аз имах този специален символ в края, изземване, наклонена черта п. 416 00:20:31,980 --> 00:20:34,230 И това е, което гарантира че характерът отиде 417 00:20:34,230 --> 00:20:36,570 на следващия ред на екрана. 418 00:20:36,570 --> 00:20:38,097 >> Всъщност, нека отида и да направите това. 419 00:20:38,097 --> 00:20:39,430 Нека да вървим напред и да изтриете това. 420 00:20:39,430 --> 00:20:41,180 Сега, забележете, че горната част на екрана ми има 421 00:20:41,180 --> 00:20:42,890 малко червена светлина в В раздела се посочва, 422 00:20:42,890 --> 00:20:45,047 хей, вие не сте запазили файла. 423 00:20:45,047 --> 00:20:47,880 Така че аз ще отида напред с контрол S или команда S, запишете файла. 424 00:20:47,880 --> 00:20:51,130 Сега тя goes-- отиде за moment-- зелено. 425 00:20:51,130 --> 00:20:53,760 И сега тя се е върнала на просто е близо икона. 426 00:20:53,760 --> 00:21:01,860 >> Ако аз сега отново тече clanghello.c, Enter, точка наклонена черта, a.out, Enter, 427 00:21:01,860 --> 00:21:04,110 ще видите, че тя все още работи. 428 00:21:04,110 --> 00:21:06,020 Но това е може би малко бъги. 429 00:21:06,020 --> 00:21:08,714 Точно сега, ми prompt-- работно пространство, и след това, че знака за долар, 430 00:21:08,714 --> 00:21:10,880 и след това ми действителната prompt-- е на една и съща линия. 431 00:21:10,880 --> 00:21:14,540 Така че това със сигурност естетически бъг, дори и ако това не е наистина логично бъг. 432 00:21:14,540 --> 00:21:16,250 >> Така че аз отивам да отмените това, което току-що е направил. 433 00:21:16,250 --> 00:21:18,560 Отивам да се повтаря отново, a.out. 434 00:21:18,560 --> 00:21:22,710 Забележете, че съм добавя символ за нов ред обратно. 435 00:21:22,710 --> 00:21:24,280 Аз бях спасен файла. 436 00:21:24,280 --> 00:21:31,630 >> Така че аз ще се преиграва a.out, and-- по дяволите, е грешка, грешка означава грешка. 437 00:21:31,630 --> 00:21:35,020 Така че грешката е, че въпреки че Добавих наклонената черта н там, 438 00:21:35,020 --> 00:21:41,180 ре-запазена, повторно се завтече на програмата, поведението е същата. 439 00:21:41,180 --> 00:21:42,640 Защо, че ще бъде? 440 00:21:42,640 --> 00:21:43,910 >> Липсва ми стъпка, нали? 441 00:21:43,910 --> 00:21:47,620 Това ключова стъпка по-рано беше, че имате to-- когато смените изходния код, 442 00:21:47,620 --> 00:21:49,610 Оказва се също тече то чрез компилатора 443 00:21:49,610 --> 00:21:51,102 отново, така че можете да получите нов код машина. 444 00:21:51,102 --> 00:21:52,810 И кода на машина, единиците и нулите, 445 00:21:52,810 --> 00:21:56,260 Ще бъде почти идентичен, но не съвсем така, защото имаме нужда, 446 00:21:56,260 --> 00:21:57,510 разбира се, че новата линия. 447 00:21:57,510 --> 00:22:02,640 >> Така че, за да се определи това, аз отивам да се наложи да преиграва clanghello.c, влиза, точка 448 00:22:02,640 --> 00:22:03,800 наклонена черта, a.out. 449 00:22:03,800 --> 00:22:08,402 И сега, здравей свят е обратно до мястото, където се очаква тя да бъде. 450 00:22:08,402 --> 00:22:09,610 Така че всичко това е фин и добър. 451 00:22:09,610 --> 00:22:13,150 Но a.out е доста глупаво име за програма, въпреки че това се случва да бъде, 452 00:22:13,150 --> 00:22:16,530 по исторически причини, за default-- означава монтажни изходи. 453 00:22:16,530 --> 00:22:20,780 >> Но нека да вървим напред тук и да направите това по различен начин. 454 00:22:20,780 --> 00:22:24,760 Искам си здравей свят програма да всъщност се нарича здравей. 455 00:22:24,760 --> 00:22:28,320 Така че, ако беше икона на моя десктоп, че не би се a.out. 456 00:22:28,320 --> 00:22:29,730 Тя ще се нарича здравей. 457 00:22:29,730 --> 00:22:33,660 >> Така че, за да направите това, се оказва, че звън, подобно на много програми, 458 00:22:33,660 --> 00:22:37,980 подкрепя аргументи на командния ред, или флагове, или ключове, 459 00:22:37,980 --> 00:22:39,600 които просто въздействие върху поведението му. 460 00:22:39,600 --> 00:22:45,160 По-конкретно, звън подкрепя пробив о флаг, който след това се взема втора дума. 461 00:22:45,160 --> 00:22:48,190 В този случай, аз ще произволно, но разумно, наричаме го поздрави. 462 00:22:48,190 --> 00:22:50,710 Но мога да го наречем нещо Искам, освен a.out, които 463 00:22:50,710 --> 00:22:52,390 Би било по-скоро, освен най-важното. 464 00:22:52,390 --> 00:22:55,640 >> И след това просто да посочите името на файла, който искате да се съберат. 465 00:22:55,640 --> 00:22:59,190 Така че сега, въпреки че в началото на командата Аз все още имам звън, 466 00:22:59,190 --> 00:23:01,410 в края на командата Аз все още имам името на файла, 467 00:23:01,410 --> 00:23:05,520 Сега имам тези команди аргументи, тези флагове, които казват, 468 00:23:05,520 --> 00:23:11,180 О, между другото, на изхода-о, а файл наречен здравей, не a.out по подразбиране. 469 00:23:11,180 --> 00:23:13,810 >> Така че, ако се удари Въведете сега, нищо Изглежда, че се е случило. 470 00:23:13,810 --> 00:23:17,900 И, все пак, сега мога да направя точка наклонена черта здравей. 471 00:23:17,900 --> 00:23:19,089 Така че това е една и съща програма. 472 00:23:19,089 --> 00:23:21,380 Единиците и нулите са идентичен в края на деня. 473 00:23:21,380 --> 00:23:24,210 >> Но те са в две различен files-- a.out, 474 00:23:24,210 --> 00:23:26,490 която е първата версия и просто глупаво име, 475 00:23:26,490 --> 00:23:30,250 и сега здравей, която е много по- по-наложителна име за дадена програма. 476 00:23:30,250 --> 00:23:33,195 Но, честно казано, аз никога не съм Ще помня този път, 477 00:23:33,195 --> 00:23:34,070 и отново и отново. 478 00:23:34,070 --> 00:23:36,411 И, всъщност, като пишем по-сложни програми, 479 00:23:36,411 --> 00:23:38,160 команди, които ви ще трябва да се напише 480 00:23:38,160 --> 00:23:40,920 Ще получите още по-сложно все още. 481 00:23:40,920 --> 00:23:41,940 >> И така, за да не се тревожи. 482 00:23:41,940 --> 00:23:46,220 Оказва се, че хората преди ни са осъзнали, твърде 483 00:23:46,220 --> 00:23:47,530 имаше тази точно същия проблем. 484 00:23:47,530 --> 00:23:50,900 Те също не се ползва да се налага да въведете доста дълги, тайнствени команди, 485 00:23:50,900 --> 00:23:52,200 камо ли да ги помня. 486 00:23:52,200 --> 00:23:56,070 И така хората преди нас са направили други програми, които го правят по-лесно 487 00:23:56,070 --> 00:23:57,670 за съставяне на вашия софтуер. 488 00:23:57,670 --> 00:24:01,609 >> И, наистина, едно такова Програмата се нарича производител. 489 00:24:01,609 --> 00:24:03,150 Така че аз ще отида напред и да направим това. 490 00:24:03,150 --> 00:24:05,691 Отивам да отмените всичко, което Току-що е по следния начин. 491 00:24:05,691 --> 00:24:07,690 Нека да въведете LS. 492 00:24:07,690 --> 00:24:10,980 И вие ще забележите три things-- a.out, и една звезда, здравей 493 00:24:10,980 --> 00:24:12,810 и една звезда, и hello.c. 494 00:24:12,810 --> 00:24:14,730 Надяваме се, това трябва да е малко интуитивен, 495 00:24:14,730 --> 00:24:18,220 доколкото по-рано не е нищо в това работно пространство. 496 00:24:18,220 --> 00:24:21,240 Нямаше нищо, че имах създаден, докато ние започнахме клас. 497 00:24:21,240 --> 00:24:22,840 >> И съм създал hello.c. 498 00:24:22,840 --> 00:24:24,544 След това аз го компилира, и го нарича a.out. 499 00:24:24,544 --> 00:24:27,460 И тогава аз го компилира отново леко по различен начин и да го нарича здравей. 500 00:24:27,460 --> 00:24:32,830 Така че имам три файлове в тази директория, в тази папка, наречена Workspace. 501 00:24:32,830 --> 00:24:35,005 Сега, аз може да се види, че както ако аз отдалечаване всъщност. 502 00:24:35,005 --> 00:24:37,530 >> Ако намалите тук и погледнете, че горния десен 503 00:24:37,530 --> 00:24:39,940 ъгъл, както е обещано в ляво ръката страна на вашия екран 504 00:24:39,940 --> 00:24:42,990 винаги ще ви покажа това, което е в профила си, това, което е 505 00:24:42,990 --> 00:24:44,790 вътре на CS50 IDE. 506 00:24:44,790 --> 00:24:46,680 И там е три файлове там. 507 00:24:46,680 --> 00:24:49,070 >> Така че аз искам да се отърва от a.out и здравей. 508 00:24:49,070 --> 00:24:51,275 И както може да се представете си интуитивно, вие 509 00:24:51,275 --> 00:24:53,400 може да се справи с контрола кликване или десен бутон върху това. 510 00:24:53,400 --> 00:24:54,590 И това малко меню се появява. 511 00:24:54,590 --> 00:24:57,170 Можете да изтеглите файла, стартирайте това, да го визуализирате, опресняване, преименувате, 512 00:24:57,170 --> 00:24:57,700 или какво не. 513 00:24:57,700 --> 00:25:00,260 >> И аз може просто да изтриете, и тя ще си отиде. 514 00:25:00,260 --> 00:25:05,260 Но нека да направим нещата с команда линия за сега, така че да се удобно 515 00:25:05,260 --> 00:25:07,010 с това, и направете следното. 516 00:25:07,010 --> 00:25:12,345 Отивам да вървим напред и да се премахне a.out като напишете буквално rma.out. 517 00:25:12,345 --> 00:25:14,890 Оказва се, командата за премахването или изтриването нещо, 518 00:25:14,890 --> 00:25:16,280 е не премахват или изтриване. 519 00:25:16,280 --> 00:25:21,260 >> Това е по-кратко и ясно RM, само за да спаси ви някои клавиши, и удари Enter. 520 00:25:21,260 --> 00:25:24,707 Сега отиваме да бъде до известна степен загадъчно премахнете обикновен файл a.out. 521 00:25:24,707 --> 00:25:27,040 Аз наистина не знам какво е нередовен файл ще бъде още. 522 00:25:27,040 --> 00:25:28,660 Но аз искам да го отстранят. 523 00:25:28,660 --> 00:25:30,150 >> Така че аз ще се у написали за да. 524 00:25:30,150 --> 00:25:31,940 Или мога да го напишете, и удари Enter. 525 00:25:31,940 --> 00:25:33,440 И, отново, нищо не изглежда да се случи. 526 00:25:33,440 --> 00:25:35,840 Но това е, общо взето, е нещо добро. 527 00:25:35,840 --> 00:25:40,490 >> Ако този път пиша LS, какво трябва да видим? 528 00:25:40,490 --> 00:25:44,930 Надяваме се, че само здравей и hello.c. 529 00:25:44,930 --> 00:25:47,286 Сега, като се отмени, ще забележите тази звезда, звезда, 530 00:25:47,286 --> 00:25:48,660 това е в края на моите програми. 531 00:25:48,660 --> 00:25:50,201 И те също се показва в зелено. 532 00:25:50,201 --> 00:25:53,970 Това е просто начин CS50 IDE е на вас cluing в обстоятелството, 533 00:25:53,970 --> 00:25:55,280 че това не е изходния код. 534 00:25:55,280 --> 00:25:58,880 Това е изпълним, а изпълнима програма, която всъщност можете да стартирате 535 00:25:58,880 --> 00:26:01,020 чрез правене точка наклонена черта, и след това е име. 536 00:26:01,020 --> 00:26:05,860 >> Сега, нека да вървим напред и да се премахне това, RM здравей, Enter, премахнете редовен 537 00:26:05,860 --> 00:26:08,010 подаде здравей, да. 538 00:26:08,010 --> 00:26:11,180 И сега, ако ми пишете LS, ние сме назад към hello.c. 539 00:26:11,180 --> 00:26:13,917 Опитайте се да не я изтрие действителната изходния код. 540 00:26:13,917 --> 00:26:16,250 Въпреки че има функции вградена в CS50 IDE, където 541 00:26:16,250 --> 00:26:19,870 можете да мине през историята си редакция и назад във времето, ако случайно 542 00:26:19,870 --> 00:26:23,660 изтриете нещо, правя да се забравя, по тези подкани да или не, 543 00:26:23,660 --> 00:26:25,381 от това, което всъщност искам да правя. 544 00:26:25,381 --> 00:26:27,380 И като отида до върха ляв ъгъл тук, 545 00:26:27,380 --> 00:26:30,696 всичко, което остава е hello.c. 546 00:26:30,696 --> 00:26:32,570 Така че има букети от други команди, които ви 547 00:26:32,570 --> 00:26:37,550 може да се изпълни в света на Linux, една от които е, отново, Направете. 548 00:26:37,550 --> 00:26:40,180 И ние ще направим моята програма сега, както следва. 549 00:26:40,180 --> 00:26:43,270 >> Вместо това трясък, вместо да правиш трясък-о, 550 00:26:43,270 --> 00:26:45,860 Отивам да се просто буквално написали, да здравей. 551 00:26:45,860 --> 00:26:49,630 И сега забележи, аз съм Не пишете направи hello.c. 552 00:26:49,630 --> 00:26:50,910 Аз съм типичен направи здравей. 553 00:26:50,910 --> 00:26:54,840 >> И тази програма Направи че идва с CS50 IDE, и по- 554 00:26:54,840 --> 00:26:57,090 обикновено с Linux, е програма, която е 555 00:26:57,090 --> 00:26:59,120 ще направи една програма, наречена Здравейте. 556 00:26:59,120 --> 00:27:03,680 И това се случва, за да се предположи, по силата на споразумение, че ако може да се направи тази програма, 557 00:27:03,680 --> 00:27:09,030 това ще бъде направено от източник код файл завършващ в точка C, hello.c. 558 00:27:09,030 --> 00:27:12,210 >> Така че, ако се удари Въведете сега, предупреждение, че командата, която се изпълни 559 00:27:12,210 --> 00:27:14,340 всъщност е още по-дълго преди, отколкото преди. 560 00:27:14,340 --> 00:27:16,670 И това е, защото сме предварително конфигуриран CS50 IDE да има 561 00:27:16,670 --> 00:27:19,878 някои допълнителни функции, вградени в които ние просто все още не е нужно, но скоро ще го направя. 562 00:27:19,878 --> 00:27:23,470 Но важното нещо да се реализира Сега е имам програма Hello. 563 00:27:23,470 --> 00:27:27,080 >> Ако аз отново въведете LS, I има програма, здравей. 564 00:27:27,080 --> 00:27:32,070 И мога да го изпълним с дот наклонена черта a.out, не, 565 00:27:32,070 --> 00:27:35,590 защото целият смисъл на тази упражнение е точка наклонена черта здравей. 566 00:27:35,590 --> 00:27:38,089 И сега имам моя здравей свят програма. 567 00:27:38,089 --> 00:27:39,880 Така че да се движим напред, ние сме почти винаги само 568 00:27:39,880 --> 00:27:42,088 ще съставят нашите програми използване на командния правите. 569 00:27:42,088 --> 00:27:45,300 И тогава ние ще ги експлоатират от дот наклонена черта, и името на програмата. 570 00:27:45,300 --> 00:27:49,610 Но осъзнае какво Уверете се прави за ви, е, че не се е компилатор. 571 00:27:49,610 --> 00:27:53,310 Това е просто една програма удобство че знае как да предизвика съставител 572 00:27:53,310 --> 00:27:56,470 да тече, така че можете сами да го използвате. 573 00:27:56,470 --> 00:28:00,220 >> Какво съществуват други команди в Linux, и на свой ред на CS50 IDE? 574 00:28:00,220 --> 00:28:03,107 Ние скоро ще видите, че има CD команда, Change Directory. 575 00:28:03,107 --> 00:28:05,190 Това ви позволява в рамките на вашия интерфейс на командния ред 576 00:28:05,190 --> 00:28:07,610 да се движи напред, и назад, и да се отворят различни папки 577 00:28:07,610 --> 00:28:08,860 без помощта на мишката. 578 00:28:08,860 --> 00:28:12,470 >> LS видяхме, което е съкращение от списъка файловете в текущата директория. 579 00:28:12,470 --> 00:28:14,650 Направи Dir, можете вероятно да започне да се направи извод, 580 00:28:14,650 --> 00:28:18,150 Какви са тия now-- направи директория, ако искате да създадете папка. 581 00:28:18,150 --> 00:28:21,270 RM за премахване, RM Dir за премахнете directory-- и тези, 582 00:28:21,270 --> 00:28:24,160 отново, са командния ред еквиваленти на това, което 583 00:28:24,160 --> 00:28:26,945 може да се направи в CS50 IDE с мишката. 584 00:28:26,945 --> 00:28:28,820 Но скоро ще се намери че понякога това е просто 585 00:28:28,820 --> 00:28:30,610 много по-бързо, за да се направи неща, с клавиатура, 586 00:28:30,610 --> 00:28:33,690 и в крайна сметка много по-мощен. 587 00:28:33,690 --> 00:28:36,440 >> Но това е трудно да се спори, че всичко, което сме правили досега 588 00:28:36,440 --> 00:28:39,990 е всичко, което мощно, когато всички ние сме били казвам е, здравей свят. 589 00:28:39,990 --> 00:28:43,740 И, всъщност, аз кодиран на думи здравей свят в моята програма. 590 00:28:43,740 --> 00:28:45,530 Не е динамика, все още. 591 00:28:45,530 --> 00:28:49,320 Scratch е един порядък по-интересно от миналата седмица. 592 00:28:49,320 --> 00:28:51,220 >> И така, нека да стигнем до там. 593 00:28:51,220 --> 00:28:55,310 Нека да се върнем към това, като начин на някои от тези функции. 594 00:28:55,310 --> 00:28:59,470 Така че не само C дойде с ФОРМАТ, и букети от други функции 595 00:28:59,470 --> 00:29:01,850 някои от които ще видим с течение на времето, това не е така 596 00:29:01,850 --> 00:29:05,760 направи всичко, което лесно направо на портата в получаване на потребителски вход. 597 00:29:05,760 --> 00:29:08,140 >> В действителност, един от най-слабите страни на езици като C, 598 00:29:08,140 --> 00:29:10,140 и дори Java и още други, е, че не 599 00:29:10,140 --> 00:29:15,860 да я направи лесно просто да получите неща като числа от потребителите, или низове, думи, 600 00:29:15,860 --> 00:29:19,970 и фрази, да не говорим такива неща плаваща запетая стойности, или реални числа 601 00:29:19,970 --> 00:29:23,240 с десетични точки, и наистина дълги числа, тъй като ние скоро ще видим. 602 00:29:23,240 --> 00:29:27,000 Така че този списък от функции, тук, те са като другите парчета Scratch пъзел 603 00:29:27,000 --> 00:29:31,090 че сме предварително инсталиран в CS50 IDE, че ние ще използваме за няколко седмици 604 00:29:31,090 --> 00:29:34,010 като помощни колела на видове, както и в крайна сметка ги свали, и с нетърпение 605 00:29:34,010 --> 00:29:37,210 под капака, може би, най- как се изпълняват тези неща. 606 00:29:37,210 --> 00:29:40,460 >> Но за да направи това, нека всъщност се напише програма. 607 00:29:40,460 --> 00:29:41,770 Нека вървим напред сега. 608 00:29:41,770 --> 00:29:44,750 И аз отивам да се създаде нова файла с натискане този малък плюс, 609 00:29:44,750 --> 00:29:45,970 и кликнете върху New File. 610 00:29:45,970 --> 00:29:49,250 >> Отивам да се спаси този следващия едно като, да речем, string.c, 611 00:29:49,250 --> 00:29:50,750 защото искам да играя с низове. 612 00:29:50,750 --> 00:29:53,990 И низ в C е просто поредица от символи. 613 00:29:53,990 --> 00:29:56,090 Така че сега да вървим напред и направете следното. 614 00:29:56,090 --> 00:30:01,204 >> Включват стандартни IO.h-- и Оказва се, стандартен IO, 615 00:30:01,204 --> 00:30:03,360 IO просто означава, вход и изход. 616 00:30:03,360 --> 00:30:05,920 Така се оказва, че тази линия тук е това, което 617 00:30:05,920 --> 00:30:08,140 е на нас съседните да използва ФОРМАТ. 618 00:30:08,140 --> 00:30:10,410 ФОРМАТ, разбира се, произвежда продукция. 619 00:30:10,410 --> 00:30:15,000 Така че, за да използвате ФОРМАТ, тя се превръща вън трябва да имаш този ред на код 620 00:30:15,000 --> 00:30:16,040 в горната част на вашия файл. 621 00:30:16,040 --> 00:30:18,456 >> И ние ще се върнем към това, което че наистина означава преди дълго. 622 00:30:18,456 --> 00:30:20,400 Оказва се, че в всяко C програма пиша, 623 00:30:20,400 --> 00:30:23,640 Аз трябва да го започнете с код, който изглежда така. 624 00:30:23,640 --> 00:30:26,860 И вие ще забележите, CS50 IDE и друга интегрирано развитие 625 00:30:26,860 --> 00:30:30,050 среди като това, ще се опитаме по най-добрия 626 00:30:30,050 --> 00:30:31,780 те могат да довърши мисълта си. 627 00:30:31,780 --> 00:30:35,930 Всъщност, преди малко, ако отмените това, което току-що е направил, аз удари Enter. 628 00:30:35,930 --> 00:30:39,160 >> тогава ударих отворена къдрава презрамки, удари Въведете отново. 629 00:30:39,160 --> 00:30:40,430 И го завърши мисълта си. 630 00:30:40,430 --> 00:30:45,140 Той ми даде нов ред, разчленена не по-малко за хубави стилистични причини ще видим. 631 00:30:45,140 --> 00:30:48,559 И тогава той автоматично ми даде че фигурна скоба, за да завърши мисълта си. 632 00:30:48,559 --> 00:30:50,600 Сега, това не винаги Предполагам, че това, което искате да направите. 633 00:30:50,600 --> 00:30:53,620 Но в голямата си част, тя не ви спести някои клавиши. 634 00:30:53,620 --> 00:30:59,560 Така че преди малко, ние се завтече този program-- здравей, свят, и след това да го съставя, 635 00:30:59,560 --> 00:31:00,460 и след това избяга. 636 00:31:00,460 --> 00:31:01,867 Но няма динамика тук. 637 00:31:01,867 --> 00:31:03,700 Какво става, ако искахме да направя нещо по-различно? 638 00:31:03,700 --> 00:31:07,630 Е, какво, ако исках да всъщност получите низ от потребителя? 639 00:31:07,630 --> 00:31:11,250 Отивам да се използва един пъзел парче нарича точно that-- получите низ. 640 00:31:11,250 --> 00:31:15,860 >> Оказва се, че в C, че когато не искате да даде своя принос за един пъзел парче, 641 00:31:15,860 --> 00:31:19,360 или по-правилно да се функция, можете буквално просто правя отворена скоба, 642 00:31:19,360 --> 00:31:20,430 близо скоби. 643 00:31:20,430 --> 00:31:25,540 Така че това е така, сякаш има не бяла кутия, за да въведете в полето. 644 00:31:25,540 --> 00:31:27,720 Блокът на речем преди имаше малка бяла кутия. 645 00:31:27,720 --> 00:31:29,660 Ние не разполагаме с това бяло поле сега. 646 00:31:29,660 --> 00:31:33,310 >> Но когато аз наричам GET низ, I Искам да сложа резултата някъде. 647 00:31:33,310 --> 00:31:37,680 Така че много често парадигма в C е да извикате функция, като GET низ тук, 648 00:31:37,680 --> 00:31:41,070 и след това се съхранява неговото връщане стойност. 649 00:31:41,070 --> 00:31:44,450 Това е резултат от неговата усилия в нещо. 650 00:31:44,450 --> 00:31:47,630 >> И това, което е най- изгради в програмирането, 651 00:31:47,630 --> 00:31:53,450 дали в Scratch или сега C, че ние може да се използва, за да всъщност се съхранява нещо? 652 00:31:53,450 --> 00:31:55,990 Наречен го променлива, нали? 653 00:31:55,990 --> 00:32:00,320 И в Scratch, ние наистина не пука какво се случва в променливи. 654 00:32:00,320 --> 00:32:02,170 >> Но в този случай, ние всъщност правим. 655 00:32:02,170 --> 00:32:03,719 Отивам да се каже, низ. 656 00:32:03,719 --> 00:32:05,510 И тогава може да се нарече това нещо, което искам. 657 00:32:05,510 --> 00:32:08,340 Отивам да го наречем име, получава се низ. 658 00:32:08,340 --> 00:32:10,250 >> И сега дори ако сте малко нови за това, 659 00:32:10,250 --> 00:32:11,984 забележите, че аз съм липсват някои детайли. 660 00:32:11,984 --> 00:32:13,150 Аз съм се забравя и запетая. 661 00:32:13,150 --> 00:32:14,400 Аз трябва да завърши тази мисъл. 662 00:32:14,400 --> 00:32:17,480 Така че аз ще преместя курсора, и удари и запетая там. 663 00:32:17,480 --> 00:32:19,130 И това, което съм просто направи? 664 00:32:19,130 --> 00:32:21,440 В този ред на код, номер 5 в момента, 665 00:32:21,440 --> 00:32:23,799 Обаждам GET низ, без входове. 666 00:32:23,799 --> 00:32:26,090 Така че няма малко бяло боксира като Save блок има. 667 00:32:26,090 --> 00:32:28,590 >> Просто казвам, хей, компютър, да ме низ. 668 00:32:28,590 --> 00:32:31,390 Знакът равно не е наистина знак за равенство, сам по себе си. 669 00:32:31,390 --> 00:32:33,790 Това е задачата оператор, което означава, 670 00:32:33,790 --> 00:32:37,860 хей, компютър, да се премести на стойност отдясно над наляво. 671 00:32:37,860 --> 00:32:40,480 И в ляво, имам следното. 672 00:32:40,480 --> 00:32:43,580 >> Хей, компютър, дайте ми string-- поредица от символи. 673 00:32:43,580 --> 00:32:45,637 И се обади, че низ име. 674 00:32:45,637 --> 00:32:47,220 А аз дори не трябва да го наричаме Име. 675 00:32:47,220 --> 00:32:49,970 >> Можех да го наречем, условно, нещо като S, 676 00:32:49,970 --> 00:32:52,900 много като използвахме аз да наричам аз променливата. 677 00:32:52,900 --> 00:32:54,829 Но сега трябва да направя нещо с него. 678 00:32:54,829 --> 00:32:57,370 Би било доста глупаво да опитайте съставянето на този код, бягане 679 00:32:57,370 --> 00:32:59,410 тази програма, въпреки че Аз съм се низ, 680 00:32:59,410 --> 00:33:01,580 защото това е все още само щях да кажа здравей свят. 681 00:33:01,580 --> 00:33:06,140 >> Но какво, ако аз искам да променя това. 682 00:33:06,140 --> 00:33:07,940 Защо не мога да направя това? 683 00:33:07,940 --> 00:33:11,632 Процент ите, запетая и. 684 00:33:11,632 --> 00:33:13,090 И това е малко загадъчен все още. 685 00:33:13,090 --> 00:33:15,560 >> Така че нека да ми променливи по-ясно. 686 00:33:15,560 --> 00:33:17,510 Нека да назовем тази променлива име. 687 00:33:17,510 --> 00:33:20,230 И нека да видим дали не можем да дразни освен това, което се случва тук. 688 00:33:20,230 --> 00:33:22,770 >> Така че по линия пет, аз съм се низ. 689 00:33:22,770 --> 00:33:25,620 И аз съм съхраняване че низ, каквото и потребителят е въвел 690 00:33:25,620 --> 00:33:28,430 в неговата или нейната клавиатура, в променлива наречена име. 691 00:33:28,430 --> 00:33:30,590 И се оказва, че ФОРМАТ не само 692 00:33:30,590 --> 00:33:34,220 отнеме един аргумент в двойна кавички, един вход в двойни кавички. 693 00:33:34,220 --> 00:33:39,100 >> Това може да отнеме два или три, или повече, като че втората, или третата, или четвъртата, 694 00:33:39,100 --> 00:33:42,320 са всички имена на променливи, или специфично стойности, 695 00:33:42,320 --> 00:33:48,610 която искате да включите в, динамично, че низ в кавички. 696 00:33:48,610 --> 00:33:52,110 С други думи, това, което Би било погрешно с това? 697 00:33:52,110 --> 00:33:57,920 Ако току-що казах здравей име, наклонена черта п, ми спаси файл, компилиран моя код, 698 00:33:57,920 --> 00:34:01,660 и изтича това, какво ще се случи? 699 00:34:01,660 --> 00:34:05,139 >> Това е просто ще кажа, здравей име, буквално N-А-М-E, 700 00:34:05,139 --> 00:34:07,900 което е един вид глупаво, защото това е по-различно от света. 701 00:34:07,900 --> 00:34:10,400 Така че нищо в кавички е това, което буквално ще бъде отпечатан. 702 00:34:10,400 --> 00:34:12,520 Така че, ако искате да имате контейнер там, 703 00:34:12,520 --> 00:34:14,422 Аз всъщност трябва да се използва някакъв специален синтаксис. 704 00:34:14,422 --> 00:34:17,380 И се оказва, ако прочетете документацията за функцията ФОРМАТ, 705 00:34:17,380 --> 00:34:21,320 тя ще ви каже, че ако използвате процента ите, 706 00:34:21,320 --> 00:34:23,920 можете да заместите стойност, както следва. 707 00:34:23,920 --> 00:34:27,190 >> След запетая след това двойни кавички, просто 708 00:34:27,190 --> 00:34:29,179 напишете името на променлива, която искате 709 00:34:29,179 --> 00:34:33,790 да включите в този формат код, или формат спецификатор, 710 00:34:33,790 --> 00:34:35,469 процента и за струни. 711 00:34:35,469 --> 00:34:39,190 И сега, ако съм спасен моето досие, Аз се върнем на моя терминал. 712 00:34:39,190 --> 00:34:42,870 И аз въведете Направи String, защото, отново, името на този 713 00:34:42,870 --> 00:34:45,510 файл, който аз избрах преди е string.c. 714 00:34:45,510 --> 00:34:48,510 >> Така че аз ще кажа Направи String, влиза. 715 00:34:48,510 --> 00:34:51,550 О боже мой, погледнете всички грешките, които вече сте направили. 716 00:34:51,550 --> 00:34:55,540 И това is-- какво, това е наистина като шест, седем Онлайн програма? 717 00:34:55,540 --> 00:34:57,790 Така че това е мястото, където много да бързо да се поразителен. 718 00:34:57,790 --> 00:35:00,890 >> Това терминален прозорец има Сега просто повтаряната 719 00:35:00,890 --> 00:35:03,230 огромен брой съобщения за грешки. 720 00:35:03,230 --> 00:35:07,560 Разбира се, аз не разполагат с повече грешки съобщения от мен реда код. 721 00:35:07,560 --> 00:35:08,680 И така, какво се случва? 722 00:35:08,680 --> 00:35:10,920 >> Е, най-добрата стратегия да се направи по всяко време 723 00:35:10,920 --> 00:35:13,710 се срещнете непреодолимо списък с грешки, а именно, че, 724 00:35:13,710 --> 00:35:16,690 се превъртите назад, търсят командата вие просто избяга, които в моя случай 725 00:35:16,690 --> 00:35:18,020 е да низ. 726 00:35:18,020 --> 00:35:21,630 Вижте какво правят направил, и това е, че дълго звън команда, не е голяма работа там. 727 00:35:21,630 --> 00:35:22,950 >> Но червеното е лош. 728 00:35:22,950 --> 00:35:24,750 Green се опитва да бъде нежна и полезно. 729 00:35:24,750 --> 00:35:26,140 Но тя все още е лошо, в този случай. 730 00:35:26,140 --> 00:35:27,510 Но там, където това е лошо? 731 00:35:27,510 --> 00:35:31,450 >> String.c, линия пет, характер и пет. 732 00:35:31,450 --> 00:35:32,930 Така че това е само обща конвенция. 733 00:35:32,930 --> 00:35:36,060 Нещо дебелото черво нещо означава, линия номер и номер характер. 734 00:35:36,060 --> 00:35:41,080 Грешка, използване на недекларирания идентификатор низ. 735 00:35:41,080 --> 00:35:42,900 Може би имахте предвид стандарт в? 736 00:35:42,900 --> 00:35:45,530 >> Така че, за съжаление, звън се опитва да бъде от полза. 737 00:35:45,530 --> 00:35:46,850 Но това не е наред, в този случай. 738 00:35:46,850 --> 00:35:49,350 Не, звън, не исках стандарт IO. 739 00:35:49,350 --> 00:35:51,070 Имах предвид, че на първа линия, да. 740 00:35:51,070 --> 00:35:53,420 >> Но линия пет е този тук. 741 00:35:53,420 --> 00:35:57,040 И звън не прави разбере S-T-R-I-N-G. 742 00:35:57,040 --> 00:36:01,490 Това е една необявена идентификатор, а Думата тя просто никога не е виждал преди. 743 00:36:01,490 --> 00:36:05,730 И това е, защото C, на езика пишем код в момента, 744 00:36:05,730 --> 00:36:08,070 не разполага с променливи, наречени струни. 745 00:36:08,070 --> 00:36:11,380 >> Това не е така, по подразбиране, поддръжка нещо, наречено низ. 746 00:36:11,380 --> 00:36:16,750 Това е CS50 парче жаргон, но много конвенционален. 747 00:36:16,750 --> 00:36:18,600 Но мога да поправя това, както следва. 748 00:36:18,600 --> 00:36:22,090 >> Ако добавите един ред код в началото на тази програма, 749 00:36:22,090 --> 00:36:27,890 включва CS50.h, което е друг файл някъде вътре на CS50 IDE, някъде 750 00:36:27,890 --> 00:36:30,820 на твърдия диск, така да се каже, на операционната система Ubuntu 751 00:36:30,820 --> 00:36:33,590 че Бягам, че е файла, който е 752 00:36:33,590 --> 00:36:38,740 Ще научи оперативната система какво низ е, просто 753 00:36:38,740 --> 00:36:41,930 като стандарт io.h е файла в операционната система, която е 754 00:36:41,930 --> 00:36:44,430 Ще го науча какво ФОРМАТ е. 755 00:36:44,430 --> 00:36:46,810 >> В действителност, ние би намерила много подобен съобщение 756 00:36:46,810 --> 00:36:50,600 ако IO е признал стандарт IO.h и се опитаха да използват ФОРМАТ. 757 00:36:50,600 --> 00:36:53,632 Така че аз ще отида напред и просто поеме контрола L, за да изчистите екрана си. 758 00:36:53,632 --> 00:36:56,340 Или можете да въведете ясна и тя ще просто изчистване на терминала. 759 00:36:56,340 --> 00:36:58,020 Но все още можете да превъртите назад във времето. 760 00:36:58,020 --> 00:37:01,100 >> И аз ще се преиграва Направи String. 761 00:37:01,100 --> 00:37:03,660 Стискам палци този път, Enter. 762 00:37:03,660 --> 00:37:05,380 О, Боже мой, той е работил. 763 00:37:05,380 --> 00:37:09,280 тя ми показва дълъг загадъчен команда че е това, което правят, генерирани чрез звън, 764 00:37:09,280 --> 00:37:10,460 но няма съобщения за грешки. 765 00:37:10,460 --> 00:37:12,460 Така че осъзнаваш, въпреки че вие може да получите напълно 766 00:37:12,460 --> 00:37:14,480 претоварени с брой съобщения за грешки, 767 00:37:14,480 --> 00:37:17,540 тя просто може да бъде това досадно каскаден ефект, където звън не разбира 768 00:37:17,540 --> 00:37:19,620 едно нещо, което значи след това не разбира следващата дума, 769 00:37:19,620 --> 00:37:20,560 или на следващия ред. 770 00:37:20,560 --> 00:37:22,850 И така, той просто дросели на вашия код. 771 00:37:22,850 --> 00:37:24,440 Но поправката може да се прости. 772 00:37:24,440 --> 00:37:27,822 И така, винаги се фокусира върху Първата линия на изхода. 773 00:37:27,822 --> 00:37:29,530 И ако не го направите го разбирам, просто погледнете 774 00:37:29,530 --> 00:37:32,480 за ключови думи, които биха могли да бъдат улики, и номера на реда, 775 00:37:32,480 --> 00:37:34,650 и характера, където тази грешка може да бъде. 776 00:37:34,650 --> 00:37:40,328 >> Сега нека да вървим напред и да въведете дот наклонена черта, низ, влиза. 777 00:37:40,328 --> 00:37:44,340 Хм, тя не казва здравей нищо. 778 00:37:44,340 --> 00:37:46,210 Защо? 779 00:37:46,210 --> 00:37:48,170 Е, припомни, където е тя да се пускат? 780 00:37:48,170 --> 00:37:53,730 >> Това е вероятно заби в момента в една линия, ако щете, на линия шест, 781 00:37:53,730 --> 00:37:56,950 защото Get String с дизайн, написана от персонала CS50, 782 00:37:56,950 --> 00:38:00,350 е буквално означава просто да си седи там и те чака, и чака, 783 00:38:00,350 --> 00:38:01,850 и в очакване на низ. 784 00:38:01,850 --> 00:38:03,792 Всичко, което разбираме под низ е човешко вход. 785 00:38:03,792 --> 00:38:04,500 Така ли какво? 786 00:38:04,500 --> 00:38:05,166 Нека да вървим напред. 787 00:38:05,166 --> 00:38:08,704 И просто по прищявка, нека въведете името ми, Дейвид, влиза. 788 00:38:08,704 --> 00:38:10,120 Сега имам по-динамична програма. 789 00:38:10,120 --> 00:38:11,240 Той каза, здравей Дейвид. 790 00:38:11,240 --> 00:38:16,280 >> Ако аз отида напред и да тичам отново, Нека се опитам да кажа Zamila име, въведете. 791 00:38:16,280 --> 00:38:17,940 И сега имаме динамична програма. 792 00:38:17,940 --> 00:38:19,380 Не съм твърд кодирани свят. 793 00:38:19,380 --> 00:38:21,760 Не съм твърд кодирани име, или David, или Zamila. 794 00:38:21,760 --> 00:38:25,350 >> Сега е много по-скоро като на програмите ние знаем, къде, ако го вземат вход, 795 00:38:25,350 --> 00:38:27,870 тя произвежда малко по-различен изход. 796 00:38:27,870 --> 00:38:31,020 Сега, това не е най-добрият потребителски опит, или UX. 797 00:38:31,020 --> 00:38:33,000 Аз стартирате програмата. 798 00:38:33,000 --> 00:38:35,830 >> Аз не знам какво трябва да се направи, освен ако аз действително погледнем 799 00:38:35,830 --> 00:38:37,290 или си спомня изходния код. 800 00:38:37,290 --> 00:38:39,640 Така че нека да се направи на потребителя изпитат малко по-добре 801 00:38:39,640 --> 00:38:41,240 с най-простите неща. 802 00:38:41,240 --> 00:38:44,782 Нека да се върнем в тази програма, и просто да се каже, ФОРМАТ. 803 00:38:44,782 --> 00:38:48,870 >> И нека да вървим напред и да кажа името, на дебелото черво, и пространство, а след това и запетая. 804 00:38:48,870 --> 00:38:51,170 И само за ритници, не хлабина п. 805 00:38:51,170 --> 00:38:52,980 И това е умишлено, защото аз не искам 806 00:38:52,980 --> 00:38:54,590 подканата да се премине към следващия ред. 807 00:38:54,590 --> 00:38:58,800 >> Искам да, вместо да, правя това, направи низ да компилирате кода си в нова машина 808 00:38:58,800 --> 00:39:00,980 код точка наклонена черта низ. 809 00:39:00,980 --> 00:39:02,460 Ах, това е много по-хубава. 810 00:39:02,460 --> 00:39:05,780 Сега аз всъщност знам какво компютъра иска от мен да направя, да го даде име. 811 00:39:05,780 --> 00:39:10,020 >> Така че аз ще отида напред и да въведете в Роб, влиза, и здравей, Роб. 812 00:39:10,020 --> 00:39:13,640 Така че, да разбере, че това е все още в края на ден, само програма за девет линия. 813 00:39:13,640 --> 00:39:15,090 Но сме взели тези малки стъпки. 814 00:39:15,090 --> 00:39:18,380 >> Писахме една линия, с които ние бяха запознати, ФОРМАТ, здравей свят. 815 00:39:18,380 --> 00:39:19,980 Тогава ние разкопча малко от това. 816 00:39:19,980 --> 00:39:21,560 И ние всъщност използва GET низ. 817 00:39:21,560 --> 00:39:23,362 И ние подхвърли, че стойността на една променлива. 818 00:39:23,362 --> 00:39:26,070 И след това отидохме напред и да се подобри това допълнително с трета линия. 819 00:39:26,070 --> 00:39:29,220 И този повтарящ се процес на писането на софтуер е наистина ключов. 820 00:39:29,220 --> 00:39:33,420 В CS50, и в живота като цяло, Вие по принцип не трябва да седне, 821 00:39:33,420 --> 00:39:36,800 има програма, в ума, и се опитват писане цялото проклето нещо наведнъж. 822 00:39:36,800 --> 00:39:40,810 >> Това неизбежно ще доведе до по начин, повече грешки, отколкото самите ние видяхме тук. 823 00:39:40,810 --> 00:39:44,070 Дори и аз, и до ден днешен, постоянно правят други глупави грешки, 824 00:39:44,070 --> 00:39:47,480 всъщност са по-трудни грешки които са по-трудно да разбера. 825 00:39:47,480 --> 00:39:52,095 Но ще направи повече грешки още по- реда код можете да напишете всички наведнъж. 826 00:39:52,095 --> 00:39:54,220 И така, тази практика на, напиши малко код 827 00:39:54,220 --> 00:39:57,930 че сте доволни, съставят това, стартирайте го, го тестваме по-общо, 828 00:39:57,930 --> 00:40:01,370 след това се премести on-- толкова просто като ние продължавахме наслояване и наслояване на миналата седмица, 829 00:40:01,370 --> 00:40:04,190 изграждане от нещо много лесна за нещо по-сложно, 830 00:40:04,190 --> 00:40:05,200 направим същото тук. 831 00:40:05,200 --> 00:40:08,500 Не сядайте, и се опитват да напише цяла проблем. 832 00:40:08,500 --> 00:40:10,780 Всъщност предприеме тези стъпки бебето. 833 00:40:10,780 --> 00:40:15,100 >> Сега, струни не са всичко че полезно за себе си. 834 00:40:15,100 --> 00:40:18,210 Ние бихме всъщност, в идеалния случай, като за има нещо друго в нашия инструментариум. 835 00:40:18,210 --> 00:40:20,990 Така че нека да всъщност правят точно това. 836 00:40:20,990 --> 00:40:24,900 >> Нека вървим напред сега и привличам малко по-различна програма. 837 00:40:24,900 --> 00:40:28,320 И ние ще наричаме това int.c, за цяло число. 838 00:40:28,320 --> 00:40:30,870 Отивам да, по същия начин, включва CS550.h. 839 00:40:30,870 --> 00:40:33,060 Отивам да се включва стандартен IO. 840 00:40:33,060 --> 00:40:36,630 И това ще е доста често срещано в тези първи няколко дни за съответния клас. 841 00:40:36,630 --> 00:40:39,050 >> И аз ще се готови себе си с една основна функция. 842 00:40:39,050 --> 00:40:43,370 И сега вместо да се низ, да вървим напред и да получите едно цяло число. 843 00:40:43,370 --> 00:40:49,285 Нека го наречем аз, и наричаме го получи INT, близки parens, точка и запетая. 844 00:40:49,285 --> 00:40:51,410 А сега нека да направим нещо с него, ФОРМАТ. 845 00:40:51,410 --> 00:40:56,190 >> Да кажем, че нещо подобно здравей, наклонена черта п, запетая аз. 846 00:40:56,190 --> 00:41:00,010 Така че аз съм доста много имитира това, което направих само преди миг. 847 00:41:00,010 --> 00:41:01,660 Имам запазено място тук. 848 00:41:01,660 --> 00:41:05,150 Аз запетая аз тук, защото искам да включите и в това контейнер. 849 00:41:05,150 --> 00:41:07,250 >> Така че нека да вървим напред и да се опитаме съставянето на тази програма. 850 00:41:07,250 --> 00:41:10,060 Файлът се нарича int.c. 851 00:41:10,060 --> 00:41:12,920 Така че аз отивам да се каже, да инт, влиза. 852 00:41:12,920 --> 00:41:16,420 О, Боже мой, но не е голяма работа, нали? 853 00:41:16,420 --> 00:41:17,230 Има една грешка. 854 00:41:17,230 --> 00:41:19,810 >> Има една синтактична грешка тук, така че програмата не може да 855 00:41:19,810 --> 00:41:25,460 се изготвя вътре int.c, линия седем, характер 27, формат грешка 856 00:41:25,460 --> 00:41:28,400 определя типа Чар звезда, каквото и да е. 857 00:41:28,400 --> 00:41:30,020 Но тип аргумент е инт. 858 00:41:30,020 --> 00:41:33,110 >> Така че и тук, ние не започваш to-- макар че днес е много материал, 859 00:41:33,110 --> 00:41:35,710 ние ще ви затрупвам с абсолютно всяка функция на C, 860 00:41:35,710 --> 00:41:38,070 и програмирането по-общо, само за тези първи няколко седмици. 861 00:41:38,070 --> 00:41:40,400 Така че там често се случва да бъде жаргон с които не сте запознати. 862 00:41:40,400 --> 00:41:43,350 И, всъщност, Чар звезда е нещо, ние ще се върнем към 863 00:41:43,350 --> 00:41:44,830 за една седмица или след две години. 864 00:41:44,830 --> 00:41:47,530 >> Но за сега, нека да видим дали можем да разбор на думите, които са запознати. 865 00:41:47,530 --> 00:41:50,750 Формати-- така чухме формат спецификатор, формат код преди. 866 00:41:50,750 --> 00:41:51,840 Това е познато. 867 00:41:51,840 --> 00:41:53,840 Type-- но аргументът, има тип Int. 868 00:41:53,840 --> 00:41:55,980 Чакай малко, аз е едно цяло число. 869 00:41:55,980 --> 00:41:59,230 >> Може би на сто всъщност е има някои определено значение. 870 00:41:59,230 --> 00:42:00,230 И наистина, го прави. 871 00:42:00,230 --> 00:42:03,101 Едно цяло число, ако искате ФОРМАТ да го замени, 872 00:42:03,101 --> 00:42:05,350 всъщност трябва да се използва различен формат спецификатор. 873 00:42:05,350 --> 00:42:06,890 И вие няма да знае това освен ако някой ви каже, 874 00:42:06,890 --> 00:42:07,973 или сте го и преди. 875 00:42:07,973 --> 00:42:10,490 Но процента аз е това, което може да се използва често 876 00:42:10,490 --> 00:42:12,240 в ФОРМАТ за включване в цяло число. 877 00:42:12,240 --> 00:42:14,920 Можете също да използвате процента г за десетична число. 878 00:42:14,920 --> 00:42:16,490 Но аз е хубаво и просто тук. 879 00:42:16,490 --> 00:42:17,590 Така че ние ще отидем с това. 880 00:42:17,590 --> 00:42:21,160 >> Сега нека да вървим напред и да разясняване изработка INT, Enter. 881 00:42:21,160 --> 00:42:23,328 Това е добре, няма грешки. 882 00:42:23,328 --> 00:42:27,260 Dot наклонена черта int-- ОК, лошо потребителски опит, защото не съм си аз 883 00:42:27,260 --> 00:42:27,760 какво да правя. 884 00:42:27,760 --> 00:42:28,426 Но това е добре. 885 00:42:28,426 --> 00:42:29,480 Аз съм улавяне на бързо. 886 00:42:29,480 --> 00:42:36,260 >> А сега нека да продължа напред и да въведете Дейвид, OK, Zamila, Роб. 887 00:42:36,260 --> 00:42:37,820 ОК, така че това е нещо добро. 888 00:42:37,820 --> 00:42:41,710 Този път, аз съм с помощта на функцията, пъзел парче, наречено GET вътр. 889 00:42:41,710 --> 00:42:44,230 И се оказва out-- и ние ще виж това по-късно в term-- 890 00:42:44,230 --> 00:42:47,730 Персоналът на CS50 е изпълнила получите низ по такъв начин, 891 00:42:47,730 --> 00:42:50,350 че тя ще само физически получите низ за вас. 892 00:42:50,350 --> 00:42:54,340 >> Тя е изпълнила GET инт в такъв начин, че тя само ще 893 00:42:54,340 --> 00:42:55,590 получите цяло число за вас. 894 00:42:55,590 --> 00:42:57,830 И ако вие, човекът, не си сътрудничат, това е 895 00:42:57,830 --> 00:43:00,590 буквално просто ще казват, опитайте, опитайте, опитайте отново, 896 00:43:00,590 --> 00:43:05,200 буквално седи там примка, докато ви задължава с някакъв магически номера, 897 00:43:05,200 --> 00:43:07,670 като 50, и здравей 50. 898 00:43:07,670 --> 00:43:11,440 >> Или ако бягаме това отново и тип в 42, здравей 42. 899 00:43:11,440 --> 00:43:15,750 И така функцията GET инт вътре в които пъзел парче 900 00:43:15,750 --> 00:43:19,050 е достатъчно логика, достатъчно мисъл, за да разбера, какво е дума? 901 00:43:19,050 --> 00:43:20,330 И това, което е число? 902 00:43:20,330 --> 00:43:23,165 Само за приемане, в крайна сметка, цифри. 903 00:43:23,165 --> 00:43:25,690 904 00:43:25,690 --> 00:43:30,230 >> Така се оказва, че този не е всичко, което изразителен. 905 00:43:30,230 --> 00:43:30,910 до тук. 906 00:43:30,910 --> 00:43:33,690 Така че, Уау, за последен път сме мина доста бързо 907 00:43:33,690 --> 00:43:38,320 в игри за изпълнение, както и анимация, и художествени произведения в нулата. 908 00:43:38,320 --> 00:43:42,260 И тук, ние сме като съдържание с здравей свят, и здравей 50. 909 00:43:42,260 --> 00:43:43,696 >> Това не е всичко, което вдъхновяващо. 910 00:43:43,696 --> 00:43:46,070 И наистина, тези първи няколко примери ще отнеме известно време 911 00:43:46,070 --> 00:43:47,510 да засили в вълнение. 912 00:43:47,510 --> 00:43:49,854 Но ние имаме много повече контролира сега, в действителност. 913 00:43:49,854 --> 00:43:51,770 И ние ще се много бързо да започнете наслояване 914 00:43:51,770 --> 00:43:53,870 на върха на тези основни примитиви. 915 00:43:53,870 --> 00:43:56,370 >> Но първо, нека да се разбере какви ограничения са. 916 00:43:56,370 --> 00:43:58,620 Всъщност, едно от нещата, Scratch не прави лесно 917 00:43:58,620 --> 00:44:00,990 нека да направим, е наистина изглежда под капака, 918 00:44:00,990 --> 00:44:03,740 и да разберат какво е компютър е, какво може да направи, 919 00:44:03,740 --> 00:44:05,250 и какви са неговите ограничения. 920 00:44:05,250 --> 00:44:08,580 И, наистина, че липсата на разбиране, потенциално, в дългосрочен план 921 00:44:08,580 --> 00:44:12,520 може да доведе до нашата собствена mistakes-- писане бъгове, писане несигурен софтуер, който 922 00:44:12,520 --> 00:44:13,880 бъде хакнат по някакъв начин. 923 00:44:13,880 --> 00:44:17,130 >> Така че нека да се вземат някои стъпки към разбирането на това малко по-добре от 924 00:44:17,130 --> 00:44:19,710 начин на, да речем, на следния пример. 925 00:44:19,710 --> 00:44:23,550 Отивам да вървим напред и да приложат недвижими бърза програма, наречена Адер. 926 00:44:23,550 --> 00:44:25,134 Подобно, нека добавим някои числа заедно. 927 00:44:25,134 --> 00:44:27,800 И аз отивам да се кодират някои ъгли тук, и просто да копирате и поставяте 928 00:44:27,800 --> 00:44:30,270 където бях преди, просто за да можем да се върви по-рано. 929 00:44:30,270 --> 00:44:33,090 Така че сега аз имам основните началото на програма, наречена Адер. 930 00:44:33,090 --> 00:44:34,670 >> И да вървим напред и да направим това. 931 00:44:34,670 --> 00:44:38,680 Отивам да се продължи напред и да речем, intx получава получите вътр. 932 00:44:38,680 --> 00:44:39,430 И знаеш ли какво? 933 00:44:39,430 --> 00:44:40,990 Нека да направим един по-добър потребителски опит. 934 00:44:40,990 --> 00:44:45,740 >> Така че нека просто кажем, х е и ефективно напомни на потребителя, за да ни даде х. 935 00:44:45,740 --> 00:44:50,600 И тогава нека вървим напред и да се каже, ФОРМАТ как за Y е, този път очаквах 936 00:44:50,600 --> 00:44:53,140 две стойности от потребителя. 937 00:44:53,140 --> 00:44:59,759 И тогава нека просто отидете напред и например, ФОРМАТ, сумата на х и у е. 938 00:44:59,759 --> 00:45:01,300 И сега аз не искам да се правя на сто ите. 939 00:45:01,300 --> 00:45:09,080 Искам да направя процента аз, наклонена черта п, и след това включете стойност сума. 940 00:45:09,080 --> 00:45:10,620 >> И така, как мога да го направим? 941 00:45:10,620 --> 00:45:11,270 Знаеш ли какво? 942 00:45:11,270 --> 00:45:12,840 Знам как да се използват променливи. 943 00:45:12,840 --> 00:45:15,140 Нека само да обяви нов, инт Z. 944 00:45:15,140 --> 00:45:16,770 >> И аз ще взема предположение тук. 945 00:45:16,770 --> 00:45:21,470 Ако има еднакви знаци в тази език, може би аз просто могат да направят х плюс Y, 946 00:45:21,470 --> 00:45:23,660 толкова дълго, колкото да прекратя моят мислеше с точка и запетая? 947 00:45:23,660 --> 00:45:28,170 Сега мога да се върна тук, включете Z, завърша тази мисъл с точка и запетая. 948 00:45:28,170 --> 00:45:33,160 И нека да видим сега, ако те последователности на lines-- Х се получи вътр. 949 00:45:33,160 --> 00:45:34,770 Y е да се инт. 950 00:45:34,770 --> 00:45:37,980 >> Добави х и у, съхраняване на стойността в z-- така, отново, не забравяйте, знака за равенство 951 00:45:37,980 --> 00:45:38,560 не е равно. 952 00:45:38,560 --> 00:45:41,100 Това е задача от дясно на ляво. 953 00:45:41,100 --> 00:45:45,180 И нека да разпечатате, че сумата на х и у, не е буквално Z, 954 00:45:45,180 --> 00:45:46,830 но това, което е вътре на Z. 955 00:45:46,830 --> 00:45:50,090 Така че нека да направим Адер - хубаво, няма грешки и този път. 956 00:45:50,090 --> 00:45:53,030 Dot наклонена черта Адер, влиза, х ще бъде 1. 957 00:45:53,030 --> 00:45:55,380 >> Y ще бъде 2. 958 00:45:55,380 --> 00:45:58,964 И сумата на х и у е 3. 959 00:45:58,964 --> 00:46:00,130 Така че всичко е наред и добра. 960 00:46:00,130 --> 00:46:03,260 >> Така че можете да си представите, че математиката трябва да работи в програма като тази. 961 00:46:03,260 --> 00:46:04,040 Но знаете ли какво? 962 00:46:04,040 --> 00:46:06,904 Дали тази променлива, линия 12, дори е необходимо? 963 00:46:06,904 --> 00:46:09,820 Не е нужно да получите в навик от просто съхраняване неща в променливи 964 00:46:09,820 --> 00:46:10,980 просто защото можете. 965 00:46:10,980 --> 00:46:13,550 И в действителност, това е като цяло смята за лош дизайн 966 00:46:13,550 --> 00:46:18,100 ако желаете да създадете променлива, наречена Z в този случай, съхраняване нещо в нея, 967 00:46:18,100 --> 00:46:21,390 и след това веднага да го използвате, но никога отново. 968 00:46:21,390 --> 00:46:24,700 Защо се получи нещо име като Z, ако сте буквално 969 00:46:24,700 --> 00:46:26,770 Ще използваме, че нещо само веднъж, и така 970 00:46:26,770 --> 00:46:29,380 близкия до мястото, където сте създали че на първо място, 971 00:46:29,380 --> 00:46:31,052 толкова близо по отношение на реда код? 972 00:46:31,052 --> 00:46:31,760 Така ли какво? 973 00:46:31,760 --> 00:46:34,480 Оказва се, че C е доста гъвкав. 974 00:46:34,480 --> 00:46:36,586 Ако действително искате да плъг-ин ценности тук, 975 00:46:36,586 --> 00:46:38,210 Не ми трябва да обяви нова променлива. 976 00:46:38,210 --> 00:46:41,680 Можех само да включите в х плюс Y, защото C разбира 977 00:46:41,680 --> 00:46:43,390 аритметика, и математически оператори. 978 00:46:43,390 --> 00:46:47,140 >> Така че аз може просто да се каже, да направите това по математика, х плюс Y, независимо от тези стойности са, 979 00:46:47,140 --> 00:46:50,780 включете получения число в тази поредица. 980 00:46:50,780 --> 00:46:53,730 Така че това може да се окаже, че само един ред по-кратък, 981 00:46:53,730 --> 00:46:58,480 по-добър дизайн, по-добра програма, защото там е по-малко код, следователно 982 00:46:58,480 --> 00:46:59,921 по-малко за мен да се разбере. 983 00:46:59,921 --> 00:47:01,920 И това е също само по-чист, дотолкова, доколкото ние не сме 984 00:47:01,920 --> 00:47:04,620 въвеждане на нови думи, нови символи, като Z, 985 00:47:04,620 --> 00:47:07,510 въпреки че те наистина не служат много на целта. 986 00:47:07,510 --> 00:47:12,890 >> За съжаление, математиката не е всички, че надеждни понякога. 987 00:47:12,890 --> 00:47:15,270 Да вървим напред и да направим това. 988 00:47:15,270 --> 00:47:18,200 Отивам да се продължи напред сега и направете следното. 989 00:47:18,200 --> 00:47:27,650 >> Нека да направим ФОРМАТ, процента аз, плюс процента аз, ще бъде процента аз, наклонена черта п. 990 00:47:27,650 --> 00:47:32,240 И аз ще направя this-- xyx плюс ш. 991 00:47:32,240 --> 00:47:34,821 Така че аз съм просто ще пренапише това малко по-различно тук. 992 00:47:34,821 --> 00:47:36,320 Нека само да се направи бърза проверка здрав разум. 993 00:47:36,320 --> 00:47:37,986 Отново, нека да не го изпревари на себе си. 994 00:47:37,986 --> 00:47:41,420 Направи ехидна, точка наклонена черта ехидна. 995 00:47:41,420 --> 00:47:44,950 х е 1, Y е 2, 1 плюс 2 е 3. 996 00:47:44,950 --> 00:47:45,870 Така че това е добро. 997 00:47:45,870 --> 00:47:49,060 Но нека да усложни това сега малко, и да се създаде нов файл. 998 00:47:49,060 --> 00:47:53,350 >> Отивам да наричаме това един, се каже, цели числа, множествено число за числа. 999 00:47:53,350 --> 00:47:55,980 Позволете ми да започна, когато бях преди малко. 1000 00:47:55,980 --> 00:47:57,770 Но сега нека да направим няколко други линии. 1001 00:47:57,770 --> 00:48:03,430 Нека да вървим напред и да направите следното, ФОРМАТ, процента аз, минус процента аз, 1002 00:48:03,430 --> 00:48:08,959 е процента аз, запетая х, запетая YX минус у. 1003 00:48:08,959 --> 00:48:10,750 Така че аз съм това леко различна математика там. 1004 00:48:10,750 --> 00:48:11,624 Нека да направим още един. 1005 00:48:11,624 --> 00:48:16,610 Така процента I пъти процента аз е процента аз, наклонена черта п. 1006 00:48:16,610 --> 00:48:21,430 Нека приставки х и у, и х пъти у. 1007 00:48:21,430 --> 00:48:24,530 Ще използваме звездичката на вашия компютър за пъти. 1008 00:48:24,530 --> 00:48:26,390 >> Не използвайте х. х е променлива име тук. 1009 00:48:26,390 --> 00:48:28,270 Можете да използвате звездата за умножение. 1010 00:48:28,270 --> 00:48:29,020 Нека да направим още един. 1011 00:48:29,020 --> 00:48:34,580 ФОРМАТ процента I, раздели от процента аз, е процента аз, 1012 00:48:34,580 --> 00:48:40,460 наклонена черта п. XY, разделено на y-- така че можете да използвате наклонената черта в C 1013 00:48:40,460 --> 00:48:41,502 да се направи разделение. 1014 00:48:41,502 --> 00:48:42,460 И нека да направим един друг. 1015 00:48:42,460 --> 00:48:47,920 1016 00:48:47,920 --> 00:48:55,240 Останалата част от процента аз, разделена от процента аз, е процента аз. 1017 00:48:55,240 --> 00:48:59,550 xy-- и сега остатък е това, което е останало. 1018 00:48:59,550 --> 00:49:02,980 Когато се опитате раздели знаменател в числител 1019 00:49:02,980 --> 00:49:05,570 колко е останало, че Вие не може да се разделят навън? 1020 00:49:05,570 --> 00:49:07,910 >> Така че там не е наистина, непременно, символ 1021 00:49:07,910 --> 00:49:09,470 сме използвали в началното училище за това. 1022 00:49:09,470 --> 00:49:13,830 Но има в C. Можете каже х модул Y, където 1023 00:49:13,830 --> 00:49:18,000 този знак за процент в този context-- объркващо, когато сте вътре 1024 00:49:18,000 --> 00:49:20,170 на двойните кавички, вътре на ФОРМАТ, процента 1025 00:49:20,170 --> 00:49:21,830 се използва като спецификатор на формат. 1026 00:49:21,830 --> 00:49:25,420 >> При използване на сто извън че в математически израз, 1027 00:49:25,420 --> 00:49:29,910 това е операторът на модул за модулна arithmetic-- за нашите цели 1028 00:49:29,910 --> 00:49:33,650 тук, просто означава, това, което е най- остатък от х, разделено на Y? 1029 00:49:33,650 --> 00:49:36,130 Така х разделено на у е х черта у. 1030 00:49:36,130 --> 00:49:38,220 Какво е остатъка от х, разделено на Y? 1031 00:49:38,220 --> 00:49:41,780 Това е х мод Y, като програмист ще каже. 1032 00:49:41,780 --> 00:49:48,300 >> Така че, ако аз направих никакви грешки тук, нека давай напред и да направи цели числа, множествено число, хубаво, 1033 00:49:48,300 --> 00:49:50,010 и дот наклонена черта цели числа. 1034 00:49:50,010 --> 00:49:55,270 И да вървим напред и да направя, да речем, 1, 10. 1035 00:49:55,270 --> 00:49:58,390 Добре, 1 плюс 10 е 11, чек. 1036 00:49:58,390 --> 00:50:01,240 1 минус 10 е отрицателен 9, провери. 1037 00:50:01,240 --> 00:50:03,420 >> 1 пъти 10 е 10, чек. 1038 00:50:03,420 --> 00:50:07,090 1 делено на 10 is-- ОК, ние ще пропусна, че един. 1039 00:50:07,090 --> 00:50:09,480 Остатък от 1 делено на 10 е 1. 1040 00:50:09,480 --> 00:50:10,680 Това е правилното. 1041 00:50:10,680 --> 00:50:12,630 Но има бъг в тук. 1042 00:50:12,630 --> 00:50:15,390 >> Така че този, който аз си сложа предадат, не е вярна. 1043 00:50:15,390 --> 00:50:16,670 Искам да кажа, че е близо до 0. 1044 00:50:16,670 --> 00:50:20,670 1 делено на 10, знаеш ли, ако сме рязане на някои ъгли, сигурен, че е нула. 1045 00:50:20,670 --> 00:50:28,050 Но тя наистина трябва да е 1/10, 0.1 или 0.10, 0,1000, или др. 1046 00:50:28,050 --> 00:50:30,600 >> Тя не трябва наистина да бъде нула. 1047 00:50:30,600 --> 00:50:35,990 Е, оказва се, че компютърът е прави буквално това, което ние го каза да направя. 1048 00:50:35,990 --> 00:50:39,460 Ние правим математика като х разделени от ш. 1049 00:50:39,460 --> 00:50:44,680 И двете х и у, на линиите от код по-рано, са цели числа. 1050 00:50:44,680 --> 00:50:50,440 >> Освен това, по линия 15, ние сме казва ФОРМАТ, хей, ФОРМАТ приставка 1051 00:50:50,440 --> 00:50:54,230 цяло число, плъг-ин цяло число, приставки в integer-- конкретно 1052 00:50:54,230 --> 00:50:57,580 X, Y и след това, след х разделен Y. х и у са цели числа. 1053 00:50:57,580 --> 00:50:59,060 Ние сме добре там. 1054 00:50:59,060 --> 00:51:01,250 >> Но това, което се х делено на х? 1055 00:51:01,250 --> 00:51:06,790 X разделен Y трябва да бъде, математически, 1/10, или 0.1, 1056 00:51:06,790 --> 00:51:11,600 което е реално число, реално число като потенциално десетична запетая. 1057 00:51:11,600 --> 00:51:13,230 Това не е цяло число. 1058 00:51:13,230 --> 00:51:18,290 >> Но това, което е най-близо число на 1/10, или 0,1? 1059 00:51:18,290 --> 00:51:21,114 Да, това вид е равна на нула. 1060 00:51:21,114 --> 00:51:22,030 0.1 е като този много. 1061 00:51:22,030 --> 00:51:22,890 А 1 е това много. 1062 00:51:22,890 --> 00:51:25,870 Така че 1/10 е по-близо до 0, отколкото е една. 1063 00:51:25,870 --> 00:51:30,800 >> И така, какво C върши за us-- вид, защото ние го каза to-- 1064 00:51:30,800 --> 00:51:32,600 се съкращава това число. 1065 00:51:32,600 --> 00:51:40,540 То е като стойността, която отново е Предполага се, че нещо подобно 0.1000, 1066 00:51:40,540 --> 00:51:41,800 0 и така нататък. 1067 00:51:41,800 --> 00:51:45,320 И това е съкращаване всичко след десетичната запетая 1068 00:51:45,320 --> 00:51:47,510 така че цялата неща, защото това не е така 1069 00:51:47,510 --> 00:51:51,910 поберат в представата на цяло число, което е просто номер като отрицателна 1, 0, 1, 1070 00:51:51,910 --> 00:51:55,830 нагоре и надолу, да го изхвърля всичко след десетичната запетая, защото 1071 00:51:55,830 --> 00:51:59,020 не може да се побере десетична запетая в цяло число, по дефиниция. 1072 00:51:59,020 --> 00:52:01,290 >> Така че отговорът тук е равна на нула. 1073 00:52:01,290 --> 00:52:02,600 И как ще се определи това? 1074 00:52:02,600 --> 00:52:04,400 Имаме нужда от друго решение всички заедно. 1075 00:52:04,400 --> 00:52:06,880 И ние можем да направим това, както следва. 1076 00:52:06,880 --> 00:52:12,820 >> Нека да вървим напред и да се създаде нова файл, това се нарича floats.c. 1077 00:52:12,820 --> 00:52:16,500 И го спаси тук в същата директория, float.c. 1078 00:52:16,500 --> 00:52:19,360 1079 00:52:19,360 --> 00:52:23,260 И нека да вървим напред и да копирате някои от които код от по-рано. 1080 00:52:23,260 --> 00:52:27,690 >> Но вместо да се пад, нека да направим това. 1081 00:52:27,690 --> 00:52:31,037 Дай ми една плаваща точка стойност нарича х. където с плаваща точка 1082 00:52:31,037 --> 00:52:33,370 стойност е просто буквално нещо с плаваща запетая. 1083 00:52:33,370 --> 00:52:34,410 Тя може да се движи наляво, надясно. 1084 00:52:34,410 --> 00:52:35,530 Това е реално число. 1085 00:52:35,530 --> 00:52:38,050 >> И нека да не се обадя получите инт, но се поплавък, 1086 00:52:38,050 --> 00:52:41,420 който също бе сред менюто на опции в библиотеката C250. 1087 00:52:41,420 --> 00:52:43,220 Нека у смените с поплавък. 1088 00:52:43,220 --> 00:52:45,000 Така че това става получите плувка. 1089 00:52:45,000 --> 00:52:47,620 >> И сега, ние не искаме да се включите в цели числа. 1090 00:52:47,620 --> 00:52:53,130 Оказва се, че трябва да използвате на сто е за плувка, процента е за плувка, 1091 00:52:53,130 --> 00:52:54,560 и сега го спаси. 1092 00:52:54,560 --> 00:53:01,220 И сега, стискаме палци, да поплавъци, Ница, дот наклонена черта плувки. 1093 00:53:01,220 --> 00:53:04,280 х ще бъде един 1. Y Ще бъде 10 отново. 1094 00:53:04,280 --> 00:53:08,240 >> А, хубаво, OK допълнение ми е правилен. 1095 00:53:08,240 --> 00:53:10,240 Надявах се за повече, но аз забравих да го напиша. 1096 00:53:10,240 --> 00:53:13,250 Така че нека да отиде и да се фиксира тази логическа грешка. 1097 00:53:13,250 --> 00:53:16,280 >> Да вървим напред и да вземете следното. 1098 00:53:16,280 --> 00:53:18,080 Ние просто ще направя малко копиране и поставяне. 1099 00:53:18,080 --> 00:53:20,080 И аз ще кажа минус. 1100 00:53:20,080 --> 00:53:21,890 >> И аз ще кажа пъти. 1101 00:53:21,890 --> 00:53:24,060 И аз отивам да се каже, разделена. 1102 00:53:24,060 --> 00:53:28,240 И аз няма да направя модул, който не е уместен тук, 1103 00:53:28,240 --> 00:53:33,690 разделена от F, и пъти plus-- ОК, нека да направим това отново. 1104 00:53:33,690 --> 00:53:44,210 >> Направи плувки, дот наклонена черта поплавъци, и 1, 10, and-- хубаво, не, OK. 1105 00:53:44,210 --> 00:53:45,250 Така че аз съм идиот. 1106 00:53:45,250 --> 00:53:47,000 Така че това е много често по компютърни науки 1107 00:53:47,000 --> 00:53:49,780 да направи глупави грешки като тази. 1108 00:53:49,780 --> 00:53:53,100 >> За педагогически цели, това, което аз наистина исках да направя 1109 00:53:53,100 --> 00:53:57,410 се променят науката тук до плюс, минус, за да пъти, 1110 00:53:57,410 --> 00:54:01,140 и да се разделят, както можете да се надяваме забелязал по време на това упражнение. 1111 00:54:01,140 --> 00:54:04,700 Така че сега нека отново да се съберат тази програма, направете дот наклонена черта плувки. 1112 00:54:04,700 --> 00:54:07,950 >> И за трети път, нека да видим дали тя отговаря на очакванията ми. 1113 00:54:07,950 --> 00:54:21,480 1, 10, влиза, да, ОК, 1.000, разделена от 10.000, е 0,100000. 1114 00:54:21,480 --> 00:54:24,952 И се оказва, ние може да контролира колко номера са след тези десетични точки. 1115 00:54:24,952 --> 00:54:25,660 Ние всъщност няма. 1116 00:54:25,660 --> 00:54:26,790 Ще се върнем към това. 1117 00:54:26,790 --> 00:54:28,440 >> Но сега, в действителност, по математика е правилно. 1118 00:54:28,440 --> 00:54:30,090 Така че, отново, това, което е храна за вкъщи тук? 1119 00:54:30,090 --> 00:54:33,050 Оказва се, че в C, има не само просто strings-- и, всъщност, 1120 00:54:33,050 --> 00:54:36,120 там не са много, защото ние добавете тези с библиотеката CS50. 1121 00:54:36,120 --> 00:54:37,710 Но там не са само цели числа. 1122 00:54:37,710 --> 00:54:38,990 >> Има също така плува. 1123 00:54:38,990 --> 00:54:42,810 И се оказва, един куп други данни видове прекалено, които ще използваме, преди дълго. 1124 00:54:42,810 --> 00:54:46,270 Оказва се, че ако искате един-единствен характер, не низ от знаци, 1125 00:54:46,270 --> 00:54:47,610 можете да използвате само един знак. 1126 00:54:47,610 --> 00:54:52,350 >> Оказва се, че ако искате булев, булева стойност, вярно или само неверни, 1127 00:54:52,350 --> 00:54:56,840 благодарение на библиотеката CS50, ние сме прибавя към С типа BOOL данни, както и. 1128 00:54:56,840 --> 00:54:59,180 Но също така е да представи в много други езици, както добре. 1129 00:54:59,180 --> 00:55:04,130 И се оказва, че понякога нужда от по-големи числа след това идват по подразбиране 1130 00:55:04,130 --> 00:55:05,210 с цели числа и плувки. 1131 00:55:05,210 --> 00:55:10,590 >> И, всъщност, двойно е число който използва не 32 бита, но в 64-бита. 1132 00:55:10,590 --> 00:55:14,990 И много, много дълго е номер, който употреби не 32, бита, но в 64-бита, 1133 00:55:14,990 --> 00:55:19,190 съответно, за плаваща запетая ценности и цели числа, съответно. 1134 00:55:19,190 --> 00:55:22,780 Така е нека всъщност сега виж това в действие. 1135 00:55:22,780 --> 00:55:26,150 >> Отивам да се продължи напред тук и привличам една друга програма. 1136 00:55:26,150 --> 00:55:32,020 Ето, аз ще отида напред и не включва CS50.h. 1137 00:55:32,020 --> 00:55:34,910 И да ме пусне, включват стандартни IO.h. 1138 00:55:34,910 --> 00:55:37,320 >> И вие ще забележите нещо фънки се случва тук. 1139 00:55:37,320 --> 00:55:40,592 Това не е цветово кодиране неща в по същия начин, както преди. 1140 00:55:40,592 --> 00:55:43,550 И се оказва, че е така, защото аз не са дали нещо на име на файл. 1141 00:55:43,550 --> 00:55:47,270 >> Отивам да наричаме това един sizeof.c, и удари Save. 1142 00:55:47,270 --> 00:55:51,039 И забележи какво се случва с моя много бяло код срещу това черен фон. 1143 00:55:51,039 --> 00:55:52,830 Сега, най-малко има някои лилаво в там. 1144 00:55:52,830 --> 00:55:54,490 И това е синтаксис подчертани. 1145 00:55:54,490 --> 00:55:57,700 >> Това е, защото, честно казано, аз съм заяви пред IDE какъв тип файл 1146 00:55:57,700 --> 00:56:01,060 тя е като му дава име, и специфично разширение на файл. 1147 00:56:01,060 --> 00:56:03,620 Сега, нека да вървим напред и да направим това. 1148 00:56:03,620 --> 00:56:08,910 Отивам да се продължи напред и много просто разпечатате на following-- Булева 1149 00:56:08,910 --> 00:56:11,080 е процента LU. 1150 00:56:11,080 --> 00:56:12,950 >> Ще се върнем към че в един момент. 1151 00:56:12,950 --> 00:56:15,840 И тогава аз ще размер на печат на булев. 1152 00:56:15,840 --> 00:56:18,170 И сега, само за да спаси себе си известно време, аз съм 1153 00:56:18,170 --> 00:56:20,280 ще направим цяло куп от тях наведнъж. 1154 00:56:20,280 --> 00:56:24,620 И по-конкретно, аз ще промените това до Чар и Чар. 1155 00:56:24,620 --> 00:56:27,760 Това едно, аз отивам да се промени до едно двойно и едно двойно. 1156 00:56:27,760 --> 00:56:31,440 >> Това едно, аз отивам да се промени на плувка и на плувка. 1157 00:56:31,440 --> 00:56:35,670 Това едно, аз ще Сменете на инт и пад. 1158 00:56:35,670 --> 00:56:38,660 А това, аз ще съм да се промени, за да дълго дълго. 1159 00:56:38,660 --> 00:56:40,840 И това е още като дълго време, дълго, дълго. 1160 00:56:40,840 --> 00:56:44,572 >> И тогава, накрая, дадох себе си твърде много, низ. 1161 00:56:44,572 --> 00:56:47,030 Оказва се, че в C, има специален оператор, наречен 1162 00:56:47,030 --> 00:56:50,260 размер на която е буквално ще, когато стартирате, 1163 00:56:50,260 --> 00:56:52,099 ни каже размера на всяка от тези променливи. 1164 00:56:52,099 --> 00:56:53,890 И това е начин, сега, ние може да се свърже обратно 1165 00:56:53,890 --> 00:56:57,140 за обсъждане от миналата седмица на данни и представителство. 1166 00:56:57,140 --> 00:57:00,330 >> Нека да вървим напред и да съставят размер на дот размер черта на. 1167 00:57:00,330 --> 00:57:01,210 И нека да видим. 1168 00:57:01,210 --> 00:57:05,210 Оказва се, че в C, специално на CS50 IDE, 1169 00:57:05,210 --> 00:57:08,170 специално на операционна система Ubuntu, 1170 00:57:08,170 --> 00:57:11,100 който е 64-битова операционна а система в този случай, 1171 00:57:11,100 --> 00:57:14,189 на булев ще използвате пространство от един байт. 1172 00:57:14,189 --> 00:57:16,480 Ето как се измерва размера, не в бита, но в байтове. 1173 00:57:16,480 --> 00:57:18,690 И припомни, че един байт е осем бита. 1174 00:57:18,690 --> 00:57:22,030 Така че един булев, въпреки че технически само се нуждаят от 0 или 1, 1175 00:57:22,030 --> 00:57:24,092 това е малко разточителни как сме го реализира. 1176 00:57:24,092 --> 00:57:26,800 Това всъщност ще използваме цяло byte-- така всички нули, са може би 1177 00:57:26,800 --> 00:57:31,050 всички хора, или нещо подобно, или просто един 1 сред осем бита. 1178 00:57:31,050 --> 00:57:34,962 >> А Чар, междувременно, се използва за герой като Ascii характер на миналата седмица, 1179 00:57:34,962 --> 00:57:36,170 ще бъде един символ. 1180 00:57:36,170 --> 00:57:42,340 И това синхронизира с нашето разбиране за да е не повече от 256 bits---скоро, 1181 00:57:42,340 --> 00:57:45,360 синхронизира с него е не повече от 8 бита, които 1182 00:57:45,360 --> 00:57:47,450 ни дава толкова, колкото 256 стойности. 1183 00:57:47,450 --> 00:57:49,680 Двойно ще се да е 8 байта или 64 бита. 1184 00:57:49,680 --> 00:57:50,510 >> А плувка е 4. 1185 00:57:50,510 --> 00:57:51,690 Пад е 4. 1186 00:57:51,690 --> 00:57:52,980 А дълго, дълго е 8. 1187 00:57:52,980 --> 00:57:54,716 И низ е 8. 1188 00:57:54,716 --> 00:57:55,840 Но не се тревожи за това. 1189 00:57:55,840 --> 00:57:57,340 Отиваме да се бели обратно този слой. 1190 00:57:57,340 --> 00:57:59,940 Оказва се, струни могат да бъде по-дълъг от 8 байта. 1191 00:57:59,940 --> 00:58:02,310 >> И наистина, ние написахме струни вече, здравей свят, 1192 00:58:02,310 --> 00:58:03,700 повече от 8 байта. 1193 00:58:03,700 --> 00:58:06,270 Но ние ще се върнем към че в един момент. 1194 00:58:06,270 --> 00:58:09,690 Но отнеме тук е следното. 1195 00:58:09,690 --> 00:58:15,320 >> Всеки компютър има само ограничен количество памет и пространство. 1196 00:58:15,320 --> 00:58:17,860 Можете да съхранявате само толкова много файлове на вашия Mac или PC. 1197 00:58:17,860 --> 00:58:23,030 Можете да съхранявате само толкова много програми в RAM работи наведнъж, непременно, дори 1198 00:58:23,030 --> 00:58:26,360 с виртуална памет, защото имате ограничен размер на RAM. 1199 00:58:26,360 --> 00:58:28,990 >> И само за да picture-- ако никога не сте отворени за лаптоп 1200 00:58:28,990 --> 00:58:31,300 или поръча допълнителна памет за компютър, можете 1201 00:58:31,300 --> 00:58:33,670 може и да не знаят, че вътрешността на компютъра си 1202 00:58:33,670 --> 00:58:36,590 е нещо, което изглежда малко като този. 1203 00:58:36,590 --> 00:58:40,540 Така че това е само една обща компания, наречена Решаващо значение, че прави RAM за компютри. 1204 00:58:40,540 --> 00:58:43,620 И RAM е мястото, където програми живеят, докато те вървят. 1205 00:58:43,620 --> 00:58:46,630 >> Така че за всеки Mac или PC, когато се удвои кликнете програма, и тя се отваря, 1206 00:58:46,630 --> 00:58:48,921 и тя се отваря някакъв документ Word Или нещо такова, 1207 00:58:48,921 --> 00:58:51,764 то тя съхранява временно в RAM, защото RAM е по-бързо 1208 00:58:51,764 --> 00:58:53,680 от вашия твърд диск, или Вашата твърдо състояние диск. 1209 00:58:53,680 --> 00:58:56,600 Така че това е точно там, където програми вървят да живее, когато те се изпълняват, 1210 00:58:56,600 --> 00:58:58,060 или когато се използват файлове. 1211 00:58:58,060 --> 00:59:00,890 >> Така че има неща, които изглеждат като тази във вътрешността на вашия лаптоп, 1212 00:59:00,890 --> 00:59:03,320 или малко по-големи неща вътре на вашия работен плот. 1213 00:59:03,320 --> 00:59:07,440 Но ключът е имате само един краен брой от тези неща. 1214 00:59:07,440 --> 00:59:11,230 И има само ограничен брой хардуер седи на това бюро полето 1215 00:59:11,230 --> 00:59:11,730 тук. 1216 00:59:11,730 --> 00:59:15,920 >> Така че, разбира се, не можем да се съхранява безкрайно дълги числа. 1217 00:59:15,920 --> 00:59:19,030 И, все пак, ако мислите, че обратно на началното училище, колко цифри могат 1218 00:59:19,030 --> 00:59:21,400 имате в дясно на десетична точка? 1219 00:59:21,400 --> 00:59:24,680 За този въпрос, колко цифри могат имате в ляво на десетичната точка? 1220 00:59:24,680 --> 00:59:26,300 Наистина, безкрайно много. 1221 00:59:26,300 --> 00:59:30,840 >> Сега, ние, хората само мощ Как се произнася милиона, 1222 00:59:30,840 --> 00:59:34,990 и милиард, трилион, и квадрилиона, и квинтилиона. 1223 00:59:34,990 --> 00:59:39,370 И аз съм бутане на границите на моя understanding-- или my-- Разбирам 1224 00:59:39,370 --> 00:59:41,110 номера, но ми произношение на номера. 1225 00:59:41,110 --> 00:59:44,720 Но те могат да получат безкрайно голяма с безкрайно много Цифрите от ляво 1226 00:59:44,720 --> 00:59:47,050 или отдясно на десетичната запетая. 1227 00:59:47,050 --> 00:59:50,040 >> Но компютри имат само ограничен размер на паметта, 1228 00:59:50,040 --> 00:59:53,510 краен брой транзистори, а краен брой крушки вътре. 1229 00:59:53,510 --> 00:59:57,350 Така че това, което се случва, когато да изтече на пространството? 1230 00:59:57,350 --> 00:59:59,620 С други думи, ако сте мисля, обратно на миналата седмица 1231 00:59:59,620 --> 01:00:03,160 когато ние говорихме за номера самите са представени в двоичен, 1232 01:00:03,160 --> 01:00:05,480 Предполагам, че ние имаме този 8-битова стойност тук. 1233 01:00:05,480 --> 01:00:08,290 >> И ние имаме седем 1 и една 0. 1234 01:00:08,290 --> 01:00:10,827 И предполагам, че искаме да се добави 1 до тази стойност. 1235 01:00:10,827 --> 01:00:12,410 Това е наистина голям брой точно сега. 1236 01:00:12,410 --> 01:00:16,610 >> Това е 254, ако си спомням по математика от миналата полето седмица. 1237 01:00:16,610 --> 01:00:19,480 Но какво, ако сменя че дясната 0 до 1? 1238 01:00:19,480 --> 01:00:22,800 Цялото число, на Разбира се, става осем 1 е. 1239 01:00:22,800 --> 01:00:24,050 Така че ние все още сме добри. 1240 01:00:24,050 --> 01:00:27,204 >> И това вероятно представлява 255, въпреки че в зависимост от контекста 1241 01:00:27,204 --> 01:00:29,120 тя действително може да представлява отрицателно число. 1242 01:00:29,120 --> 01:00:31,240 Но повече за това друг път. 1243 01:00:31,240 --> 01:00:34,220 Това се чувства като това е за толкова високо, колкото мога да разчитам. 1244 01:00:34,220 --> 01:00:35,290 >> Сега, това е само 8 бита. 1245 01:00:35,290 --> 01:00:38,170 И ми Mac, със сигурност, има начин повече от 8 бита памет. 1246 01:00:38,170 --> 01:00:39,170 Но тя има ограничен. 1247 01:00:39,170 --> 01:00:43,230 Така че същия аргумент се прилага, дори ако ние има повече от тези хора на екрана. 1248 01:00:43,230 --> 01:00:47,020 >> Но какво се случва, ако сте съхраняване на този номер, 255, 1249 01:00:47,020 --> 01:00:49,290 и искате да брои 1 малко по-висока? 1250 01:00:49,290 --> 01:00:51,600 Вие искате да отидете от 255 до 256. 1251 01:00:51,600 --> 01:00:55,800 Проблемът, разбира се, е, че ако започне преброяване на нула, като през миналата седмица, 1252 01:00:55,800 --> 01:00:59,670 Вие не може да се брои за високо 256, да не говорим за 257, 1253 01:00:59,670 --> 01:01:02,584 да не говорим за 258, m, защото това, което се случва, когато добавите 1? 1254 01:01:02,584 --> 01:01:05,000 Ако го направите стария клас училището подход, ти сложи 1 тук, 1255 01:01:05,000 --> 01:01:08,150 и след 1 плюс 1 е 2, но това е наистина е нула, което носите на 1, 1256 01:01:08,150 --> 01:01:09,695 извършване на 1, носи 1. 1257 01:01:09,695 --> 01:01:12,620 Всички тези неща, тези 1 е, отиват до нула. 1258 01:01:12,620 --> 01:01:17,820 И вие внесено, да, както някой изтъкна, а 1 на лявата ръка. 1259 01:01:17,820 --> 01:01:22,540 Но всичко, което може всъщност се види и се поберат в паметта 1260 01:01:22,540 --> 01:01:27,960 е само на осем 0, която е да се каже, в един момент, ако, компютър, 1261 01:01:27,960 --> 01:01:32,490 Опитах се да броим достатъчно високо, вие сте ще обгърне, изглежда, 1262 01:01:32,490 --> 01:01:35,850 до нула, или може би дори отрицателен числа, които са дори по-ниски от нула. 1263 01:01:35,850 --> 01:01:37,260 >> И ние можем да вид видите това. 1264 01:01:37,260 --> 01:01:39,900 Нека да вървим напред и да напише истински бърз програма тук. 1265 01:01:39,900 --> 01:01:43,690 Нека да вървим напред и да напише програма, наречена от преливане. 1266 01:01:43,690 --> 01:01:49,980 Включи CS50.h, включете стандарт IO.h-- о, 1267 01:01:49,980 --> 01:01:51,730 Аз наистина липсваше ми оцветяване на синтаксиса. 1268 01:01:51,730 --> 01:01:54,440 Така че нека да спаси това, както overflow.c. 1269 01:01:54,440 --> 01:01:57,084 >> И сега INT главната void-- и не след дълго, ние ще 1270 01:01:57,084 --> 01:01:59,500 се върне към обяснява защо пазим написването INT главната невалидни. 1271 01:01:59,500 --> 01:02:02,080 Но за сега, нека просто да се направи това, да го приемате за даденост. 1272 01:02:02,080 --> 01:02:06,200 Нека да се даде едно цяло число, и го инициализира на 0. 1273 01:02:06,200 --> 01:02:11,716 >> Нека тогава да направим за инт да получа zero-- Всъщност, нека да направим един безкраен цикъл 1274 01:02:11,716 --> 01:02:12,590 и да видим какво ще стане. 1275 01:02:12,590 --> 01:02:22,440 Докато е вярно, тогава нека да разпечатате п е процента аз, наклонена черта п, плъг-ин п. 1276 01:02:22,440 --> 01:02:27,200 Но, сега, нека да направим п получава п плюс 1. 1277 01:02:27,200 --> 01:02:29,660 >> С други думи, на всеки повторение на този безкраен цикъл, 1278 01:02:29,660 --> 01:02:32,550 нека да стойност н е, и се добавя 1 към него, и след това 1279 01:02:32,550 --> 01:02:34,350 съхранява резултата обратно в н в ляво. 1280 01:02:34,350 --> 01:02:37,150 И, всъщност, ние сме виждали синтаксис леко като това, за кратко. 1281 01:02:37,150 --> 01:02:39,730 Готин трик е вместо от написването всичко това, 1282 01:02:39,730 --> 01:02:42,770 Всъщност може да се каже за п плюс е равно на 1. 1283 01:02:42,770 --> 01:02:47,480 >> Или, ако наистина искате да се фантазия, може да се каже п плюс плюс точка и запетая. 1284 01:02:47,480 --> 01:02:50,130 Но тези последните две са само това, което ние бихме се обадя синтактична захар 1285 01:02:50,130 --> 01:02:50,790 за първото нещо. 1286 01:02:50,790 --> 01:02:53,456 >> Първото нещо, което е по-ясно, напълно глоба, напълно правилно. 1287 01:02:53,456 --> 01:02:55,470 Но това е по-често, което ще кажа. 1288 01:02:55,470 --> 01:02:57,210 Така че ние ще направим това само за миг. 1289 01:02:57,210 --> 01:03:01,685 >> Нека сега да преливат, което звучи -скоро зловещо, точка наклонена черта преливник. 1290 01:03:01,685 --> 01:03:04,380 1291 01:03:04,380 --> 01:03:09,852 Нека да видим, п Става доста голям. 1292 01:03:09,852 --> 01:03:11,310 Но нека помислим, колко голям може да п получите? 1293 01:03:11,310 --> 01:03:12,870 >> п е Int. 1294 01:03:12,870 --> 01:03:16,400 Видяхме преди малко с размера на Например, че едно цяло число е четири байта. 1295 01:03:16,400 --> 01:03:22,070 Ние знаем от миналата седмица, четири байта е 32 бита, защото 8 пъти 4, това е 32. 1296 01:03:22,070 --> 01:03:23,460 Това ще бъде 4 милиарда. 1297 01:03:23,460 --> 01:03:25,802 >> И ние сме до 800,000. 1298 01:03:25,802 --> 01:03:28,510 Това ще отнеме цяла вечност, за да брои толкова висока, колкото евентуално може. 1299 01:03:28,510 --> 01:03:30,635 Така че аз ще отида напред, както може би не след дълго, 1300 01:03:30,635 --> 01:03:34,910 и натиснете Control C-- честно казано, Control C, много, където Control C обикновено 1301 01:03:34,910 --> 01:03:36,034 средства анулират. 1302 01:03:36,034 --> 01:03:38,200 За съжаление, поради тази работи в облака, 1303 01:03:38,200 --> 01:03:41,190 понякога облакът е плюе толкова много неща, 1304 01:03:41,190 --> 01:03:44,180 толкова много продукция, то се случва да отнеме малко повече време за моя вход 1305 01:03:44,180 --> 01:03:45,630 да стигнем до облака. 1306 01:03:45,630 --> 01:03:49,240 Така че, въпреки че аз се удари Control C преди няколко секунди, 1307 01:03:49,240 --> 01:03:53,110 това определено е на страната ефект на един безкраен цикъл. 1308 01:03:53,110 --> 01:03:56,070 >> И така, в такива случаи, ние сме Ще оставим това да бъде. 1309 01:03:56,070 --> 01:03:59,050 И ние ще се добавят още терминален прозорец тук 1310 01:03:59,050 --> 01:04:03,186 с плюса, което разбира се не е така по този начин, тъй като тя все още мисли. 1311 01:04:03,186 --> 01:04:05,310 И да вървим напред и да бъде малко по-разумен. 1312 01:04:05,310 --> 01:04:07,768 >> Отивам да вървим напред и да се направи това само краен брой пъти. 1313 01:04:07,768 --> 01:04:10,047 Нека да се използва за линия, които споменах по-рано. 1314 01:04:10,047 --> 01:04:10,630 Да го направим. 1315 01:04:10,630 --> 01:04:13,430 Дай ми още една променлива INT I получава 0. 1316 01:04:13,430 --> 01:04:17,430 аз е по-малко, отколкото, да речем, 64 аз ++. 1317 01:04:17,430 --> 01:04:24,010 А сега нека да вървим напред и печат от п е процента аз, запетая п. 1318 01:04:24,010 --> 01:04:27,547 И тогава, N- това все още е ще отнеме завинаги. 1319 01:04:27,547 --> 01:04:28,130 Да го направим. 1320 01:04:28,130 --> 01:04:30,620 >> п получава п пъти 2. 1321 01:04:30,620 --> 01:04:34,140 Или можем да се фантазия и правя пъти е равно на 2. 1322 01:04:34,140 --> 01:04:37,120 Но нека просто кажем, п Самата равнява, пъти 2. 1323 01:04:37,120 --> 01:04:39,321 С други думи, в тази Новата версия на програмата, 1324 01:04:39,321 --> 01:04:41,820 Аз не искам да чакам вечно от подобно 800,000 до 4 милиарда. 1325 01:04:41,820 --> 01:04:43,070 Нека просто да приключваме с. 1326 01:04:43,070 --> 01:04:44,920 >> Нека всъщност удвои н всяко време. 1327 01:04:44,920 --> 01:04:47,660 Което, изземване, удвояване е противоположна на като, разбира се. 1328 01:04:47,660 --> 01:04:50,035 И докато миналата седмица имаме нещо отново и отново, 1329 01:04:50,035 --> 01:04:52,200 и отново, супер бързо, удвояване със сигурност ще 1330 01:04:52,200 --> 01:04:58,080 ни получи от 1 до възможно най-голям стойност, че можем да разчитаме на с вътр. 1331 01:04:58,080 --> 01:04:59,750 >> Така че нека да направим точно това. 1332 01:04:59,750 --> 01:05:01,720 И ние ще се върнем към това, преди дълго. 1333 01:05:01,720 --> 01:05:04,180 Но това, отново, е точно като на повторение блок в Scratch. 1334 01:05:04,180 --> 01:05:05,600 И вие ще използвате този преди дълго. 1335 01:05:05,600 --> 01:05:10,170 >> Това просто означава, броене от нула до, но не е равна, до 64. 1336 01:05:10,170 --> 01:05:14,285 И на всяка итерация на тази контур, само имайте увеличаване аз. 1337 01:05:14,285 --> 01:05:18,990 Така че аз ++ - и тази обща структура по линия 7 е просто супер общ начин 1338 01:05:18,990 --> 01:05:22,290 от повтаряне на някои линии на код, някои брой пъти. 1339 01:05:22,290 --> 01:05:23,362 Кои реда код? 1340 01:05:23,362 --> 01:05:25,570 Тези фигурни скоби, както ви може да са придобит от предприятието, 1341 01:05:25,570 --> 01:05:26,780 означава, направете следното. 1342 01:05:26,780 --> 01:05:29,510 >> Това е в подобно Scratch, когато тя има жълтите блокове 1343 01:05:29,510 --> 01:05:32,680 и други цветове, които вид прегърне или прегърне други блокове. 1344 01:05:32,680 --> 01:05:34,750 Ето какви са тези къдрава скоби правят тук. 1345 01:05:34,750 --> 01:05:40,200 Така че, ако аз имам синтаксис ми right-- ви може да видите символа на моркови в C средства 1346 01:05:40,200 --> 01:05:42,706 това е колко пъти съм бил опитвайки се да реши този проблем. 1347 01:05:42,706 --> 01:05:45,330 Така че нека да се отървете от това един напълно, и да затворите този прозорец. 1348 01:05:45,330 --> 01:05:46,520 И ние ще използваме новия. 1349 01:05:46,520 --> 01:05:51,980 Направи преливник, точка наклонена черта преливник, Enter, всичко е наред, 1350 01:05:51,980 --> 01:05:53,090 тя изглежда зле в началото. 1351 01:05:53,090 --> 01:05:56,200 Но нека да превъртите назад във времето, защото аз направих това 64 пъти. 1352 01:05:56,200 --> 01:05:58,700 >> И забележи първи път, п е 1. 1353 01:05:58,700 --> 01:06:03,110 За втори път, п е 2, след 4 и след това 8, след това 16. 1354 01:06:03,110 --> 01:06:09,450 И изглежда, че веднага след като Да стигна до приблизително 1 милиард, 1355 01:06:09,450 --> 01:06:12,800 ако го удвои отново, че трябва да ми даде 2 млрд. 1356 01:06:12,800 --> 01:06:14,980 Но се оказва, че е полето на прага. 1357 01:06:14,980 --> 01:06:18,930 >> И така, тя всъщност е залято пад от 1 милиард 1358 01:06:18,930 --> 01:06:23,514 до приблизително отрицателна 2 милиарда, защото цяло число, 1359 01:06:23,514 --> 01:06:25,430 за разлика от номера ние, бяха предположи миналата седмица, 1360 01:06:25,430 --> 01:06:28,397 може да бъде както положителен и отрицателен в действителност и в компютър. 1361 01:06:28,397 --> 01:06:30,730 И така, най-малко един от тези, бита, е действително откраднати. 1362 01:06:30,730 --> 01:06:34,190 Така че ние наистина имаме само 31 бита, или 2 милиарда възможни стойности. 1363 01:06:34,190 --> 01:06:38,220 >> Но за сега, на храна за вкъщи е доста просто, независимо от тези номера са 1364 01:06:38,220 --> 01:06:42,280 и каквото и математиката е, нещо лошо се случва в крайна сметка, 1365 01:06:42,280 --> 01:06:46,980 защото в крайна сметка, който се опитвате да пермутиране на битовете един твърде много пъти. 1366 01:06:46,980 --> 01:06:51,060 И действително премине от всичко 1, за да може би всички 0 е, или може би 1367 01:06:51,060 --> 01:06:54,260 просто някакъв друг модел, който го Ясно е, че в зависимост от контекста, 1368 01:06:54,260 --> 01:06:56,342 може да се тълкува като отрицателно число. 1369 01:06:56,342 --> 01:06:59,300 И така, това би изглеждало най-високата I може да разчита в този конкретен програма 1370 01:06:59,300 --> 01:07:01,210 е само около 1 млрд. 1371 01:07:01,210 --> 01:07:02,760 Но има частично решение тук. 1372 01:07:02,760 --> 01:07:03,480 Знаеш ли какво? 1373 01:07:03,480 --> 01:07:07,600 >> Нека да се промени от INT за дълго дълго. 1374 01:07:07,600 --> 01:07:10,633 И нека да вървим напред тук и say-- Отивам да имат 1375 01:07:10,633 --> 01:07:12,290 да се промени това да неподписан дълго. 1376 01:07:12,290 --> 01:07:16,860 Или, нека да видим, никога не съм се помня. 1377 01:07:16,860 --> 01:07:19,920 >> Да вървим напред и да преливат. 1378 01:07:19,920 --> 01:07:21,860 Не, не е това, LLD, благодаря ви. 1379 01:07:21,860 --> 01:07:23,430 Така че понякога звън може да бъде полезно. 1380 01:07:23,430 --> 01:07:27,550 Аз не помня какво формат спецификатор е за дълго дълго. 1381 01:07:27,550 --> 01:07:28,950 >> Но, наистина, звън ми каза. 1382 01:07:28,950 --> 01:07:31,570 Green е някакво добро, все още означава, че сте направили грешка. 1383 01:07:31,570 --> 01:07:33,190 Тя се познае, че имах предвид LLD. 1384 01:07:33,190 --> 01:07:38,750 >> Така че нека да вземе това е съвет, дълго дълго десетичен номер, освен това. 1385 01:07:38,750 --> 01:07:43,190 И нека да го повтаря отново, с точка наклонена черта преливник, Enter. 1386 01:07:43,190 --> 01:07:45,020 А сега какво е готино е това. 1387 01:07:45,020 --> 01:07:49,140 >> Ако превъртите назад във времето, ние все още се започне преброяване в същото place-- 1, 2, 4, 1388 01:07:49,140 --> 01:07:50,220 8, 16. 1389 01:07:50,220 --> 01:07:54,860 Забележете, ние получаваме всички начин до 1 млрд. 1390 01:07:54,860 --> 01:07:57,070 Но след това спокойно можем да стигнем до 2 млрд. 1391 01:07:57,070 --> 01:08:01,300 >> След това стигаме до 4 милиарда, След 8 милиарда, 17 милиарда. 1392 01:08:01,300 --> 01:08:03,340 И да отидем по-висока, а по-висока и по-висока. 1393 01:08:03,340 --> 01:08:05,740 В крайна сметка, това също паузи. 1394 01:08:05,740 --> 01:08:09,350 >> В крайна сметка, с дълъг дълго, който е 64-битова стойност, не 1395 01:08:09,350 --> 01:08:13,660 стойност на 32-битова, ако броим твърде висока, можете увийте около 0. 1396 01:08:13,660 --> 01:08:16,410 И в този случай, ние се случи да в крайна сметка с отрицателно число. 1397 01:08:16,410 --> 01:08:17,550 >> Така че това е проблем. 1398 01:08:17,550 --> 01:08:20,439 И се оказва, че този проблем не е всичко, което тайнствена. 1399 01:08:20,439 --> 01:08:23,060 Въпреки, че аз съм умишлено то индуцира с тези грешки, 1400 01:08:23,060 --> 01:08:26,149 Оказва се, ние го видите вид всички около нас, или поне някои от нас правят. 1401 01:08:26,149 --> 01:08:28,939 >> Така че в Lego Star Wars, ако което някога съм играл играта, 1402 01:08:28,939 --> 01:08:33,830 Оказва се, можете да отидете около чупене неща в LEGO свят, 1403 01:08:33,830 --> 01:08:36,640 и събиране на монети, по същество. 1404 01:08:36,640 --> 01:08:39,200 И ако някога сте се играе тази игра твърде много време, 1405 01:08:39,200 --> 01:08:42,630 като този безименен индивид тук е направил, от общия брой 1406 01:08:42,630 --> 01:08:46,700 на монети, които можете да събирате е, изглежда, 4000000000. 1407 01:08:46,700 --> 01:08:48,240 >> Сега, с това е всъщност закръглено. 1408 01:08:48,240 --> 01:08:50,239 Така LEGO се опитва да пазят нещата удобни за ползване. 1409 01:08:50,239 --> 01:08:53,779 Те не го е направил точно 2 до на 32 мощност, за миналата седмица. 1410 01:08:53,779 --> 01:08:55,310 Но 4000000000 е причина. 1411 01:08:55,310 --> 01:08:58,979 Изглежда, въз основа на тази информация, че LEGO, и компанията, която 1412 01:08:58,979 --> 01:09:02,624 направи това действителното софтуер, реши че максималният брой на монети 1413 01:09:02,624 --> 01:09:04,540 потребителят може да се натрупват е, наистина, 4 милиарда, 1414 01:09:04,540 --> 01:09:12,069 защото те са избрали в техния код да се използват не по-дълго, дълго, очевидно, 1415 01:09:12,069 --> 01:09:16,140 но само цяло число, неподписана цяло число, само положително цяло число, чиято 1416 01:09:16,140 --> 01:09:18,089 макс стойност приблизително е, че. 1417 01:09:18,089 --> 01:09:19,380 Е, тук е друга забавна един. 1418 01:09:19,380 --> 01:09:23,500 Така в игра цивилизация, която някои от вас може да е запознат, с 1419 01:09:23,500 --> 01:09:26,660 Оказва се, че преди години там е бъг в тази игра, при която 1420 01:09:26,660 --> 01:09:28,750 ако играе ролята на Ганди в играта, 1421 01:09:28,750 --> 01:09:34,020 вместо него е много пацифист, вместо беше невероятно, невероятно 1422 01:09:34,020 --> 01:09:36,399 агресивен, при някои обстоятелства. 1423 01:09:36,399 --> 01:09:40,529 По-специално, начинът, по който Civilization произведения е, че ако играчът, 1424 01:09:40,529 --> 01:09:44,680 приеме демокрацията, си агресивност на полувремето получава 1425 01:09:44,680 --> 01:09:48,130 декрементирани от две, така минус минус, а след това минус минус. 1426 01:09:48,130 --> 01:09:50,569 >> Така че ви извадим 2 от действителната следващите стъпки. 1427 01:09:50,569 --> 01:09:56,650 За съжаление, ако си следващите стъпки е първоначално 1, и изваждате 2 от него 1428 01:09:56,650 --> 01:09:59,050 след приемането на демокрацията като Ганди тук, може да 1429 01:09:59,050 --> 01:10:02,200 са направили, защото той беше много passive-- 1 по скалата на агресивност. 1430 01:10:02,200 --> 01:10:04,830 Но ако той приеме демокрацията, тогава той отива от 1 до отрицателен 1. 1431 01:10:04,830 --> 01:10:11,470 >> За съжаление, те бяха използване на неподписани номера, 1432 01:10:11,470 --> 01:10:15,400 което означава, че те третират дори отрицателен номера, като че ли те са били положителни. 1433 01:10:15,400 --> 01:10:19,780 И се оказва, че положителен еквивалент на отрицателна 1, 1434 01:10:19,780 --> 01:10:23,480 в типичните компютърни програми, е 255. 1435 01:10:23,480 --> 01:10:27,250 Така че, ако Ганди приема И следователно демокрация има 1436 01:10:27,250 --> 01:10:32,470 неговата агресивност полувремето намалял, тя всъщност се търкаля около 255 1437 01:10:32,470 --> 01:10:35,470 и го прави най- агресивен характер в играта. 1438 01:10:35,470 --> 01:10:36,930 Така че ви Може ли Google нагоре по този въпрос. 1439 01:10:36,930 --> 01:10:39,380 И това е, наистина, един случайно програмен бъг, 1440 01:10:39,380 --> 01:10:43,010 но че е влязъл доста ерудиция и досега. 1441 01:10:43,010 --> 01:10:44,360 >> Това е всичко, забавно и сладко. 1442 01:10:44,360 --> 01:10:47,760 По-страшно е, когато действителното реалния свят устройства, а не игри, 1443 01:10:47,760 --> 01:10:48,820 имат същите тези грешки. 1444 01:10:48,820 --> 01:10:54,500 В действителност, само преди година беше една статия повече за Dreamliner Boeing 787. 1445 01:10:54,500 --> 01:10:56,850 >> И статията на първа поглед чете малко тайнствена. 1446 01:10:56,850 --> 01:11:01,480 Но той каза, че това, софтуер уязвимост в Боинг 1447 01:11:01,480 --> 01:11:04,790 Новият 787 Dreamliner струя има потенциала да предизвика пилоти 1448 01:11:04,790 --> 01:11:07,220 да загуби контрол над въздухоплавателното средство, евентуално 1449 01:11:07,220 --> 01:11:11,750 в средата на полета, служителите на FAA предупредени авиокомпаниите наскоро. 1450 01:11:11,750 --> 01:11:14,520 Беше определяне че един модел 787 1451 01:11:14,520 --> 01:11:19,770 самолет, който е задвижван непрекъснато в продължение на 248 дни 1452 01:11:19,770 --> 01:11:24,880 може да загуби всичко променлив ток, AC, електрическа енергия поради генератора 1453 01:11:24,880 --> 01:11:28,892 уреди за управление, GCUs, едновременно навлиза в провалят безопасен режим. 1454 01:11:28,892 --> 01:11:29,850 Това е нещо ме губи. 1455 01:11:29,850 --> 01:11:35,390 Но бележката заяви, ОК, сега аз имам това, условието е бил причинен от софтуер 1456 01:11:35,390 --> 01:11:38,590 противодействие на вътрешната да контрол на генератор 1457 01:11:38,590 --> 01:11:44,860 единици, които ще се преливат след 248 дни на непрекъснато захранване. 1458 01:11:44,860 --> 01:11:47,070 Ние се издава този забележите, за да се предотврати загуба 1459 01:11:47,070 --> 01:11:49,300 на всички AC електрически мощност, което може да доведе 1460 01:11:49,300 --> 01:11:50,980 до загуба на контрол на самолета. 1461 01:11:50,980 --> 01:11:55,380 >> Така че, буквално, има известно число, или някакъв подобен вид данни, 1462 01:11:55,380 --> 01:11:57,960 се използва в софтуер в действителен самолет 1463 01:11:57,960 --> 01:12:00,756 че ако продължаваш да си самолет за достатъчно дълго време, което очевидно 1464 01:12:00,756 --> 01:12:03,880 може да бъде случаят, ако сте само тичане ги постоянно и никога не изключвате 1465 01:12:03,880 --> 01:12:06,810 вашия самолет, изглежда, или отдаване под наем на своите батерии умират, 1466 01:12:06,810 --> 01:12:09,840 в крайна сметка ще брои, и нагоре, и нагоре, и нагоре, и нагоре, и нагоре. 1467 01:12:09,840 --> 01:12:12,150 >> И, по природа, а ограничен размер на паметта 1468 01:12:12,150 --> 01:12:15,880 ще прелее, подвижен гръб към нула или някаква отрицателна стойност, 1469 01:12:15,880 --> 01:12:19,920 страничен ефект от които е плашещо реалната действителност 1470 01:12:19,920 --> 01:12:23,970 че самолетът може да се наложи да се рестартира, ефективно, 1471 01:12:23,970 --> 01:12:27,290 или може да падне, по-лошо, тъй като мухи. 1472 01:12:27,290 --> 01:12:29,230 Така че тези видове проблеми са все още с нас, 1473 01:12:29,230 --> 01:12:33,130 even-- това беше 2015 статия, още по-страшно 1474 01:12:33,130 --> 01:12:36,100 когато не е задължително разбираме, оценяваме, или предвиждане 1475 01:12:36,100 --> 01:12:38,640 тези видове грешки. 1476 01:12:38,640 --> 01:12:42,030 >> Така се оказва, че има един друг Лошото представяне на данни. 1477 01:12:42,030 --> 01:12:47,080 Оказва се, че дори и плувки са вид на погрешна, защото плувки, твърде, 1478 01:12:47,080 --> 01:12:51,440 Предложих са 32 бита, или може би 64, ако използвате два пъти. 1479 01:12:51,440 --> 01:12:53,070 Но това е все още ограничен. 1480 01:12:53,070 --> 01:12:57,070 >> И уловката е, че ако можеш сложи един безкраен брой на номера 1481 01:12:57,070 --> 01:12:59,460 след десетичната точка, не е ли начин 1482 01:12:59,460 --> 01:13:02,690 може да представлява всичко възможно номера, които ни учеха 1483 01:13:02,690 --> 01:13:04,990 в началното училище може да съществува в света. 1484 01:13:04,990 --> 01:13:08,870 Компютър, по същество, трябва да изберете подмножество от тези номера 1485 01:13:08,870 --> 01:13:10,200 да представлява точно. 1486 01:13:10,200 --> 01:13:12,450 >> Сега, че компютърът може да кръг може би малко, 1487 01:13:12,450 --> 01:13:17,900 и може да ви позволи да се грубо магазин всеки номер, който може да искате. 1488 01:13:17,900 --> 01:13:20,940 Но просто интуитивно, ако да има краен брой битове, 1489 01:13:20,940 --> 01:13:24,560 можете да ги пермутиране само в толкова много крайни начини. 1490 01:13:24,560 --> 01:13:26,570 Така че не може да използват краен брой 1491 01:13:26,570 --> 01:13:29,880 на пермутация на битовете, модели на нули и единици, 1492 01:13:29,880 --> 01:13:32,940 да представлява една безкрайна брой номера, 1493 01:13:32,940 --> 01:13:37,370 което предполага, че компютрите мощ много добре да бъде разположена на нас понякога. 1494 01:13:37,370 --> 01:13:38,770 >> Всъщност, нека да направим това. 1495 01:13:38,770 --> 01:13:41,239 Нека да се върнем в CS50 IDE. 1496 01:13:41,239 --> 01:13:43,030 Нека да вървим напред и да създаване на малка програма 1497 01:13:43,030 --> 01:13:47,940 наречен неточност, за да покаже, че компютри са, наистина, неточни. 1498 01:13:47,940 --> 01:13:51,910 >> И нека да вървим напред и да се започне с някои от които код от преди, 1499 01:13:51,910 --> 01:13:53,830 и сега просто направете следното. 1500 01:13:53,830 --> 01:14:03,640 Нека да вървим напред и да направим ФОРМАТ, процента е, наклонена черта п, 1 делено на 10. 1501 01:14:03,640 --> 01:14:07,430 С други думи, нека да се потопите още по-дълбоко 1/10, като 1 и делено на 10. 1502 01:14:07,430 --> 01:14:09,760 Разбира се, един компютър може да представлява 1/10. 1503 01:14:09,760 --> 01:14:13,620 >> Така че нека да вървим напред и да направи неточност. 1504 01:14:13,620 --> 01:14:14,390 Да видим. 1505 01:14:14,390 --> 01:14:16,210 Формат уточнява въведете двойно. 1506 01:14:16,210 --> 01:14:18,160 Но аргументът, има тип Int. 1507 01:14:18,160 --> 01:14:19,040 Какво става? 1508 01:14:19,040 --> 01:14:21,970 >> О, интересно, така че това е поука от преди. 1509 01:14:21,970 --> 01:14:26,050 Аз казвам, хей, компютър шоу ми с плаваща запетая с процента е. 1510 01:14:26,050 --> 01:14:28,200 Но аз съм го даде 2 цели числа. 1511 01:14:28,200 --> 01:14:31,120 Така се оказва, че може да се определи това в няколко начина. 1512 01:14:31,120 --> 01:14:38,430 >> Мога просто да се превърне един в 1.0, и 10 в 10.0, което би, наистина, 1513 01:14:38,430 --> 01:14:42,390 има ефект на превръщане ги в floats-- все още се надяваме, 1514 01:14:42,390 --> 01:14:43,180 същия номер. 1515 01:14:43,180 --> 01:14:45,880 Или се оказва, че има нещо ще видим отново след дълго. 1516 01:14:45,880 --> 01:14:47,170 Може да се хвърли на номерата. 1517 01:14:47,170 --> 01:14:49,880 >> Можете да използвате това в скоби, израз, може да се каже, 1518 01:14:49,880 --> 01:14:52,560 хей, компютър, да вземе това 10, което знам, е едно цяло число. 1519 01:14:52,560 --> 01:14:54,660 Но това лечение, моля, като че ли това е поплавък. 1520 01:14:54,660 --> 01:14:56,680 Но това се чувства ненужно сложни. 1521 01:14:56,680 --> 01:14:59,040 >> За нашите цели днес, нека просто буквално 1522 01:14:59,040 --> 01:15:02,700 точкови стойности да ги направи плаващ с десетична запетая, като този. 1523 01:15:02,700 --> 01:15:07,060 Нека да вървим напред и разясняване, направи неточност, добър, точка наклонена черта 1524 01:15:07,060 --> 01:15:08,870 неточност, влиза. 1525 01:15:08,870 --> 01:15:10,990 ОК, ние не търсим добър. 1526 01:15:10,990 --> 01:15:18,194 >> 1 делено на 10, според моето Mac тук, е, наистина, 0,100000. 1527 01:15:18,194 --> 01:15:21,360 Сега, аз се преподава в началното училище има трябва да бъде безкраен брой 0 на. 1528 01:15:21,360 --> 01:15:23,151 Така че нека поне да опита за да видите някои от тези. 1529 01:15:23,151 --> 01:15:26,770 Оказва се, че ФОРМАТ е малко любител все още, отколкото ние сме били използване. 1530 01:15:26,770 --> 01:15:30,890 Оказва се, че не е нужно да се уточни Просто процента е, или просто процента аз. 1531 01:15:30,890 --> 01:15:33,830 Всъщност можете да укажете някои опции за контрол тук. 1532 01:15:33,830 --> 01:15:36,470 >> По-конкретно, аз ще съм да се каже, хей, ФОРМАТ, 1533 01:15:36,470 --> 01:15:39,660 всъщност ми покаже 10 знака след десетичната запетая. 1534 01:15:39,660 --> 01:15:40,820 Така че изглежда малко странно. 1535 01:15:40,820 --> 01:15:42,845 Но вие казвате процента, DOT, колко много номера 1536 01:15:42,845 --> 01:15:44,970 искате да видите, след като на десетична запетая, а след това е 1537 01:15:44,970 --> 01:15:48,340 за плосък, просто защото това е това, което се казва в документацията. 1538 01:15:48,340 --> 01:15:50,080 Нека да вървим напред и да спаси това. 1539 01:15:50,080 --> 01:15:52,460 >> И забележите също, аз съм се уморени от преписва неща. 1540 01:15:52,460 --> 01:15:55,900 Така че аз съм просто определяне на състава и стрелка надолу на ключовете си тук. 1541 01:15:55,900 --> 01:15:58,710 И ако аз да потегля нагоре, вие може да видите всички команди 1542 01:15:58,710 --> 01:16:01,090 че съм направил, или неправилно направени. 1543 01:16:01,090 --> 01:16:04,630 >> И аз ще отида напред сега и всъщност не използва това, очевидно. 1544 01:16:04,630 --> 01:16:11,416 Направи неточност, точка наклонена черта imprecision-- така 1545 01:16:11,416 --> 01:16:13,290 това, което се преподава в началното училище проверява навън. 1546 01:16:13,290 --> 01:16:19,010 Дори и да го отпечатате до 10 десетични тя поставя, наистина, е 0,10000. 1547 01:16:19,010 --> 01:16:19,840 Но знаете ли какво? 1548 01:16:19,840 --> 01:16:21,150 >> Нека да се получи малко алчни. 1549 01:16:21,150 --> 01:16:23,990 Да кажем, като, покажи ми 55 точки след десетичната. 1550 01:16:23,990 --> 01:16:26,160 Нека наистина да вземе това програмира се за въртене. 1551 01:16:26,160 --> 01:16:31,170 Нека да го правя отново с грим неточност, точка наклонена черта, неточност. 1552 01:16:31,170 --> 01:16:32,390 >> И тук отиваме. 1553 01:16:32,390 --> 01:16:34,420 Вашето детство беше лъжа. 1554 01:16:34,420 --> 01:16:48,410 Очевидно, 1, разделен на 10 е наистина 0.100000000000000005551115123-- 1555 01:16:48,410 --> 01:16:49,740 >> Какво става? 1556 01:16:49,740 --> 01:16:53,360 Е, оказва се, ако ви вид изглежда достатъчно далеч в базисния 1557 01:16:53,360 --> 01:16:55,950 представителство на тази брой, то всъщност 1558 01:16:55,950 --> 01:17:00,400 не е точно 1/10, или 0.1 и безкраен брой нули. 1559 01:17:00,400 --> 01:17:01,630 Сега, защо е това? 1560 01:17:01,630 --> 01:17:06,250 >> Е, въпреки че това е проста брой на нас, хората, 1 делено на 10, 1561 01:17:06,250 --> 01:17:10,910 тя все още е една от безкрайно много числа, които бихме могли да измислят. 1562 01:17:10,910 --> 01:17:14,490 Но един компютър може само да представлява краен брой, така номера. 1563 01:17:14,490 --> 01:17:18,710 И така, ефективно, това, което компютър се показва ни е нейната най-близо 1564 01:17:18,710 --> 01:17:22,940 приближение до броя ние искаме да вярваме, че е 1/10, 1565 01:17:22,940 --> 01:17:27,760 или наистина 0,10000 до безкрайност. 1566 01:17:27,760 --> 01:17:30,425 >> По-скоро, обаче, това е толкова близо, колкото той може да получи. 1567 01:17:30,425 --> 01:17:32,300 И наистина, ако се вгледате под капака, 1568 01:17:32,300 --> 01:17:37,050 тъй като ние сме тук като погледнете 55 цифри след десетичната, 1569 01:17:37,050 --> 01:17:39,990 ние всъщност виждаме, че реалността. 1570 01:17:39,990 --> 01:17:42,610 Сега като настрана, ако сте виждал на movie-- 1571 01:17:42,610 --> 01:17:45,780 повечето от вас вероятно haven't-- но преди Супермен 3 от няколко години, 1572 01:17:45,780 --> 01:17:49,500 Ричард Прайър същество отнесена тази реалността в компанията му да открадне много 1573 01:17:49,500 --> 01:17:53,500 на фракции и части от стотинката, защото company-- доколкото си спомням, 1574 01:17:53,500 --> 01:17:57,210 това е било while-- е по същество изхвърлите всичко, което не се вписва 1575 01:17:57,210 --> 01:17:58,790 в понятието цента. 1576 01:17:58,790 --> 01:18:01,480 >> Но ако добавите всички тези малки, малки, малки номера отново 1577 01:18:01,480 --> 01:18:04,960 и отново, и отново, можете, като в неговия случай, направи добра сума пари. 1578 01:18:04,960 --> 01:18:08,010 >> Същата идея беше излъган от по-нова, но все пак сега по-стари 1579 01:18:08,010 --> 01:18:10,500 филм, наречен Office Space, където момчетата в този филм, 1580 01:18:10,500 --> 01:18:13,501 направи същото нещо, го прецаках напълно, завърши с твърде много 1581 01:18:13,501 --> 01:18:14,666 пари в тяхната банкова сметка. 1582 01:18:14,666 --> 01:18:15,800 Всичко беше много подозрителен. 1583 01:18:15,800 --> 01:18:19,290 Но в края на деня, неточност е навсякъде около нас. 1584 01:18:19,290 --> 01:18:22,240 >> И това също може да бъде плашещо случая. 1585 01:18:22,240 --> 01:18:25,590 Оказва се, че Супермен 3 и офис площи под угар, там 1586 01:18:25,590 --> 01:18:28,460 могат да бъдат някои много реален световни последици 1587 01:18:28,460 --> 01:18:32,290 на реалностите на неточни представяне на данни 1588 01:18:32,290 --> 01:18:34,770 че дори и ние, хората, към този ден не е задължително 1589 01:18:34,770 --> 01:18:38,230 разбере, както и ние трябва, или си спомня толкова често, колкото би трябвало. 1590 01:18:38,230 --> 01:18:42,950 И наистина, на следващия клип е от разгледаме някои много реален свят 1591 01:18:42,950 --> 01:18:47,730 Последиците от това, което се случва, ако не ценят неточността, че 1592 01:18:47,730 --> 01:18:50,065 може да се случи в числа представителство. 1593 01:18:50,065 --> 01:18:51,300 >> [Възпроизвеждане на видео] 1594 01:18:51,300 --> 01:18:55,620 >> -Computers, Ние всички сме дойде да приеме най-често разочароващ проблемите, които 1595 01:18:55,620 --> 01:19:00,310 отида с them-- бъгове, вируси, и софтуерни проблеми, 1596 01:19:00,310 --> 01:19:03,130 за малки цени да плащат За удобство. 1597 01:19:03,130 --> 01:19:07,800 Но в високите технологии и висока скорост военни и космическата програма приложения, 1598 01:19:07,800 --> 01:19:12,800 най-малкият проблем може се възвеличи в бедствие. 1599 01:19:12,800 --> 01:19:18,900 >> На 4 юни, 1996 г., изготвени учени да започне безпилотен Ariane 5 ракета. 1600 01:19:18,900 --> 01:19:21,220 Тя носеше научна спътници, предназначени 1601 01:19:21,220 --> 01:19:24,600 за да се установи как точно магнитното поле взаимодейства Земята 1602 01:19:24,600 --> 01:19:27,410 със слънчеви ветрове. 1603 01:19:27,410 --> 01:19:30,800 Ракетата е построен за Европейската космическа агенция, 1604 01:19:30,800 --> 01:19:34,370 и излетя от неговото съоръжение на брега на Френска Гвиана. 1605 01:19:34,370 --> 01:19:37,540 >> -При Около 37 секунди след началото полета, те за първи път 1606 01:19:37,540 --> 01:19:39,270 Забелязах, че нещо не е наред. 1607 01:19:39,270 --> 01:19:42,250 Дюзите са въртящи се в начин те наистина не трябва. 1608 01:19:42,250 --> 01:19:46,580 Около 40 секунди след началото на полета, Ясно е, че превозното средство е в беда. 1609 01:19:46,580 --> 01:19:48,850 >> И това е, когато те направиха решение, за да го унищожи. 1610 01:19:48,850 --> 01:19:52,780 Служителят по безопасността гама, с огромни вътрешности, натисна бутона, 1611 01:19:52,780 --> 01:19:58,150 взриви ракетата, преди да може да се превърне в опасност за обществената безопасност. 1612 01:19:58,150 --> 01:20:01,060 >> -Това Беше девойката плаване на Ариана 5. 1613 01:20:01,060 --> 01:20:03,960 И неговото унищожение пое поставете заради дефект 1614 01:20:03,960 --> 01:20:05,822 вградена в софтуера на ракетата. 1615 01:20:05,822 --> 01:20:08,280 -В Проблем на Ариана беше че има номер, 1616 01:20:08,280 --> 01:20:10,600 изисква 64 бита да изразят. 1617 01:20:10,600 --> 01:20:13,590 И те искаха да конвертирате то на номер 16-битов. 1618 01:20:13,590 --> 01:20:15,610 Те Предполага се, че номер никога не се случва 1619 01:20:15,610 --> 01:20:20,980 да бъде много голяма, че повечето от тези, цифри в номера на 64-битов са нули. 1620 01:20:20,980 --> 01:20:22,440 Те са били погрешни. 1621 01:20:22,440 --> 01:20:25,060 >> -В Неспособността на една софтуерна програма, за да приемете 1622 01:20:25,060 --> 01:20:29,510 вида на номер, генериран от друг е в основата на провала. 1623 01:20:29,510 --> 01:20:34,350 Разработка на софтуер се е превърнала в много скъпо част от новата технология. 1624 01:20:34,350 --> 01:20:38,140 The Ариана ракетата са били много успешно, така че голяма част от софтуера 1625 01:20:38,140 --> 01:20:41,550 създаден за това е също използвана в Ариана 5. 1626 01:20:41,550 --> 01:20:47,940 >> -В Основен проблем е, че Ариана 5 е по-бързо, по-бързо се ускори. 1627 01:20:47,940 --> 01:20:51,450 И софтуерът не е имал отчита, че. 1628 01:20:51,450 --> 01:20:55,060 >> -В Унищожаване на ракетата Беше огромна финансова катастрофа, 1629 01:20:55,060 --> 01:20:58,790 всичко се дължи на грешка на минута софтуер. 1630 01:20:58,790 --> 01:21:01,210 Но това не е първият, проблеми за преобразуване на данни време 1631 01:21:01,210 --> 01:21:04,820 бе измъчван модерна ракета технология. 1632 01:21:04,820 --> 01:21:08,050 >> -В 1991 г., с началото на първата война в Залива, 1633 01:21:08,050 --> 01:21:10,570 на Patriot ракети преживя подобен вид 1634 01:21:10,570 --> 01:21:12,800 на проблем номер преобразуване. 1635 01:21:12,800 --> 01:21:16,090 И като резултат, 28 души, 28 американски войници, 1636 01:21:16,090 --> 01:21:19,080 са били убити, а около 100 ранени, 1637 01:21:19,080 --> 01:21:22,780 когато Patriot, които е трябвало за защита срещу входящи ракети Скъд, 1638 01:21:22,780 --> 01:21:25,830 не успя да изстреля ракета. 1639 01:21:25,830 --> 01:21:31,670 >> -Когато Ирак нападна Кувейт, и Америка стартира Пустинна буря в началото на 1991 г., 1640 01:21:31,670 --> 01:21:35,780 Patriot ракетни батареи бяха разгърнати да защити Саудитска Арабия и Израел 1641 01:21:35,780 --> 01:21:39,230 от иракските нападения с ракети Скъд. 1642 01:21:39,230 --> 01:21:43,810 Патриотът е среден обсег на САЩ повърхност на въздуха система, произведен 1643 01:21:43,810 --> 01:21:45,770 от компанията Raytheon. 1644 01:21:45,770 --> 01:21:52,340 >> -В Размер на прехващача Patriot себе си е дълъг около приблизително 20 фута. 1645 01:21:52,340 --> 01:21:55,230 И тя тежи около 2000 кг. 1646 01:21:55,230 --> 01:21:59,320 И носи бойна глава на около, Мисля, че това е грубо 150 паунда. 1647 01:21:59,320 --> 01:22:03,930 И самата бойна част е високо експлозивни, които 1648 01:22:03,930 --> 01:22:07,330 има фрагменти около него. 1649 01:22:07,330 --> 01:22:11,680 Корпусът на бойна част е проектирана да действа като едри сачми. 1650 01:22:11,680 --> 01:22:14,110 >> -В Ракети са проведени четири на контейнер, 1651 01:22:14,110 --> 01:22:17,130 и се транспортират с полуремарке. 1652 01:22:17,130 --> 01:22:24,930 >> -В Система Patriot противоракетна датира предприятието най-малко 20 години. 1653 01:22:24,930 --> 01:22:28,420 Той първоначално е бил проектиран като за противоракетна отбрана на въздуха 1654 01:22:28,420 --> 01:22:30,720 да свалят вражески самолети. 1655 01:22:30,720 --> 01:22:34,500 В първата война в Залива, когато тази война се появи, 1656 01:22:34,500 --> 01:22:39,745 Армията иска да го използва, за да свалят ракети Скъд, а не самолети. 1657 01:22:39,745 --> 01:22:43,620 >> Иракското ВВС беше не толкова голям проблем. 1658 01:22:43,620 --> 01:22:46,670 Но армията се тревожеше за Скъд. 1659 01:22:46,670 --> 01:22:50,170 И така, те се опитаха да ъпгрейд патриотът. 1660 01:22:50,170 --> 01:22:52,800 >> -Intercepting Враг ракета пътуване в Mach 5 1661 01:22:52,800 --> 01:22:55,830 щеше да бъде достатъчно голямо предизвикателство. 1662 01:22:55,830 --> 01:22:58,490 Но когато Patriot е изпратена в експлоатация, 1663 01:22:58,490 --> 01:23:02,860 Армията не е бил наясно с едно Иракският модификация, която прави 1664 01:23:02,860 --> 01:23:05,930 техните Скъд почти невъзможно да се удари. 1665 01:23:05,930 --> 01:23:10,740 >> -Какво Се е случило е най Скъд че идват в са нестабилни. 1666 01:23:10,740 --> 01:23:11,692 Те бяха клатушка. 1667 01:23:11,692 --> 01:23:14,910 Причината за това е, иракчаните, с цел 1668 01:23:14,910 --> 01:23:18,280 за да получите 600 км от една 300 км 1669 01:23:18,280 --> 01:23:21,700 обсег, взе тегло от предната бойна глава. 1670 01:23:21,700 --> 01:23:23,390 Те направиха бойна запалка. 1671 01:23:23,390 --> 01:23:27,330 >> Така че сега на Patriot е опитвайки се да влезе в Скъд. 1672 01:23:27,330 --> 01:23:30,230 И през повечето време, на Преобладаващото мнозинство от времето, 1673 01:23:30,230 --> 01:23:32,940 той просто ще лети от Скъд. 1674 01:23:32,940 --> 01:23:37,260 След като системните оператори Пейтриът осъзнал Патриотът пропусна целта си, 1675 01:23:37,260 --> 01:23:41,690 те взриви бойна глава на Патриотичния за да се избегнат евентуални жертви, ако тя 1676 01:23:41,690 --> 01:23:44,570 се оставя да падне на земята. 1677 01:23:44,570 --> 01:23:48,790 >> -Това Е това, което видяха, че повечето хора, тези големи огнени топки в небето, 1678 01:23:48,790 --> 01:23:54,550 и неразбрани като прихваща от Скъд бойни глави. 1679 01:23:54,550 --> 01:23:56,630 >> -Although През нощта небе, Patriots появили 1680 01:23:56,630 --> 01:24:00,370 да бъде успешно унищожаване на ракети Скъд, в Dhahran, 1681 01:24:00,370 --> 01:24:03,360 не може да има грешка за неговото изпълнение. 1682 01:24:03,360 --> 01:24:07,970 Там, радарна система на Патриотичния изгубили следите на входящо Скъд, 1683 01:24:07,970 --> 01:24:10,721 и никога не стартира поради до софтуерен недостатък. 1684 01:24:10,721 --> 01:24:14,090 1685 01:24:14,090 --> 01:24:18,940 Беше израелците, които първи открили че вече системата е било включено, 1686 01:24:18,940 --> 01:24:22,690 по-голямата несъответствието време става поради часовник вграден 1687 01:24:22,690 --> 01:24:24,810 в компютъра на системата. 1688 01:24:24,810 --> 01:24:28,210 >> -За Две седмици преди трагедията в Dhahran, 1689 01:24:28,210 --> 01:24:30,770 израелците докладвани Министерството на отбраната 1690 01:24:30,770 --> 01:24:32,590 че системата се губи време. 1691 01:24:32,590 --> 01:24:35,360 След около осем часа или тичане, те забелязали, че системата 1692 01:24:35,360 --> 01:24:37,720 се превръща в значително по-малко точни. 1693 01:24:37,720 --> 01:24:41,900 Министерството на отбраната отговори, като казва всичко на батериите Пейтриът 1694 01:24:41,900 --> 01:24:44,950 да не оставят системите за дълго време. 1695 01:24:44,950 --> 01:24:49,160 Те никога не каза какво дълго време was-- осем часа, 10 часа, 1000 часа. 1696 01:24:49,160 --> 01:24:51,360 Никой не знаеше. 1697 01:24:51,360 --> 01:24:53,380 >> -В Батерия Patriot разположени в казармите 1698 01:24:53,380 --> 01:24:58,350 в Dhahran и неговата погрешна вътрешна часовник е бил на над 100 часа 1699 01:24:58,350 --> 01:25:01,670 в нощта на 25-ти февруари. 1700 01:25:01,670 --> 01:25:05,917 >> -Това Проследява времето с точност на около една десета от секундата. 1701 01:25:05,917 --> 01:25:08,000 Сега, една десета от секундата е интересен номер, 1702 01:25:08,000 --> 01:25:11,920 тъй като не може да се изрази в двоичен точно, което 1703 01:25:11,920 --> 01:25:16,820 означава, че не може да се изрази точно във всеки модерен цифров компютър. 1704 01:25:16,820 --> 01:25:18,540 Трудно е да се повярва. 1705 01:25:18,540 --> 01:25:21,210 >> Но да използваме това като пример. 1706 01:25:21,210 --> 01:25:23,540 Нека вземем номер едно трето място. 1707 01:25:23,540 --> 01:25:27,350 Една трета не може да бъде изразена в десетични точно. 1708 01:25:27,350 --> 01:25:32,080 Една трета е 0.333 става за безкрайност. 1709 01:25:32,080 --> 01:25:36,480 >> Няма начин да се направи това с абсолютна точност в десетична. 1710 01:25:36,480 --> 01:25:39,560 Това е точно вида на проблем което се е случило в Patriot. 1711 01:25:39,560 --> 01:25:44,100 Колкото по-дълго системата изтича г. по-лошо стана грешката време. 1712 01:25:44,100 --> 01:25:48,890 >> -След 100 часа работа, на грешка във времето е само около една трета 1713 01:25:48,890 --> 01:25:50,600 от секундата. 1714 01:25:50,600 --> 01:25:54,210 Но от гледна точка на насочване на ракета пътуване в Mach 5, 1715 01:25:54,210 --> 01:25:58,710 тя се превърна в проследяването грешка на повече от 600 метра. 1716 01:25:58,710 --> 01:26:02,120 Това би било фатална грешка за войниците на това, което 1717 01:26:02,120 --> 01:26:08,940 случило се на старта Скъд е открити от началото на сателити Предупредителни 1718 01:26:08,940 --> 01:26:12,860 и те са знаели, че Скъд е идва като цяло тяхната посока. 1719 01:26:12,860 --> 01:26:15,320 Те не знаеха къде идва. 1720 01:26:15,320 --> 01:26:18,250 >> -Това Е сега до радара компонент на системата Patriot 1721 01:26:18,250 --> 01:26:23,190 защитавайки Dhahran да се локализира и да запази следите на входящо вражески ракети. 1722 01:26:23,190 --> 01:26:24,609 >> -В Радар беше много умен. 1723 01:26:24,609 --> 01:26:26,650 Това всъщност ще проследят позицията на Скъд, 1724 01:26:26,650 --> 01:26:30,350 и след това се предскаже, където вероятно ще бъде следващия път радара изпратен 1725 01:26:30,350 --> 01:26:31,420 пулс навън. 1726 01:26:31,420 --> 01:26:33,110 Това се нарича гама порта. 1727 01:26:33,110 --> 01:26:37,660 >> -Then, След като Patriot решава достатъчно време има 1728 01:26:37,660 --> 01:26:42,450 преминал да се върна и да се провери на следващия място за това открива обект, 1729 01:26:42,450 --> 01:26:43,600 той се връща. 1730 01:26:43,600 --> 01:26:48,650 Така че, когато той се върна в грешното място, то тогава не вижда обект. 1731 01:26:48,650 --> 01:26:52,160 И тя реши, че не е имало обект, той е фалшив откриване, 1732 01:26:52,160 --> 01:26:53,930 и пада на пистата. 1733 01:26:53,930 --> 01:26:57,030 >> -В Входящо Скъд изчезна от екрана на радара. 1734 01:26:57,030 --> 01:27:00,260 И секунди по-късно, тя заби в казармата. 1735 01:27:00,260 --> 01:27:06,150 The Скъд убит 28, и е последният един изстрел по време на първата война в Залива. 1736 01:27:06,150 --> 01:27:11,960 >> Трагично е, че се обновява софтуера пристигнал в Dhahran на следващия ден. 1737 01:27:11,960 --> 01:27:14,930 недостатък на софтуера имаше бил фиксиран, затваряне 1738 01:27:14,930 --> 01:27:19,806 една глава в разтревожените История на ракетата Patriot. 1739 01:27:19,806 --> 01:27:20,729 >> [Възпроизвеждане на видео] 1740 01:27:20,729 --> 01:27:23,520 Дейвид Дж Малан: Така че това е всичко, за да се каже, че тези въпроси от преливане 1741 01:27:23,520 --> 01:27:25,860 и неточности са твърде реална. 1742 01:27:25,860 --> 01:27:26,920 И така, как стигнахме до тук? 1743 01:27:26,920 --> 01:27:28,895 Започнахме с просто говоря за ФОРМАТ. 1744 01:27:28,895 --> 01:27:31,270 Отново, тази функция отпечатва нещо на екрана, 1745 01:27:31,270 --> 01:27:33,450 и след това въведени няколко други функции 1746 01:27:33,450 --> 01:27:34,945 от т.нар библиотеката CS50 на. 1747 01:27:34,945 --> 01:27:36,910 И ние ще продължим да виж това своевременно. 1748 01:27:36,910 --> 01:27:40,760 И ние, особено, използвани GET низ, и да получите INT, и сега също се поплавък, 1749 01:27:40,760 --> 01:27:44,410 и още други все още ще се сблъскваме и се използва преди дълго. 1750 01:27:44,410 --> 01:27:47,220 >> Но от време на време, да има ние вече видяхме нужда 1751 01:27:47,220 --> 01:27:50,520 да съхранява това, което ръката тези функции обратно? 1752 01:27:50,520 --> 01:27:52,920 Те ни върне низ страна, или едно цяло число, или с плаваща запетая. 1753 01:27:52,920 --> 01:27:56,070 А понякога ние трябва да се сложи, че низ, или инт, или поплавък, някъде. 1754 01:27:56,070 --> 01:28:00,100 >> И за съхранение на тези неща, спомням точно като в самото начало, ние имаме променливи. 1755 01:28:00,100 --> 01:28:03,260 Но за разлика от нулата, в C имаме реални типове 1756 01:28:03,260 --> 01:28:05,530 на variables-- данни видове, повече generally-- 1757 01:28:05,530 --> 01:28:08,640 сред тях, низ, едно цяло число, а плувка, и тези други все още. 1758 01:28:08,640 --> 01:28:12,321 >> И така, когато ние декларираме променливи в C, ние ще трябва да декларират нашите типове данни. 1759 01:28:12,321 --> 01:28:14,820 Това не е нещо, което ще трябва да се направи по-късно през семестъра 1760 01:28:14,820 --> 01:28:16,810 както ние преход към други езици. 1761 01:28:16,810 --> 01:28:19,610 Но за сега, ние трябва да априори предварително, 1762 01:28:19,610 --> 01:28:24,370 обясни на компютъра какъв тип на променлива искаме тя да ни даде. 1763 01:28:24,370 --> 01:28:27,290 >> Сега, междувременно, за да отпечатате тези видове типове данни, 1764 01:28:27,290 --> 01:28:29,570 ние трябва да се каже, ФОРМАТ какво да очакваме. 1765 01:28:29,570 --> 01:28:32,450 И видяхме процента и за струни, и процента и за цели числа, 1766 01:28:32,450 --> 01:28:33,790 и няколко вече други. 1767 01:28:33,790 --> 01:28:37,237 И тези, които са просто изисквания за визуалното представяне 1768 01:28:37,237 --> 01:28:38,070 на тази информация. 1769 01:28:38,070 --> 01:28:42,080 >> И всеки от тях всъщност може да бъде parametrized или променени по някакъв начин, 1770 01:28:42,080 --> 01:28:45,370 ако искате да се увеличи контрола вида на продукцията, която ще получите. 1771 01:28:45,370 --> 01:28:49,604 И, всъщност, се оказва, че не само има наклонена черта п за нов ред. 1772 01:28:49,604 --> 01:28:52,520 Има и още нещо, наречено обратно наклонена черта R за нов ред, който 1773 01:28:52,520 --> 01:28:54,360 е по-близко до старото училище пишеща машина, 1774 01:28:54,360 --> 01:28:57,690 и Windows използва за много години. 1775 01:28:57,690 --> 01:28:59,690 >> Има наклонена черта тон за разделите. 1776 01:28:59,690 --> 01:29:03,170 Оказва се, че ако искате да двойни кавички вътре на низ, 1777 01:29:03,170 --> 01:29:05,000 припомни, че сме използвали двойни кавички двойно 1778 01:29:05,000 --> 01:29:07,900 цитат от ляво и дясно завършва на нашите струни до този момент. 1779 01:29:07,900 --> 01:29:09,420 Това би било да обърка нещата. 1780 01:29:09,420 --> 01:29:12,503 >> Ако искате да се сложи двойни кавички в средата на string-- и, наистина, 1781 01:29:12,503 --> 01:29:13,670 това е объркващо да се види. 1782 01:29:13,670 --> 01:29:17,120 И така, вие трябва да избяга, така че да говори, двойно цитат с нещо 1783 01:29:17,120 --> 01:29:18,860 като, буквално, обратно наклонена черта двойни кавички. 1784 01:29:18,860 --> 01:29:20,230 А има и няколко други все още. 1785 01:29:20,230 --> 01:29:24,540 И ние ще видим повече от тези, в реална употреба преди дълго. 1786 01:29:24,540 --> 01:29:27,930 >> Така че нека сега преход от данни, и представителство, 1787 01:29:27,930 --> 01:29:30,820 и аритметични оператори, всички на който ни даде някаква сграда 1788 01:29:30,820 --> 01:29:32,070 блокове, с които да играят. 1789 01:29:32,070 --> 01:29:34,481 Но сега нека действително да даде ни останалата част от речника 1790 01:29:34,481 --> 01:29:36,230 че ние вече са имали миналата седмица с Scratch 1791 01:29:36,230 --> 01:29:39,350 , като разгледаме някои други конструкции в C-- не всички от тях. 1792 01:29:39,350 --> 01:29:41,680 Но идеите, които сме за да видите наистина просто 1793 01:29:41,680 --> 01:29:45,610 да се наблегне на превода от един език, Scratch, към друга, C. 1794 01:29:45,610 --> 01:29:48,470 >> И с течение на времето, ние ще вземем повече инструменти за нашия инструментариум, 1795 01:29:48,470 --> 01:29:49,820 така да се каже, синтактично. 1796 01:29:49,820 --> 01:29:54,190 И наистина, ще видите, че идеите Сега са по-скоро запознати от миналата седмица. 1797 01:29:54,190 --> 01:29:55,200 Така че нека да направим това. 1798 01:29:55,200 --> 01:29:58,870 >> Да вървим напред и да привличам програма че действително използва някои изрази, 1799 01:29:58,870 --> 01:30:00,720 булева изразяване. 1800 01:30:00,720 --> 01:30:02,810 Нека вървим напред тук и да се създаде нов файл. 1801 01:30:02,810 --> 01:30:06,090 Ще се обадя на този condition.c. 1802 01:30:06,090 --> 01:30:09,350 >> Нека да вървим напред и да включва CS50 библиотеката. 1803 01:30:09,350 --> 01:30:12,640 И нека да вървим напред и да включва стандарт IO.h за нашите функции, 1804 01:30:12,640 --> 01:30:14,690 и ФОРМАТ и повече съответно. 1805 01:30:14,690 --> 01:30:18,900 Позволете ми да се даде, че шаблон на INT главната нищожен, чието обяснение ние ще 1806 01:30:18,900 --> 01:30:20,360 да се върне в бъдещето. 1807 01:30:20,360 --> 01:30:23,820 >> Сега нека да вървим напред и да даде себе си едно цяло число чрез GET вътр. 1808 01:30:23,820 --> 01:30:25,970 Тогава нека вървим напред и да направим това. 1809 01:30:25,970 --> 01:30:30,150 Искам да кажа, ако аз е less-- нека разлика между положителни, отрицателни, 1810 01:30:30,150 --> 01:30:31,260 или нулеви стойности. 1811 01:30:31,260 --> 01:30:36,630 >> Така че, ако аз е по-малко от нула, нека Просто трябва тази програма просто да кажем, 1812 01:30:36,630 --> 01:30:42,370 отрицателна, наклонена черта п, друго ако аз е по-голяма от нула. 1813 01:30:42,370 --> 01:30:47,030 Сега, разбира се, ще кажа ФОРМАТ положителен, наклонена черта п. 1814 01:30:47,030 --> 01:30:50,690 И след това друг if-- мога да направя това. 1815 01:30:50,690 --> 01:30:53,410 >> Мога да направя, ако е равна на 0. 1816 01:30:53,410 --> 01:30:55,840 Но бих се прави най- поне един вече грешка. 1817 01:30:55,840 --> 01:30:59,480 Припомнете си, че знакът за равно е не е равна, като ние, хората го знаят. 1818 01:30:59,480 --> 01:31:01,010 >> Но това е оператор за присвояване. 1819 01:31:01,010 --> 01:31:05,640 И ние не искаме да се вземат 0 На полето и го сложи в I в ляво. 1820 01:31:05,640 --> 01:31:11,810 Така че, за да се избегне това объркване, или може би неправилно използване на знака за равенство, 1821 01:31:11,810 --> 01:31:14,740 хората решиха преди няколко години че в много програмни езици 1822 01:31:14,740 --> 01:31:18,000 когато искате да проверите за равенство между ляво и дясно, 1823 01:31:18,000 --> 01:31:19,635 всъщност използват се равнява на равни. 1824 01:31:19,635 --> 01:31:21,010 Така че ви удари знака за равенство два пъти. 1825 01:31:21,010 --> 01:31:25,600 Когато искате да зададете от полето наляво, вие използвате само един знак за равенство. 1826 01:31:25,600 --> 01:31:29,360 Така че бихме могли да направим this-- останало ако аз се равнява се равнява на нула. 1827 01:31:29,360 --> 01:31:31,710 >> След това мога да отида и отвори ми фигурни скоби, 1828 01:31:31,710 --> 01:31:36,087 и да кажа, ФОРМАТ 0, наклонена черта п, направено. 1829 01:31:36,087 --> 01:31:38,170 Но не забравяйте, как те вилици в пътя могат да работят. 1830 01:31:38,170 --> 01:31:39,836 И, наистина, просто мисля за логиката. 1831 01:31:39,836 --> 01:31:41,510 I е число. 1832 01:31:41,510 --> 01:31:43,320 Това е цяло число, по-специално. 1833 01:31:43,320 --> 01:31:48,600 А това означава, че ще бъде по-малко от 0, или по-голяма от 0, или 0. 1834 01:31:48,600 --> 01:31:51,600 Така че има вид на този мълчалив случай подразбиране. 1835 01:31:51,600 --> 01:31:54,920 >> И така можем да, точно като Scratch, да освободи от друго, ако, 1836 01:31:54,920 --> 01:31:55,747 и само да кажа друго. 1837 01:31:55,747 --> 01:31:57,830 Логично е, ако на програмист знае само там 1838 01:31:57,830 --> 01:32:01,635 три кофи в които сценарий може fall-- първият, 1839 01:32:01,635 --> 01:32:03,510 втората, или третата в този case-- не правя 1840 01:32:03,510 --> 01:32:07,100 притеснява добавяне на допълнителна прецизност и допълнително логика там. 1841 01:32:07,100 --> 01:32:09,690 Просто върви напред с подразбиране случай тук на друго. 1842 01:32:09,690 --> 01:32:11,950 >> Сега, нека да вървим напред след като запазите тази, направи 1843 01:32:11,950 --> 01:32:15,760 условия са разпръснати наклонена черта conditions-- не голям потребителски интерфейс, 1844 01:32:15,760 --> 01:32:18,914 защото аз не съм накара потребителя, както споменах по-рано. 1845 01:32:18,914 --> 01:32:19,580 Но това е добре. 1846 01:32:19,580 --> 01:32:20,454 Ние ще го прости. 1847 01:32:20,454 --> 01:32:21,890 Нека се опитаме броя 42. 1848 01:32:21,890 --> 01:32:23,240 И това е положителен. 1849 01:32:23,240 --> 01:32:26,120 Нека се опитаме броя отрицателна 42, отрицателна. 1850 01:32:26,120 --> 01:32:28,244 >> Нека се опитаме стойност 0. 1851 01:32:28,244 --> 01:32:29,160 И наистина, тя работи. 1852 01:32:29,160 --> 01:32:33,900 Сега, ще видите с проблеми преди дълги, тестване неща три пъти, 1853 01:32:33,900 --> 01:32:34,980 вероятно не е достатъчно. 1854 01:32:34,980 --> 01:32:37,438 Може би искате да тествате някои по-големи числа, някои по-малки 1855 01:32:37,438 --> 01:32:40,520 числа, някои случаи ъгъл, като ние ще дойдем да ги опише. 1856 01:32:40,520 --> 01:32:42,500 >> Но за сега, това е доста проста програма. 1857 01:32:42,500 --> 01:32:45,160 И аз съм сигурен, логично, че попада в три случая. 1858 01:32:45,160 --> 01:32:49,360 И наистина, въпреки че ние просто фокусирани върху потенциалните негативи 1859 01:32:49,360 --> 01:32:53,480 на неточности и преливник, в реалност, където много от проблемите CS50 е, 1860 01:32:53,480 --> 01:32:56,000 ние няма да се притеснявате за цялото време, 1861 01:32:56,000 --> 01:32:59,050 тези въпроси от преливане и неточност, тъй като в действителност, С, 1862 01:32:59,050 --> 01:33:01,889 тя всъщност не е всичко, което лесно да се избегнат тези неща. 1863 01:33:01,889 --> 01:33:04,180 Ако искате да брои до по-големи, и по-големи, и по-голяма, 1864 01:33:04,180 --> 01:33:07,510 Оказва се, че има техники, които можете да използвате, често е свързана с неща, наречени 1865 01:33:07,510 --> 01:33:11,240 библиотеки, сборници с код, това други хора пишат, че можете да използвате, 1866 01:33:11,240 --> 01:33:13,910 и други езици като Java и други, всъщност 1867 01:33:13,910 --> 01:33:15,800 да го направи много по-лесно да брои дори по-висока. 1868 01:33:15,800 --> 01:33:19,810 Така че това наистина е някои от тези опасности функция на езика, който използвате. 1869 01:33:19,810 --> 01:33:22,710 И през следващите седмици, ние ще вижте колко опасно C наистина 1870 01:33:22,710 --> 01:33:24,950 може да бъде, ако не го използвате правилно. 1871 01:33:24,950 --> 01:33:27,610 Но от там, и с Python, и JavaScript, ще 1872 01:33:27,610 --> 01:33:32,620 ние слой върху някои допълнителни защити, и работи по-малко от тези рискове. 1873 01:33:32,620 --> 01:33:35,820 >> Така че нека да направим малко по- интересна логика в нашата програма. 1874 01:33:35,820 --> 01:33:39,110 Така че нека да вървим напред и да се създаде програма, наречена Logical 1875 01:33:39,110 --> 01:33:43,804 само за да мога да играя с някои действителната логика, logical.c. 1876 01:33:43,804 --> 01:33:46,870 Аз просто ще копирате и поставите някои код от по-рано, така че аз се върна 1877 01:33:46,870 --> 01:33:49,950 за тази хубава отправна точка. 1878 01:33:49,950 --> 01:33:53,980 >> Нека този път направи Чар C. съм ще му се даде име на C 1879 01:33:53,980 --> 01:33:58,510 Просто защото това е конвенционален, получите знак от страна на потребителя. 1880 01:33:58,510 --> 01:34:00,730 И нека да се преструвам, като Аз съм за прилагане на част 1881 01:34:00,730 --> 01:34:04,130 на които Rm програма, Премахване програма преди тази подкана на потребителя 1882 01:34:04,130 --> 01:34:05,400 да изтриете даден файл. 1883 01:34:05,400 --> 01:34:06,750 Как бихме могли да направим това? 1884 01:34:06,750 --> 01:34:11,090 >> Искам да кажа, ако C е равна се равнява на, цитирам цитата, 1885 01:34:11,090 --> 01:34:16,304 Y, тогава аз ще приемем че потребителят е избрал да. 1886 01:34:16,304 --> 01:34:17,470 Аз съм просто ще отпечатате да. 1887 01:34:17,470 --> 01:34:19,440 Ако го бяха действително написването програмата за отстраняване, 1888 01:34:19,440 --> 01:34:21,420 бихме могли да премахнете файла с повече реда код. 1889 01:34:21,420 --> 01:34:22,461 Но ние ще го прости. 1890 01:34:22,461 --> 01:34:25,950 1891 01:34:25,950 --> 01:34:31,250 >> Иначе, ако в равнява равнява, N- и сега тук, аз отивам да се каже, 1892 01:34:31,250 --> 01:34:32,980 потребителят трябва да означава не. 1893 01:34:32,980 --> 01:34:34,360 И след това друг, знаете ли какво? 1894 01:34:34,360 --> 01:34:36,200 Аз не знам какво друго потребителят няма да пишете. 1895 01:34:36,200 --> 01:34:38,533 Така че аз съм просто ще кажа, че че е грешка, независимо от 1896 01:34:38,533 --> 01:34:40,070 той или тя всъщност въвели. 1897 01:34:40,070 --> 01:34:41,180 >> И така, какво става тук? 1898 01:34:41,180 --> 01:34:44,530 Има една основна разлика в сравнение с това, което съм направил в миналото. 1899 01:34:44,530 --> 01:34:49,300 Двойни кавички, двойни кавички, двойно кавички, и, все пак, единични кавички, 1900 01:34:49,300 --> 01:34:50,170 единични кавички. 1901 01:34:50,170 --> 01:34:52,860 Оказва се, в C, че когато искате да напишете низ, 1902 01:34:52,860 --> 01:34:56,680 все пак използвате двойни кавички, точно както ние сме Използвам цялото това време с ФОРМАТ. 1903 01:34:56,680 --> 01:35:02,030 >> Но ако искате да се справят само с един символ, а така наречените Чар, 1904 01:35:02,030 --> 01:35:03,780 тогава вие всъщност използвате единични кавички. 1905 01:35:03,780 --> 01:35:05,450 Тези от вас, които са програмирани преди, че не може да има 1906 01:35:05,450 --> 01:35:07,850 трябваше да се тревожи за това разграничение в някои езици. 1907 01:35:07,850 --> 01:35:09,450 В C, това е от значение. 1908 01:35:09,450 --> 01:35:12,560 И така, когато получа Чар и аз искам за сравнение, че Чар използване равни 1909 01:35:12,560 --> 01:35:18,350 се равнява на някои писмо като у или п, което правя, Наистина, трябва да имаме единични кавички. 1910 01:35:18,350 --> 01:35:19,770 >> Сега, нека да вървим напред и да направим това. 1911 01:35:19,770 --> 01:35:26,180 Да вървим напред и да се направи логически точка наклонена черта логически. 1912 01:35:26,180 --> 01:35:27,305 И сега съм питане. 1913 01:35:27,305 --> 01:35:30,638 Така че, най-вероятно, по-добър потребителски опит всъщност ще ми каже какво да правя тук. 1914 01:35:30,638 --> 01:35:33,030 Но аз ще просто сляпо казват, Y за да, ОК, хубаво. 1915 01:35:33,030 --> 01:35:35,780 >> Нека да го стартирате отново, п за никой, хубаво. 1916 01:35:35,780 --> 01:35:39,610 Да предположим, че подобно на някои хора, които познавам, шапки ми клавиш за блокиране на всички твърде често. 1917 01:35:39,610 --> 01:35:43,740 Така че аз правя капитал Y, влиза, грешка. 1918 01:35:43,740 --> 01:35:46,130 ОК, това не е точно това, което аз очаквах. 1919 01:35:46,130 --> 01:35:48,170 Всъщност, компютърът прави буквално каквото 1920 01:35:48,170 --> 01:35:51,794 Аз го казах да do-- проверява за с малки букви Y и малки букви п. 1921 01:35:51,794 --> 01:35:53,960 Това не се чувствам като добър потребителски опит, все пак. 1922 01:35:53,960 --> 01:35:59,010 Нека да поиска и го приемам или малки букви или главни букви. 1923 01:35:59,010 --> 01:36:02,090 Така се оказва, че може да искате да каже нещо като в Scratch, 1924 01:36:02,090 --> 01:36:08,150 като буквално или С е равно на се равнява на капитала единствен цитиран у. 1925 01:36:08,150 --> 01:36:11,400 Оказва се, C не трябва това буквално дума или. 1926 01:36:11,400 --> 01:36:12,880 >> Но тя има две вертикални ленти. 1927 01:36:12,880 --> 01:36:15,463 Трябва да се държи Shift обикновено, ако сте с помощта на US клавиатура, 1928 01:36:15,463 --> 01:36:18,910 и удари вертикална лента ключ горе вашият ключ връщане. 1929 01:36:18,910 --> 01:36:22,410 Но тази вертикална лента вертикална лента означава или. 1930 01:36:22,410 --> 01:36:26,220 >> Ако, от друга страна, ние искахме да се каже, и, като в самото начало, 1931 01:36:26,220 --> 01:36:28,180 бихме могли да направим амперсанд амперсанд. 1932 01:36:28,180 --> 01:36:31,330 Това не прави логически смисъл тук, защото човек не би могъл да 1933 01:36:31,330 --> 01:36:37,110 сте написали както у и малки букви Y и капитал Y като същия характер. 1934 01:36:37,110 --> 01:36:39,470 Така или е това, което ние възнамеряваме тук. 1935 01:36:39,470 --> 01:36:46,280 >> Така че, ако аз направя това и на двете места, или в равнява се равнява капитал N, сега проведена отново, 1936 01:36:46,280 --> 01:36:49,390 правят логично, проведена отново логично. 1937 01:36:49,390 --> 01:36:51,200 Сега, аз може да въведете у. 1938 01:36:51,200 --> 01:36:53,920 И мога да го направя отново с капитал Y, или капитал N. 1939 01:36:53,920 --> 01:36:56,630 И аз може да добавите в допълнителен комбинации на едно място. 1940 01:36:56,630 --> 01:36:58,810 >> Така че това е логична програма, доколкото сега 1941 01:36:58,810 --> 01:37:01,940 Аз съм проверка логично за тази стойност или настоящата стойност. 1942 01:37:01,940 --> 01:37:06,420 И не е нужно да, задължително, излезе с още две IFS или IFS друго. 1943 01:37:06,420 --> 01:37:09,960 всъщност мога да комбинирате някои от свързани логика заедно по този начин. 1944 01:37:09,960 --> 01:37:11,950 Така че това би било по-добре проектирана от просто 1945 01:37:11,950 --> 01:37:17,490 казвайки, ако C е равен на по-ниска случай Y, отпечатате, да, иначе ако в равнява на капитала Y, 1946 01:37:17,490 --> 01:37:20,074 отпечатате, да, иначе ако в равнява lower-- с други думи, 1947 01:37:20,074 --> 01:37:21,990 че не трябва да има все повече и повече клонове. 1948 01:37:21,990 --> 01:37:28,840 Можете да комбинирате някои от равностойността клонове Логично, като по този начин. 1949 01:37:28,840 --> 01:37:34,150 >> Така че нека да разгледаме само един крайния съставка, един последен конструкт, 1950 01:37:34,150 --> 01:37:34,847 че C позволява. 1951 01:37:34,847 --> 01:37:36,930 И ние ще се върнем в бъдеще на други неподвижни. 1952 01:37:36,930 --> 01:37:41,400 И тогава ние ще се заключи, като погледнете при не правилността на code-- 1953 01:37:41,400 --> 01:37:46,070 получаване на код за work-- но дизайна на код, и засадят тези семена в началото на деня. 1954 01:37:46,070 --> 01:37:51,337 >> Така че нека да вървим напред и да отвори нов файл тук. 1955 01:37:51,337 --> 01:37:51,920 Знаеш ли какво? 1956 01:37:51,920 --> 01:37:54,450 Отивам да се приведе отново в действие че същата програма, 1957 01:37:54,450 --> 01:37:55,940 но при използване на различна конструкция. 1958 01:37:55,940 --> 01:38:00,110 >> Така че ми позволи бързо да се предам достъп за включване CS50.h 1959 01:38:00,110 --> 01:38:04,150 за библиотеката CS50, стандарт Io.h за ФОРМАТ. 1960 01:38:04,150 --> 01:38:06,510 Дай ми ми INT главната невалидни. 1961 01:38:06,510 --> 01:38:09,310 И след това тук, нека ми давай напред и да направим това. 1962 01:38:09,310 --> 01:38:12,010 >> Чар в получава получите материала, който точно като преди. 1963 01:38:12,010 --> 01:38:16,770 И аз ще се използва нова конструкция now-- преминете, за какво характер? 1964 01:38:16,770 --> 01:38:19,820 Така че ключът е нещо като превключване на железопътните линии. 1965 01:38:19,820 --> 01:38:22,070 Или, наистина, това е вид един, ако друго, ако друго, ако, 1966 01:38:22,070 --> 01:38:23,980 но написана малко по различен начин. 1967 01:38:23,980 --> 01:38:25,490 >> Преминаването изглежда по този начин. 1968 01:38:25,490 --> 01:38:29,060 Вие имате ключ, и след това, характер или номер, който искате да погледнете, 1969 01:38:29,060 --> 01:38:32,000 След това някои големи скоби искали в Scratch, просто казват, направи тези неща. 1970 01:38:32,000 --> 01:38:33,480 И тогава ще има различни случаи. 1971 01:38:33,480 --> 01:38:34,830 >> Не използвайте, ако и другаде. 1972 01:38:34,830 --> 01:38:37,050 Вие буквално използва случая дума. 1973 01:38:37,050 --> 01:38:38,790 А ти би казал нещо подобно. 1974 01:38:38,790 --> 01:38:43,820 >> Така че в случая на малки букви Y, или в случай на капитала Y, 1975 01:38:43,820 --> 01:38:47,350 давай напред и да разпечатате да. 1976 01:38:47,350 --> 01:38:49,020 И след това да се измъкнат от ключа. 1977 01:38:49,020 --> 01:38:49,580 Това е. 1978 01:38:49,580 --> 01:38:50,880 Ние сме направили. 1979 01:38:50,880 --> 01:38:57,270 >> Иначе, ако, така да се каже, малки букви п, или капитал N, 1980 01:38:57,270 --> 01:39:02,560 След това отидете напред и печат навън не, и след това почивка. 1981 01:39:02,560 --> 01:39:08,022 Else-- и този вид е При неизпълнение indeed-- ФОРМАТ error-- 1982 01:39:08,022 --> 01:39:10,980 и просто за добра мярка, макар и логично тази почивка не е необходимо 1983 01:39:10,980 --> 01:39:12,896 защото ние сме в края на ключа, така или иначе, 1984 01:39:12,896 --> 01:39:14,520 Аз съм сега се счупи от ключа. 1985 01:39:14,520 --> 01:39:16,280 Така че това изглежда малко по-различно. 1986 01:39:16,280 --> 01:39:18,272 >> Но, логично, това е всъщност еквивалент. 1987 01:39:18,272 --> 01:39:19,980 И защо да използвате една върху друга? 1988 01:39:19,980 --> 01:39:23,220 Понякога, просто лични предпочитания, понякога естетиката, 1989 01:39:23,220 --> 01:39:25,420 ако Поглеждам това Сега, има нещо 1990 01:39:25,420 --> 01:39:27,510 да се каже за разпознаваемост на този код. 1991 01:39:27,510 --> 01:39:30,690 Искам да кажа, да не говорим за факта, че този код е нов за много от нас в залата. 1992 01:39:30,690 --> 01:39:33,515 >> Но това просто вид е доста. 1993 01:39:33,515 --> 01:39:37,760 Вие виждате малки букви Y, капитал Y, малки букви п, капитал N подразбиране 1994 01:39:37,760 --> 01:39:40,150 тя просто вид скокове при вас по начин, 1995 01:39:40,150 --> 01:39:42,200 че, може би, може би предходния пример 1996 01:39:42,200 --> 01:39:45,780 с ИС, както и вертикалните линии, и ИС на друго, не може да има. 1997 01:39:45,780 --> 01:39:51,600 Така че това е наистина въпрос на личен избор, наистина, или четливост, 1998 01:39:51,600 --> 01:39:52,360 на кода. 1999 01:39:52,360 --> 01:39:58,230 >> Но от гледна точка на функционалност, нека давай напред и да направи ключ, точка наклонена черта 2000 01:39:58,230 --> 01:40:05,830 ключ, а сега писане с малки букви Y, капитал Y, с малки букви п, капитал N, 2001 01:40:05,830 --> 01:40:09,250 Дейвид, опитайте отново, защото това е Не един символ. 2002 01:40:09,250 --> 01:40:12,050 Нека да направим х, грешка, както се очаква. 2003 01:40:12,050 --> 01:40:15,640 И, logically-- и това е нещо Аз ще насърчи в general-- дори 2004 01:40:15,640 --> 01:40:17,790 въпреки че ние сме само чесане на повърхността на някои от тези характеристики. 2005 01:40:17,790 --> 01:40:20,560 >> И това може да не е очевидно, когато себе си седнат на клавиатурата, 2006 01:40:20,560 --> 01:40:21,370 как работи това? 2007 01:40:21,370 --> 01:40:22,240 Какво това ще правим? 2008 01:40:22,240 --> 01:40:25,630 Най-красивото нещо, за да се налага лаптоп или настолен компютър, или достъп 2009 01:40:25,630 --> 01:40:29,290 към компютър с компилатор, и с код редактор, подобен на този, 2010 01:40:29,290 --> 01:40:32,990 е почти може винаги да отговорим на тези въпроси за себе си просто като се опитва. 2011 01:40:32,990 --> 01:40:36,570 >> Например, ако риторичен въпрос на ръка са били, 2012 01:40:36,570 --> 01:40:39,540 какво се случва, ако сте пропуснали Вашите почивка твърдения? 2013 01:40:39,540 --> 01:40:41,400 Което всъщност е много често нещо да се направи, 2014 01:40:41,400 --> 01:40:43,540 защото тя не изглежда като наистина имате нужда от тях. 2015 01:40:43,540 --> 01:40:46,790 Те наистина не завършите помислих, като скоби или къдрава 2016 01:40:46,790 --> 01:40:47,714 скоба прави. 2017 01:40:47,714 --> 01:40:49,630 Да вървим напред и компилирате кода и да видите. 2018 01:40:49,630 --> 01:40:53,690 Така че се превключвател, точка превключвател наклонена черта. 2019 01:40:53,690 --> 01:40:56,435 Нека да въведете малки букви Y, в началото на делото, Enter. 2020 01:40:56,435 --> 01:40:59,390 2021 01:40:59,390 --> 01:41:00,700 Така че аз напечатани у. 2022 01:41:00,700 --> 01:41:04,420 >> Програмата каза да, не, грешка, като че ли се променя мнението си. 2023 01:41:04,420 --> 01:41:09,280 Но това нещо е, защото това, което се случва, с превключвател е първият случай, че 2024 01:41:09,280 --> 01:41:13,899 мач по същество означава, хей компютър, изпълни всички от кода под него. 2025 01:41:13,899 --> 01:41:16,690 И ако не ви кажа, почивка, или да не кажа почивка, или да не кажа почивка, 2026 01:41:16,690 --> 01:41:19,540 компютърът ще се взриви през всички тези линии 2027 01:41:19,540 --> 01:41:22,779 и изпълни всички от тях, докато той получава за това фигурна скоба. 2028 01:41:22,779 --> 01:41:24,320 Така че спирачките са наистина необходими. 2029 01:41:24,320 --> 01:41:27,120 Но храна за вкъщи тук е, когато съмнявате, опитайте нещо. 2030 01:41:27,120 --> 01:41:29,510 Може би спаси своя код на първо място, или да го запишете в допълнително файл 2031 01:41:29,510 --> 01:41:32,930 ако сте наистина притеснен за каша и се налага да се възстанови 2032 01:41:32,930 --> 01:41:34,430 работата, че знаете работи. 2033 01:41:34,430 --> 01:41:35,410 >> Но опитайте неща. 2034 01:41:35,410 --> 01:41:38,074 И не е, както е страх, може би, на какво може да се направи на компютъра, 2035 01:41:38,074 --> 01:41:39,490 или, че може да се счупи нещо. 2036 01:41:39,490 --> 01:41:42,790 Винаги можете да се върнете обратно за някои по-ранна версия. 2037 01:41:42,790 --> 01:41:45,640 >> Така че нека да завърша, като търси при проектирането на код. 2038 01:41:45,640 --> 01:41:49,020 Ние имаме тази способност сега да пиша условия и напиши линии, 2039 01:41:49,020 --> 01:41:50,850 и променливи и функции при повиквания. 2040 01:41:50,850 --> 01:41:54,590 Така че, честно казано, ние сме вид обратно в където бяхме преди седмица с Scratch, 2041 01:41:54,590 --> 01:42:00,120 макар и с описание, по-малко завладяваща среда от Scratch позволява. 2042 01:42:00,120 --> 01:42:03,990 >> Но забележете колко бързо сме придобито че лексика, дори ако това е 2043 01:42:03,990 --> 01:42:07,570 Ще отнеме малко повече време, за да потъне в, така че сега можем да използваме тази лексика 2044 01:42:07,570 --> 01:42:10,320 да напише по-интересни програми. 2045 01:42:10,320 --> 01:42:12,940 И нека да стъпка бебе към това, както следва. 2046 01:42:12,940 --> 01:42:14,890 Нека да вървим напред и да създаване на нов файл тук. 2047 01:42:14,890 --> 01:42:17,750 >> Отивам да наричаме това prototype.c, и да се въведат 2048 01:42:17,750 --> 01:42:20,954 за първи път, способността да направите свои собствени функции. 2049 01:42:20,954 --> 01:42:22,870 Някои от вас може да има направил това с Scratch, 2050 01:42:22,870 --> 01:42:25,430 чрез която можете да създадете свой собствени блокове в самото начало, 2051 01:42:25,430 --> 01:42:27,892 и след това ги плъзнете на място където искате в C. 2052 01:42:27,892 --> 01:42:30,100 И в най-програмиране езици, които можете да направите точно 2053 01:42:30,100 --> 01:42:33,580 that-- направите свои собствени функции, ако те не са вече налице. 2054 01:42:33,580 --> 01:42:38,660 >> Така, например, нека да вървим напред и включва CS50.h, и включва 2055 01:42:38,660 --> 01:42:43,110 стандарт IO.h, INT главната невалидни. 2056 01:42:43,110 --> 01:42:46,020 И сега ние имаме Заместител готов да отида. 2057 01:42:46,020 --> 01:42:48,550 Държа печат неща като имената на хората днес. 2058 01:42:48,550 --> 01:42:51,910 И че се чувства like-- Не би било хубаво, ако има 2059 01:42:51,910 --> 01:42:53,936 са функция, наречена на името на печат? 2060 01:42:53,936 --> 01:42:55,060 Не трябва да се използва ФОРМАТ. 2061 01:42:55,060 --> 01:42:56,976 Не трябва да забравяме, всички кодове по формат. 2062 01:42:56,976 --> 01:43:00,050 Защо не мога, или защо не е направил някой преди мен, 2063 01:43:00,050 --> 01:43:02,980 създаде функция, наречена печат име, че дадено някакво име, 2064 01:43:02,980 --> 01:43:03,980 просто го отпечатва? 2065 01:43:03,980 --> 01:43:08,700 >> С други думи, ако кажа, хей, компютър, дай ми низ 2066 01:43:08,700 --> 01:43:11,870 чрез задаване на потребителя за такъв, чрез GET функция низ CS50 е. 2067 01:43:11,870 --> 01:43:15,090 Хей, компютър, сложи това низ в променливата в лявата страна, 2068 01:43:15,090 --> 01:43:16,150 и наричаме това е. 2069 01:43:16,150 --> 01:43:22,150 И тогава, хей компютър, давай и печат, че името на човека, направил. 2070 01:43:22,150 --> 01:43:26,240 >> Сега, че би било хубаво, защото тази програма, ловко име, 2071 01:43:26,240 --> 01:43:29,170 ми казва това, което е трябвало да се направи по пътя на имената на тези функции е. 2072 01:43:29,170 --> 01:43:32,930 Нека да отидем и да направи прототип, Enter. 2073 01:43:32,930 --> 01:43:34,930 И, за съжаление, това няма да лети. 2074 01:43:34,930 --> 01:43:39,430 >> Prototype.c, линия 7, характер 5, грешка, имплицитно декларация 2075 01:43:39,430 --> 01:43:42,960 на име функция за печат е невалиден в C99, C99 2076 01:43:42,960 --> 01:43:45,130 което означава, че една версия на C които се появиха през 1999. 2077 01:43:45,130 --> 01:43:45,730 Това е всичко. 2078 01:43:45,730 --> 01:43:48,780 >> Така че аз не знам какво Всичко това означава, все още. 2079 01:43:48,780 --> 01:43:50,810 Но аз правя признае грешка в червено. 2080 01:43:50,810 --> 01:43:51,770 Това е доста очевидно. 2081 01:43:51,770 --> 01:43:53,769 >> И изглежда, че с зеления характер тук, 2082 01:43:53,769 --> 01:43:57,520 въпросът е с име на печат, отворен скоба ите, в близост скоба, точка и запетая. 2083 01:43:57,520 --> 01:44:01,800 Но имплицитно декларация на функция, което направихме видим накратко по-рано. 2084 01:44:01,800 --> 01:44:04,880 Това означава, просто, че звън не знам какво искам да кажа. 2085 01:44:04,880 --> 01:44:09,000 >> Ползвал съм лексика дума, че това е никога не е виждал или учили преди. 2086 01:44:09,000 --> 01:44:11,950 И така, аз трябва да го научи какво означава тази функция. 2087 01:44:11,950 --> 01:44:13,590 Така че аз ще отида напред и да направи това. 2088 01:44:13,590 --> 01:44:17,970 >> Отивам да вървим напред и да приложат собствената си функция, наречена Print име. 2089 01:44:17,970 --> 01:44:24,720 И аз ще кажа, както следва, че тя прави това, ФОРМАТ, здравей, процента 2090 01:44:24,720 --> 01:44:27,760 ите, наклонена черта п, име, точка и запетая. 2091 01:44:27,760 --> 01:44:29,250 Така че това, което съм просто правя? 2092 01:44:29,250 --> 01:44:31,325 >> Така се оказва, че за да приложи своя собствена функция, 2093 01:44:31,325 --> 01:44:33,845 ние вид назаем някои от същата структура като основна 2094 01:44:33,845 --> 01:44:35,720 че ние току-що бил се приема за даденост, и аз 2095 01:44:35,720 --> 01:44:37,730 знам просто копиране и поставите почти това, което 2096 01:44:37,730 --> 01:44:39,170 Пиша в миналото. 2097 01:44:39,170 --> 01:44:40,570 Но забележете модела тук. 2098 01:44:40,570 --> 01:44:43,750 Int, Main, Void, ние ще дразни освен не след дълго това, че всъщност означава. 2099 01:44:43,750 --> 01:44:46,160 >> Но за днес, просто забележите паралелизма. 2100 01:44:46,160 --> 01:44:48,210 Void, име на печат, име низ, така че има 2101 01:44:48,210 --> 01:44:50,310 лилава ключова дума, която ние ще започнем 2102 01:44:50,310 --> 01:44:54,067 наричайки тип връщане, на името на функцията, и след това на входа. 2103 01:44:54,067 --> 01:44:56,400 Така че, всъщност, ние можем да дестилират този вид като миналата седмица 2104 01:44:56,400 --> 01:44:59,030 като, това е името, или алгоритъм на кода сме 2105 01:44:59,030 --> 01:45:00,761 Ще write-- на алгоритъм се основава 2106 01:45:00,761 --> 01:45:02,010 кода ние ще пиша. 2107 01:45:02,010 --> 01:45:03,180 >> Това е входа. 2108 01:45:03,180 --> 01:45:04,670 Това е неговата продукция. 2109 01:45:04,670 --> 01:45:08,730 Тази функция, име на печат, е предназначена да отнеме низ, наречен на името, 2110 01:45:08,730 --> 01:45:11,350 или каквото и да, като вход, а след това нищожно. 2111 01:45:11,350 --> 01:45:13,904 Той не се връща нищо, като получите низ или да получите инт прави. 2112 01:45:13,904 --> 01:45:15,570 Така че тя ще ме предаде нещо обратно. 2113 01:45:15,570 --> 01:45:17,960 Това е просто няма да има страничен ефект, така да се каже, 2114 01:45:17,960 --> 01:45:19,570 за отпечатване на име на човек. 2115 01:45:19,570 --> 01:45:22,260 Така че забележите, линия 7, I може да наречеш печат. 2116 01:45:22,260 --> 01:45:25,920 Линия 10, не мога да се определи или изпълнение на име печат. 2117 01:45:25,920 --> 01:45:28,450 Но, за съжаление, това не е достатъчно. 2118 01:45:28,450 --> 01:45:31,230 >> Нека да вървим напред и да прекомпилирате това след спестяване. 2119 01:45:31,230 --> 01:45:33,910 Уау, сега, аз съм го направил по-лошо, то ще изглежда. 2120 01:45:33,910 --> 01:45:37,027 Така че имплицитно декларация на Име на функция за печат е невалиден. 2121 01:45:37,027 --> 01:45:38,360 И, отново, има повече грешки. 2122 01:45:38,360 --> 01:45:41,430 Но тъй като аз предупреди по-рано, дори ако получите претоварени с, 2123 01:45:41,430 --> 01:45:44,850 или малко тъжно да се види толкова много грешки, се съсредоточават само върху първата 2124 01:45:44,850 --> 01:45:47,500 първоначално, тъй като той може просто да са имали каскаден ефект. 2125 01:45:47,500 --> 01:45:51,970 Така C, или звън по-специално, все още не признава името на печат. 2126 01:45:51,970 --> 01:45:54,580 >> И това е, защото звън, от дизайн, е вид ням. 2127 01:45:54,580 --> 01:45:56,280 Тя само прави това, което ти го кажа, за да се направи. 2128 01:45:56,280 --> 01:46:00,950 И го прави само така в реда в която го кажа, за да се направи. 2129 01:46:00,950 --> 01:46:05,270 >> Така че аз определено основната на линия четири, като ние сме били прави доста често. 2130 01:46:05,270 --> 01:46:07,980 Аз определено име печат на линия 10. 2131 01:46:07,980 --> 01:46:11,793 Но аз се опитвам да използвам име печат на линия седем. 2132 01:46:11,793 --> 01:46:13,670 >> Това е твърде рано, все още не съществува. 2133 01:46:13,670 --> 01:46:19,150 Така че може да бъде умен, и ще бъда като, ОК, така че нека просто да играят заедно, 2134 01:46:19,150 --> 01:46:23,680 и да се премести име печат нагоре тук, и отново да се съберат. 2135 01:46:23,680 --> 01:46:24,550 Боже мой. 2136 01:46:24,550 --> 01:46:25,260 Проработи. 2137 01:46:25,260 --> 01:46:26,670 Тя беше толкова просто. 2138 01:46:26,670 --> 01:46:28,120 >> Но логиката е точно това. 2139 01:46:28,120 --> 01:46:30,870 Трябва да се научи звън какво е чрез определяне на функцията на първо място. 2140 01:46:30,870 --> 01:46:31,920 След това можете да го използвате. 2141 01:46:31,920 --> 01:46:33,940 Но, честно казано, това се чувства като хлъзгав наклон. 2142 01:46:33,940 --> 01:46:35,773 >> Така че всеки път, когато стартирате в проблем, аз съм просто 2143 01:46:35,773 --> 01:46:39,450 ще подчертае и копирайте кода Аз написах, тя го копирате и поставите тук. 2144 01:46:39,450 --> 01:46:41,370 И, разбира се, бихме могли планират някои сценарии 2145 01:46:41,370 --> 01:46:43,286 където една функция мощ Трябва да се обадите на друг. 2146 01:46:43,286 --> 01:46:46,030 И просто не може да постави всеки функция над всеки друг. 2147 01:46:46,030 --> 01:46:47,930 >> Така се оказва, че има по-добро решение. 2148 01:46:47,930 --> 01:46:50,100 Ние можем да оставим това да бъде. 2149 01:46:50,100 --> 01:46:53,677 И, честно казано, това е обикновено приятно, и удобно, и добър дизайн 2150 01:46:53,677 --> 01:46:56,760 да постави главния първо, защото, отново, Основната точно като при зелен флаг кликнали, 2151 01:46:56,760 --> 01:46:59,027 че е функция, се изпълни по подразбиране. 2152 01:46:59,027 --> 01:47:01,110 Така че може и да постави че в началото на файла 2153 01:47:01,110 --> 01:47:03,560 така че, когато вие или който и да е друг човек гледа на файла 2154 01:47:03,560 --> 01:47:06,360 Знаете ли какво се случва просто чрез четене основната първия. 2155 01:47:06,360 --> 01:47:15,360 Така се оказва, че ние можем да кажем звън проактивно, хей, звън, по линия четири, 2156 01:47:15,360 --> 01:47:17,940 Обещавам да приложат функция, наречена Print 2157 01:47:17,940 --> 01:47:22,600 Името, което се низ, наречен име като вход, и се връща нищо, за невалидни. 2158 01:47:22,600 --> 01:47:24,770 И аз ще се придвижва към прилагането му по-късно. 2159 01:47:24,770 --> 01:47:25,680 >> Тук идва на Майн. 2160 01:47:25,680 --> 01:47:29,130 Главна сега на ред 9 може да използвате Print Наименование защото звън 2161 01:47:29,130 --> 01:47:32,600 е доверчив, че, в крайна сметка, той ще се натъкне на определението 2162 01:47:32,600 --> 01:47:34,880 на изпълнението на Print име. 2163 01:47:34,880 --> 01:47:37,390 Така че, след като запазите файла ми, нека ми давай напред и да направи прототип, 2164 01:47:37,390 --> 01:47:38,498 изглежда добре този път. 2165 01:47:38,498 --> 01:47:43,470 Dot наклонена черта, прототип, нека давай напред и въведете име. 2166 01:47:43,470 --> 01:47:48,440 Дейвид, здравей Дейвид, Zamila, здравей Zamila, и, наистина, сега тя работи. 2167 01:47:48,440 --> 01:47:52,200 >> Така че съставката тук е, че ние сме направена потребителска функция, като по поръчка 2168 01:47:52,200 --> 01:47:54,219 Scratch блок ние сме го вика. 2169 01:47:54,219 --> 01:47:57,010 Но за разлика от нулата, където можете да просто да го създаде и започнете да го използвате, 2170 01:47:57,010 --> 01:47:59,330 Сега ние трябва да бъдем по- Малко по-педантичен, 2171 01:47:59,330 --> 01:48:03,410 и всъщност се обучават звън да се използва, или да го очакваме. 2172 01:48:03,410 --> 01:48:09,140 Сега, като настрана, защо през цялото това време да има ние е просто сляпо на вярата включително 2173 01:48:09,140 --> 01:48:12,170 CS50.h, и включително стандарт IO.h? 2174 01:48:12,170 --> 01:48:15,190 >> Е, оказва се, сред няколко други неща, 2175 01:48:15,190 --> 01:48:18,550 всичко, което е в тези, точка з файлове, които се случи да бъде файлове. 2176 01:48:18,550 --> 01:48:20,460 Те заглавни файлове, така да се каже. 2177 01:48:20,460 --> 01:48:23,270 Те все още са написани на C. Но те са различен тип файл. 2178 01:48:23,270 --> 01:48:28,690 >> За сега, можете да почти приемем че всичко, което е вътре в CS50.h 2179 01:48:28,690 --> 01:48:33,360 е някои реплики като тази, а не за функции, наречени Print Наименование, 2180 01:48:33,360 --> 01:48:36,840 но за да получавате String, Get Float, и няколко други. 2181 01:48:36,840 --> 01:48:41,510 И там са подобни прототипи, една лайнери, отвътре на стандарт IO.h 2182 01:48:41,510 --> 01:48:46,241 за ФОРМАТ, който в момента е в моята собствена функция за печат име. 2183 01:48:46,241 --> 01:48:49,490 Така че, с други думи, цялото това време ние сме току-що беше сляпо копиране и поставяне 2184 01:48:49,490 --> 01:48:51,780 включва този, включва че, какво се случва? 2185 01:48:51,780 --> 01:48:55,310 Това са просто вид на улики да звън като до какви функции 2186 01:48:55,310 --> 01:49:00,170 са, наистина, изпълнява, просто другаде в различни файлове 2187 01:49:00,170 --> 01:49:02,440 другаде в системата. 2188 01:49:02,440 --> 01:49:05,160 >> Така че ние сме изпълнени име печат. 2189 01:49:05,160 --> 01:49:07,910 Той вече има този страничен ефект на отпечатване на нещо на екрана. 2190 01:49:07,910 --> 01:49:10,170 Но това не е така в действителност Подай ми нещо обратно. 2191 01:49:10,170 --> 01:49:12,200 Как да отида за изпълнение на програма, която 2192 01:49:12,200 --> 01:49:14,510 не ме предаде нещо обратно? 2193 01:49:14,510 --> 01:49:15,580 >> Е, нека се опитаме това. 2194 01:49:15,580 --> 01:49:21,360 Нека да вървим напред и да приложат файл, наречен return.c 2195 01:49:21,360 --> 01:49:24,530 така че ние може да покаже как нещо като Get String, или Get Int, 2196 01:49:24,530 --> 01:49:27,340 всъщност връщане нещо обратно към потребителя. 2197 01:49:27,340 --> 01:49:29,840 Да вървим напред и да се определи INT главната невалидни. 2198 01:49:29,840 --> 01:49:33,230 >> И, отново, за в бъдеще, ние ще обясни какво, че инт и тази празнина 2199 01:49:33,230 --> 01:49:34,090 е всъщност прави. 2200 01:49:34,090 --> 01:49:35,840 Но за днес, ние ще го приемаме за даденост. 2201 01:49:35,840 --> 01:49:39,970 Отивам да се продължи напред и ФОРМАТ, за добър потребителски опит, х е. 2202 01:49:39,970 --> 01:49:44,360 И тогава аз ще чакам за потребител, за да ми даде х с GET вътр. 2203 01:49:44,360 --> 01:49:48,459 >> И тогава аз ще отида напред и разпечатате х до площада. 2204 01:49:48,459 --> 01:49:50,500 Така че, когато имате само един клавиатура, хората често 2205 01:49:50,500 --> 01:49:52,600 използвате малко морков символ на клавиатурата 2206 01:49:52,600 --> 01:49:55,330 да представлява до властта на, или експонентата на. 2207 01:49:55,330 --> 01:49:58,960 Така х квадрат присъства аз. 2208 01:49:58,960 --> 01:50:00,660 >> И сега аз ще направя това. 2209 01:50:00,660 --> 01:50:03,940 Можех само do-- какво е х квадрат? х на квадрат е х пъти х. 2210 01:50:03,940 --> 01:50:06,690 >> И ние направихме това някои Преди време вече днес. 2211 01:50:06,690 --> 01:50:08,730 Това не се чувствам като всички, че много напредък. 2212 01:50:08,730 --> 01:50:09,570 Знаеш ли какво? 2213 01:50:09,570 --> 01:50:13,100 Нека да се наберат някои от които идея от последния път на абстракция. 2214 01:50:13,100 --> 01:50:16,080 >> Не би ли било хубаво, ако има една функция, наречена 2215 01:50:16,080 --> 01:50:18,460 квадрат, че прави точно това? 2216 01:50:18,460 --> 01:50:20,640 Тя все още е, в края на ден, върши същата математика. 2217 01:50:20,640 --> 01:50:22,410 Но нека абстрактно далеч от идеята за поемане 2218 01:50:22,410 --> 01:50:25,280 един брой, умножен по друго, а просто му се даде име, 2219 01:50:25,280 --> 01:50:27,360 като квадрат на тази стойност. 2220 01:50:27,360 --> 01:50:29,560 >> А, с други думи, в C, нека да се създаде функция 2221 01:50:29,560 --> 01:50:32,660 нарича квадрат, че прави точно това. 2222 01:50:32,660 --> 01:50:34,600 Това ще се нарича квадрат. 2223 01:50:34,600 --> 01:50:35,790 Това ще отнеме едно цяло число. 2224 01:50:35,790 --> 01:50:37,820 И ние ще просто ще го наричат ​​п, по подразбиране. 2225 01:50:37,820 --> 01:50:39,403 >> Но бихме могли да го наречем нещо, което искаме. 2226 01:50:39,403 --> 01:50:42,900 И всичко, което то се случва да направя, буквално, е завръщане 2227 01:50:42,900 --> 01:50:45,810 в резултат на N пъти п. 2228 01:50:45,810 --> 01:50:48,980 Но, тъй като е връщане на нещо, което 2229 01:50:48,980 --> 01:50:53,690 е ключовата дума в лилаво ние сме никога не е виждал преди, аз, по линия 11, 2230 01:50:53,690 --> 01:50:55,410 Не може просто да се каже, нищожен този път. 2231 01:50:55,410 --> 01:51:01,320 >> Void, в примера, който току-що видяхте по-скоро от името на печат, просто означава, 2232 01:51:01,320 --> 01:51:02,190 направи нещо. 2233 01:51:02,190 --> 01:51:04,170 Но не ме предаде нещо обратно. 2234 01:51:04,170 --> 01:51:06,790 В този случай, аз искам да се върнат п пъти п, 2235 01:51:06,790 --> 01:51:08,460 или каквото и да е, че номер. 2236 01:51:08,460 --> 01:51:12,460 >> Така че аз не мога да кажа, хей, компютър, Аз се върне нищо, за невалидни. 2237 01:51:12,460 --> 01:51:16,166 Това ще се върне, от природата, с вътр. 2238 01:51:16,166 --> 01:51:17,790 И така, това е всичко, което се случва тук. 2239 01:51:17,790 --> 01:51:20,070 >> Входът за квадрат ще бъде едно цяло число. 2240 01:51:20,070 --> 01:51:24,760 И за да можем да го използваме, тя трябва да има име, N. Това ще изход 2241 01:51:24,760 --> 01:51:26,240 пад, че не се нуждае от име. 2242 01:51:26,240 --> 01:51:29,590 Ние можем да го оставим на основното, или който и да е използване на мен да си спомня тази стойност, ако ние 2243 01:51:29,590 --> 01:51:31,120 Искам със собствен променлива. 2244 01:51:31,120 --> 01:51:33,230 >> И, отново, единствената нова ключовата дума тук е връщане. 2245 01:51:33,230 --> 01:51:34,480 И аз съм просто правят някои математика. 2246 01:51:34,480 --> 01:51:41,825 Ако аз наистина исках да бъде излишно, Мога да кажа, инт продукт получава п пъти п. 2247 01:51:41,825 --> 01:51:44,170 >> И тогава може да се каже, върнете продукта. 2248 01:51:44,170 --> 01:51:47,360 Но, отново, за да ми точка по-рано от това просто не е добра design-- 2249 01:51:47,360 --> 01:51:50,060 като, защо се въведе име, символ, като продукт, 2250 01:51:50,060 --> 01:51:51,570 Просто незабавно да го върне? 2251 01:51:51,570 --> 01:51:53,670 Това е малко по-чист, малко по-строг, така че 2252 01:51:53,670 --> 01:51:59,380 да се говори, само за да се каже, връщане н пъти п, да се отървем от тази линия напълно. 2253 01:51:59,380 --> 01:52:02,860 >> И това е просто по-малко код, за да се чете, по-малка възможност за грешки. 2254 01:52:02,860 --> 01:52:05,180 И нека да видим дали това всъщност сега работи. 2255 01:52:05,180 --> 01:52:09,380 Сега, аз ще отида напред и да направи завръщане. 2256 01:52:09,380 --> 01:52:11,460 >> Охо, имплицитно декларация на функция. 2257 01:52:11,460 --> 01:52:14,080 Направих тази грешка преди, не е голяма работа. 2258 01:52:14,080 --> 01:52:18,950 Нека само да въведете, или маркирайте и копирате, точно същата функция прототип, 2259 01:52:18,950 --> 01:52:21,342 или подпис, на функцията до тук. 2260 01:52:21,342 --> 01:52:22,800 Или мога да се премести цялата функция. 2261 01:52:22,800 --> 01:52:23,841 >> Но това е малко мързелив. 2262 01:52:23,841 --> 01:52:24,870 Така че ние няма да го направя. 2263 01:52:24,870 --> 01:52:27,960 Сега, нека да направи завръщане отново, точка, наклонена черта връщане. 2264 01:52:27,960 --> 01:52:32,790 >> х е квадрат 2. х е 4. х е квадрат 3. х е 9. 2265 01:52:32,790 --> 01:52:35,300 И функцията изглежда Сега трябва да се работи. 2266 01:52:35,300 --> 01:52:36,550 Така че каква е разликата тук? 2267 01:52:36,550 --> 01:52:42,520 Имам функция, която се нарича квадрат, в този случай, който сложих в един вход. 2268 01:52:42,520 --> 01:52:43,830 И аз да се върна на изход. 2269 01:52:43,830 --> 01:52:46,210 И все пак, по-рано, ако Отварям друга примера 2270 01:52:46,210 --> 01:52:51,640 от по-рано, което беше наречен prototype.c, 2271 01:52:51,640 --> 01:52:54,770 Имах име печат, който върнати нищожен, така да се каже, 2272 01:52:54,770 --> 01:52:58,730 Или го върна нищо, и просто имаше страничен ефект. 2273 01:52:58,730 --> 01:53:00,230 >> И така, какво става тук? 2274 01:53:00,230 --> 01:53:03,520 Е, помисли функцията получите низ само за миг. 2275 01:53:03,520 --> 01:53:06,570 Ние сме били с помощта на функцията получите низ по следния начин. 2276 01:53:06,570 --> 01:53:10,464 >> Ние сме имали функция получите низ, като включва CS50.h, 2277 01:53:10,464 --> 01:53:16,624 включва стандартен IO.h, INT, основната, невалидна. 2278 01:53:16,624 --> 01:53:18,790 И тогава всеки път, когато съм наречен GET низ до този момент, 2279 01:53:18,790 --> 01:53:23,260 Аз бях казал нещо подобно, низ ите получава се низ, защото GET string-- 2280 01:53:23,260 --> 01:53:27,880 нека наречем това get.c-- GET низ Самата връща низ, че мога след това 2281 01:53:27,880 --> 01:53:32,050 използвате, и да кажа, здравей, запетая, процента ите, наклонена черта N, S. 2282 01:53:32,050 --> 01:53:35,660 >> Така че това е същия пример, наистина, че сме имали по-рано. 2283 01:53:35,660 --> 01:53:37,920 Така се получи низ връща стойност. 2284 01:53:37,920 --> 01:53:41,260 Но преди малко, печат низ не връща стойност. 2285 01:53:41,260 --> 01:53:42,721 Тя просто има страничен ефект. 2286 01:53:42,721 --> 01:53:44,220 Така че това е една основна разлика. 2287 01:53:44,220 --> 01:53:46,710 Виждали сме различни видове функции сега, 2288 01:53:46,710 --> 01:53:49,490 някои от които са се върнали ценности, някои от които не го правят. 2289 01:53:49,490 --> 01:53:51,890 Така че може би това е низ, или инт, или поплавък. 2290 01:53:51,890 --> 01:53:53,480 Или може би това е просто нищожни. 2291 01:53:53,480 --> 01:53:55,710 >> И разликата е че тези функции, 2292 01:53:55,710 --> 01:53:59,940 получите данни и връща стойност са всъщност привеждане нещо обратно на масата, 2293 01:53:59,940 --> 01:54:01,110 така да се каже. 2294 01:54:01,110 --> 01:54:03,710 Така че нека да вървим напред и да Посетете един краен набор 2295 01:54:03,710 --> 01:54:09,129 на примера, който дава смисъл, сега, на как можем да, наистина, абстрактно-добре, 2296 01:54:09,129 --> 01:54:11,670 и по-добре и по-добре, или повече, и още, и още, за да 2297 01:54:11,670 --> 01:54:13,810 да пише, в крайна сметка, по-добре код. 2298 01:54:13,810 --> 01:54:16,860 Да вървим напред, и в духа от нулата, направете следното. 2299 01:54:16,860 --> 01:54:21,700 >> Нека да вървим напред и да включва CS50.h и стандарт IO.h. 2300 01:54:21,700 --> 01:54:24,010 Нека да вървим напред и да даде себе си едно цяло число, основна, за невалидни. 2301 01:54:24,010 --> 01:54:27,380 И нека да вървим напред, наричаме това cough.c. 2302 01:54:27,380 --> 01:54:35,510 >> И нека да вървим напред и просто като Scratch, разпечатате кашлица / п. 2303 01:54:35,510 --> 01:54:37,170 И аз искам да направя това три пъти. 2304 01:54:37,170 --> 01:54:39,670 Така че аз съм, разбира се, просто ще да копирате и поставите три пъти. 2305 01:54:39,670 --> 01:54:46,440 Аз сега ще направи кашлица точка наклонена черта кашлица. 2306 01:54:46,440 --> 01:54:50,120 Нека да се даде малко повече място тук, Enter, кашлица, кашлица, кашлица. 2307 01:54:50,120 --> 01:54:53,970 >> Има, разбира се, вече е възможност за подобрение. 2308 01:54:53,970 --> 01:54:55,679 Аз бях копира и на няколко пъти днес. 2309 01:54:55,679 --> 01:54:58,261 Но това беше само, така че не е направил Трябва да въведете най-много герои. 2310 01:54:58,261 --> 01:55:00,250 Аз все още се промени това, което тези редове код са. 2311 01:55:00,250 --> 01:55:04,240 >> Тези три линии са идентични, който се чувства мързелив и наистина е, 2312 01:55:04,240 --> 01:55:07,110 и най-вероятно не е правилният подход. 2313 01:55:07,110 --> 01:55:11,029 Така че с това, което съставка бихме могли да подобрим този код? 2314 01:55:11,029 --> 01:55:12,570 Ние не трябва да копирате и поставяте код. 2315 01:55:12,570 --> 01:55:15,070 >> И наистина, всеки път, когато се чувстват себе копиране и поставяне, 2316 01:55:15,070 --> 01:55:17,700 и дори не се променя код, шансовете са, че има по-добър начин. 2317 01:55:17,700 --> 01:55:19,470 И, наистина, има. 2318 01:55:19,470 --> 01:55:22,510 Нека да вървим напред и да се направи за контур, въпреки че синтаксисът не вали 2319 01:55:22,510 --> 01:55:24,570 идва естествено, все още. 2320 01:55:24,570 --> 01:55:29,494 >> Направете това три пъти, просто като направите following-- 2321 01:55:29,494 --> 01:55:31,160 и аз се случи да се знае това от практиката. 2322 01:55:31,160 --> 01:55:32,810 Но ние имаме редица примери сега. 2323 01:55:32,810 --> 01:55:34,950 И ще видите онлайн повече препратки неподвижно. 2324 01:55:34,950 --> 01:55:37,790 >> Това е синтаксиса на линия 6, че много прилича на надраскване, който се повтаря 2325 01:55:37,790 --> 01:55:40,090 блок, повторете следните три пъти. 2326 01:55:40,090 --> 01:55:41,340 Това е малко магически за сега. 2327 01:55:41,340 --> 01:55:43,050 Но това ще получите повече, и по-запознати. 2328 01:55:43,050 --> 01:55:45,050 >> И това ще се повтаря Онлайн осем три пъти, 2329 01:55:45,050 --> 01:55:52,390 така, че ако мога отново да се съберат изработка кашлица, дот наклонена черта кашлица, кашлица, кашлица, кашлица. 2330 01:55:52,390 --> 01:55:54,030 Той все още работи по същия начин. 2331 01:55:54,030 --> 01:55:55,550 Така че всичко е наред и добра. 2332 01:55:55,550 --> 01:55:58,200 Но това не е много разсеян. 2333 01:55:58,200 --> 01:55:59,371 >> Това е съвсем верен. 2334 01:55:59,371 --> 01:56:01,370 Но тя се чувства като има би могло да бъде една възможност, 2335 01:56:01,370 --> 01:56:03,750 както в света на Scratch, за да вид старт 2336 01:56:03,750 --> 01:56:07,530 да се добавят някои семантика тук, така че Аз не просто има някои за контур, 2337 01:56:07,530 --> 01:56:09,867 и функция, която казва, кашлица, или не кашля. 2338 01:56:09,867 --> 01:56:10,450 Знаеш ли какво? 2339 01:56:10,450 --> 01:56:12,620 Нека се опитаме да бъдем по- малко по-хладно, отколкото това, 2340 01:56:12,620 --> 01:56:16,090 и всъщност напише функция, която има някои странични ефекти, наричаме го кашлица. 2341 01:56:16,090 --> 01:56:20,830 >> И тя не се вход и връща никаква стойност като продукция. 2342 01:56:20,830 --> 01:56:22,680 Но знаете ли какво прави той? 2343 01:56:22,680 --> 01:56:29,370 Той прави this-- ФОРМАТ, цитат цитата, кашлица. 2344 01:56:29,370 --> 01:56:32,380 >> И сега тук, аз ще съм да се продължи напред и за инт, 2345 01:56:32,380 --> 01:56:36,070 аз стане нула, аз по-малко от 3, аз плюс плюс. 2346 01:56:36,070 --> 01:56:39,770 Отивам да не правя ФОРМАТ, което е спорно изпълнение на ниско ниво 2347 01:56:39,770 --> 01:56:40,270 детайл. 2348 01:56:40,270 --> 01:56:41,353 Не ме интересува как да кашля. 2349 01:56:41,353 --> 01:56:43,240 Аз просто искам да използвате функцията за кашлица. 2350 01:56:43,240 --> 01:56:44,840 И аз съм просто ще наричаме кашлица. 2351 01:56:44,840 --> 01:56:46,204 >> Сега, забележете, дихотомията. 2352 01:56:46,204 --> 01:56:49,370 Когато се обадите функция, ако не го направите искам да дам го входове, напълно глоба. 2353 01:56:49,370 --> 01:56:51,780 Просто направете отворени скоба, близо скоба, и сте готови. 2354 01:56:51,780 --> 01:56:56,271 >> Когато дефинирате функция, или Декларирам на функционални прототипи, 2355 01:56:56,271 --> 01:56:58,770 ако знаете предварително, че не е ще вземе някакви аргументи, 2356 01:56:58,770 --> 01:57:01,170 кажа нищожни в тези скоби там. 2357 01:57:01,170 --> 01:57:05,660 И това прави сигурни, че не ще случайно да злоупотребят с него. 2358 01:57:05,660 --> 01:57:07,020 Нека да вървим напред и да направи кашлица. 2359 01:57:07,020 --> 01:57:08,540 И, разбира се, че съм направил грешка. 2360 01:57:08,540 --> 01:57:10,410 >> По дяволите, има, че имплицитно декларация. 2361 01:57:10,410 --> 01:57:11,325 Но това е добре. 2362 01:57:11,325 --> 01:57:12,590 Това е един лесен оправя. 2363 01:57:12,590 --> 01:57:18,240 Трябва ми само прототип по-нагоре в досието ми, отколкото аз всъщност го използва. 2364 01:57:18,240 --> 01:57:20,070 >> Така че сега нека да направим кашлица отново, хубаво. 2365 01:57:20,070 --> 01:57:20,790 Сега, тя работи. 2366 01:57:20,790 --> 01:57:22,930 Направи кашлица, кашлица, кашлица, кашлица. 2367 01:57:22,930 --> 01:57:25,930 Така че може би си мислите, че ние сме наистина малко над инженерни този проблем. 2368 01:57:25,930 --> 01:57:26,763 И наистина, ние сме. 2369 01:57:26,763 --> 01:57:28,870 Това не е добра кандидат на програма 2370 01:57:28,870 --> 01:57:31,930 в момента на рефакториране, и прави това, което е 2371 01:57:31,930 --> 01:57:35,645 нарича йерархична разлагане, където можете да отнеме известно код, а след това 2372 01:57:35,645 --> 01:57:38,790 някак фактор нещата, така че да приписваме повече семантиката им, 2373 01:57:38,790 --> 01:57:40,930 и да го използвате отново в крайна сметка по-дългосрочен план. 2374 01:57:40,930 --> 01:57:43,490 Но това е градивен елемент към по-сложни програми 2375 01:57:43,490 --> 01:57:45,600 че ние ще започнем писането преди дълго време, че 2376 01:57:45,600 --> 01:57:50,090 ни позволява да има речника с които да пишат по-добре код. 2377 01:57:50,090 --> 01:57:52,920 И, наистина, нека да видим дали можем не може да се обобщи това допълнително. 2378 01:57:52,920 --> 01:57:57,984 >> Изглежда малко куц, че аз, основната, трябва да се тревожи за това дяволски за контур, 2379 01:57:57,984 --> 01:57:59,400 и призовава кашлица отново и отново. 2380 01:57:59,400 --> 01:58:03,050 Защо не мога да просто кажете кашлица, моля кашлица три пъти? 2381 01:58:03,050 --> 01:58:08,170 С други думи, защо не мога просто даде вход да кашля и да направите това? 2382 01:58:08,170 --> 01:58:11,270 >> Защо не мога да кажа точно, в Основната кашлица три пъти. 2383 01:58:11,270 --> 01:58:13,150 И сега, това е един вид магически. 2384 01:58:13,150 --> 01:58:14,540 Това е много повтарящ тук. 2385 01:58:14,540 --> 01:58:15,940 И това е, наистина, стъпка едно бебе. 2386 01:58:15,940 --> 01:58:19,250 >> Но просто способността да се каже за Онлайн осем, кашлица три пъти, 2387 01:58:19,250 --> 01:58:20,730 това е просто толкова по-разбираемо. 2388 01:58:20,730 --> 01:58:24,210 И, плюс, че не е нужно да знаете или пука как се изпълнява кашлица. 2389 01:58:24,210 --> 01:58:26,460 И наистина, по-късно в Терминът и за окончателните проекти, 2390 01:58:26,460 --> 01:58:29,150 ако се справи с един проект с съученик или две съученици, 2391 01:58:29,150 --> 01:58:32,370 ще разбереш, че ти започваш да се Трябва да, или искате да разделя работата. 2392 01:58:32,370 --> 01:58:34,650 >> И вие ще искате да се реши предварително, кой ще направи това, което, 2393 01:58:34,650 --> 01:58:35,483 и в която парчета? 2394 01:58:35,483 --> 01:58:37,520 И не би ли било хубаво ако, например, 2395 01:58:37,520 --> 01:58:40,100 поемане на отговорност за писане основна, направено. 2396 01:58:40,100 --> 01:58:43,470 И си съквартирант, или си партньор по-общо, 2397 01:58:43,470 --> 01:58:45,230 се грижи за прилагането на кашлица. 2398 01:58:45,230 --> 01:58:49,540 >> И това разделение, те стени на абстракция, 2399 01:58:49,540 --> 01:58:52,310 или слоеве на абстракция ако Ще ви, са супер мощен, 2400 01:58:52,310 --> 01:58:55,480 защото особено за по-голям, по-сложни програми и системи, 2401 01:58:55,480 --> 01:59:00,070 това позволява на много хора да изградят неща заедно, и в крайна сметка 2402 01:59:00,070 --> 01:59:02,680 бод съвместната им работа по този начин. 2403 01:59:02,680 --> 01:59:05,332 Но, разбира се, ние Трябва да сега се определи кашлица. 2404 01:59:05,332 --> 01:59:07,290 Трябва да кажа, кашлица че, хей, знаеш ли какво? 2405 01:59:07,290 --> 01:59:11,230 Ти ще трябва да се вземат input-- така не нищожен, но инт и сега. 2406 01:59:11,230 --> 01:59:15,170 Да вървим напред и пуснати в кашлица на Int. аз стане нула. 2407 01:59:15,170 --> 01:59:16,890 >> I е по-малко от колко пъти. 2408 01:59:16,890 --> 01:59:18,550 Казах три преди. 2409 01:59:18,550 --> 01:59:20,420 Но това не е това, което искам. 2410 01:59:20,420 --> 01:59:25,520 Аз искам кашлица да се обобщи, да поддържа произволен брой повторения. 2411 01:59:25,520 --> 01:59:28,800 >> Така че, наистина, това е п че искам, каквото и потребителят ми казва. 2412 01:59:28,800 --> 01:59:31,620 Сега, аз може да вървим напред и да се каже за печат кашлица. 2413 01:59:31,620 --> 01:59:34,750 И без значение какъв номер потребителят минава, 2414 01:59:34,750 --> 01:59:36,890 Аз ще обхождане, че много пъти. 2415 01:59:36,890 --> 01:59:39,160 >> Така в края на деня, програма е идентична. 2416 01:59:39,160 --> 01:59:42,820 Но забележете всички тези неща дори може да бъде в друг файл. 2417 01:59:42,820 --> 01:59:45,620 Всъщност, аз не знам в миг как ФОРМАТ се изпълнява. 2418 01:59:45,620 --> 01:59:47,980 >> Аз не знам в момента как да получите низ, или да получите INT, или да получите плувка 2419 01:59:47,980 --> 01:59:48,646 са изпълнени. 2420 01:59:48,646 --> 01:59:50,930 И аз не искам да ги виждате на екрана си. 2421 01:59:50,930 --> 01:59:55,320 Както и да е, аз съм се започне да се съсредоточи върху моята програма, а не тези функции. 2422 01:59:55,320 --> 01:59:59,070 >> И така, наистина, веднага след като си започнете факторинг код, подобен на този от, 2423 01:59:59,070 --> 02:00:01,397 Дори може да се движим кашлица в отделен файл? 2424 02:00:01,397 --> 02:00:02,730 Някой друг може да го приложи. 2425 02:00:02,730 --> 02:00:06,810 И вие и вашата програма се превърне в много красива, и много се чете, 2426 02:00:06,810 --> 02:00:10,830 може би, наистина четири Онлайн програма точно там. 2427 02:00:10,830 --> 02:00:13,510 >> Така че нека да вървим напред сега и направи още една промяна. 2428 02:00:13,510 --> 02:00:16,180 Забележете, че ми прототип трябва да се промени до върха. 2429 02:00:16,180 --> 02:00:18,390 Така че нека да се определи, че толкова Аз не се развика. 2430 02:00:18,390 --> 02:00:22,580 >> Направи кашлица, нека тичам кашлица веднъж повече, все още прави същото нещо. 2431 02:00:22,580 --> 02:00:26,010 Но сега, забележете, ние имаме съставка за една последна версия. 2432 02:00:26,010 --> 02:00:26,940 Знаеш ли какво? 2433 02:00:26,940 --> 02:00:29,040 Аз не искам да кашля само, непременно. 2434 02:00:29,040 --> 02:00:30,802 Искам да има нещо по-общо. 2435 02:00:30,802 --> 02:00:31,510 Така ли какво? 2436 02:00:31,510 --> 02:00:32,450 Искам да направя това. 2437 02:00:32,450 --> 02:00:37,140 Аз искам да имам, който много прилича на надраскване прави, а да речем блок, но не само 2438 02:00:37,140 --> 02:00:38,680 каже нещо някакъв брой пъти. 2439 02:00:38,680 --> 02:00:41,510 Искам това да се каже много специфичен низ. 2440 02:00:41,510 --> 02:00:43,850 И, следователно, не знам искам просто да кажа, кашлица. 2441 02:00:43,850 --> 02:00:47,660 Искам тя да каже каквото и низ е преминал инча 2442 02:00:47,660 --> 02:00:49,960 >> Така че забележите, че съм генерализирана това, така че сега 2443 02:00:49,960 --> 02:00:53,110 да речем чувства като добро име за това, като Scratch, 2444 02:00:53,110 --> 02:00:55,530 отнема два аргумента, за разлика от нулата. 2445 02:00:55,530 --> 02:00:56,570 Един от тях е низ. 2446 02:00:56,570 --> 02:00:57,300 Един от тях е едно цяло число. 2447 02:00:57,300 --> 02:00:58,130 >> И мога да ги включите. 2448 02:00:58,130 --> 02:01:00,713 Аз просто нещо като идеята за каже низа първо, и след това 2449 02:01:00,713 --> 02:01:01,940 колко пъти по-късно. 2450 02:01:01,940 --> 02:01:03,970 Void това означава още не връща нищо. 2451 02:01:03,970 --> 02:01:06,428 Това са само визуална страна ефекти, като с [? Йордания,?] 2452 02:01:06,428 --> 02:01:08,240 вербална страничен ефект от викане. 2453 02:01:08,240 --> 02:01:12,630 Той все още прави нещо н пъти, 0 до, но не е равно на п. 2454 02:01:12,630 --> 02:01:14,540 Това означава N Общо пъти. 2455 02:01:14,540 --> 02:01:16,540 И след това просто да отпечатате независимо, че низ е. 2456 02:01:16,540 --> 02:01:19,060 Така че аз съм наистина генерализирана този ред код. 2457 02:01:19,060 --> 02:01:22,460 Така че сега, как да приложат функцията за кашлица? 2458 02:01:22,460 --> 02:01:25,520 >> Мога да направя невалидни кашлица. 2459 02:01:25,520 --> 02:01:28,501 И аз все още могат да се вземат в това как много пъти, които искате да кашля. 2460 02:01:28,501 --> 02:01:29,250 Но знаете ли какво? 2461 02:01:29,250 --> 02:01:31,240 Сега мога да шута да се каже. 2462 02:01:31,240 --> 02:01:36,540 >> Мога да се обадя да кажа с Думата кашлица, преминаваща през п. 2463 02:01:36,540 --> 02:01:40,410 И ако искам да се прилагат, просто за забавление, функция кихане, 2464 02:01:40,410 --> 02:01:42,290 Мога да кихат някои брой пъти. 2465 02:01:42,290 --> 02:01:47,300 И мога да продължа повторно използване на п, защото забележите, че м в този контекст или обхват 2466 02:01:47,300 --> 02:01:49,470 съществува само в рамките на тази функция. 2467 02:01:49,470 --> 02:01:52,767 >> И п в този контекст само съществува в рамките на тази функция тук. 2468 02:01:52,767 --> 02:01:54,600 Така че ние ще се върнем към тези въпроси от обхвата. 2469 02:01:54,600 --> 02:02:01,160 И тук, аз съм просто ще кажа, achoo, и тогава п пъти, точка и запетая. 2470 02:02:01,160 --> 02:02:04,340 >> И сега, аз просто трябва да се заемат тези функции подписи до тук. 2471 02:02:04,340 --> 02:02:06,290 Така че кашлицата е вярна. 2472 02:02:06,290 --> 02:02:10,090 Void кихане е вярна сега. 2473 02:02:10,090 --> 02:02:12,390 >> И аз все още просто трябва да кажа. 2474 02:02:12,390 --> 02:02:18,990 Така че аз ще кажа, да речем низ ите, INT N, точка и запетая. 2475 02:02:18,990 --> 02:02:22,010 Така че аз съм над инженерство на чесало на тази програма. 2476 02:02:22,010 --> 02:02:23,760 >> И това не е така непременно, че това е 2477 02:02:23,760 --> 02:02:26,343 какво трябва да направите, когато пишете дори най-простите програми. 2478 02:02:26,343 --> 02:02:29,280 Вземете нещо, което е очевидно много проста, наистина кратко, 2479 02:02:29,280 --> 02:02:31,800 и повторното изпълнение на това използване на прекалено много код. 2480 02:02:31,800 --> 02:02:34,560 Но вие всъщност ще видите, и в път погледна назад към тези примери, 2481 02:02:34,560 --> 02:02:38,610 усетят, о, това са стъпките, взехме да всъщност правят обобщения, 2482 02:02:38,610 --> 02:02:40,797 да фактор нещо, докато в края на деня 2483 02:02:40,797 --> 02:02:42,380 кода ми всъщност е доста разумно. 2484 02:02:42,380 --> 02:02:45,960 Защото, ако искам да кашля три пъти след това кихат три пъти, 2485 02:02:45,960 --> 02:02:50,420 Аз съм просто ще преиграва това, Програма направи кашлица, и тичам кашлица. 2486 02:02:50,420 --> 02:02:53,620 И аз имам три кашлица и три кихане. 2487 02:02:53,620 --> 02:02:55,990 >> И така, това е основен парадигма, ако щете, 2488 02:02:55,990 --> 02:03:00,110 за това как можем да отида за всъщност се прилага програма. 2489 02:03:00,110 --> 02:03:03,220 Но нека просто видим сега какво е ние сме били прави всичко на този път, 2490 02:03:03,220 --> 02:03:06,940 и това, което някои от най-крайните части са зад тази проста команда. 2491 02:03:06,940 --> 02:03:09,620 В края на деня, ние сме Използвам звън като нашата компилатор. 2492 02:03:09,620 --> 02:03:11,494 Ние сме били писмено източник код, конвертиране го 2493 02:03:11,494 --> 02:03:12,820 чрез звън в машинен код. 2494 02:03:12,820 --> 02:03:15,540 >> И ние сме били с помощта на Направи просто За улеснение на нашите клавиши така 2495 02:03:15,540 --> 02:03:20,740 че ние не трябва да се помни, тези заклинания на себе си звън. 2496 02:03:20,740 --> 02:03:22,640 Но това, което е Направи всъщност прави? 2497 02:03:22,640 --> 02:03:24,750 И, от своя страна, това, което е Звън всъщност прави? 2498 02:03:24,750 --> 02:03:28,790 >> Оказва се, че ние сме опростени днешната дискусия, като казва, 2499 02:03:28,790 --> 02:03:33,090 вземете изходния код, да го давате като въвеждане на компилатор, който дава 2500 02:03:33,090 --> 02:03:35,750 изхода на машината код, оказва се, че има 2501 02:03:35,750 --> 02:03:37,420 няколко различни стъпки вътре има. 2502 02:03:37,420 --> 02:03:41,940 И съставяне случва да бъде чадъра термин за цял куп стъпки. 2503 02:03:41,940 --> 02:03:43,970 Но нека просто дразни това се наистина бързо. 2504 02:03:43,970 --> 02:03:48,070 >> Оказва се, че ние сме били прави повече неща, всеки път, когато стартирате програмата, 2505 02:03:48,070 --> 02:03:50,990 или всеки път, когато се състави програма днес. 2506 02:03:50,990 --> 02:03:55,020 Така предварителна обработка се отнася до this-- нищо в програма на С, 2507 02:03:55,020 --> 02:03:58,720 както ще видим отново и отново, който започва с тази хеш символ, 2508 02:03:58,720 --> 02:04:03,320 или символ таг тук, означава, това е директива на предпроцесорни. 2509 02:04:03,320 --> 02:04:07,330 Това означава, че, в този случай, хей компютър, направи нещо с този файл 2510 02:04:07,330 --> 02:04:09,430 преди да се съберат моя собствен код. 2511 02:04:09,430 --> 02:04:15,220 >> В този случай, хеш включва означава, същество, начин да се каже на C, 2512 02:04:15,220 --> 02:04:19,325 хей компютър, иди се съдържанието на CS50.h и ги поставете тук. 2513 02:04:19,325 --> 02:04:22,170 Ей компютър, отидете получите съдържание на стандартен IO.h, 2514 02:04:22,170 --> 02:04:24,690 където и че е на твърд диск, го поставете тук. 2515 02:04:24,690 --> 02:04:27,390 Така че тези неща се случват първо време предварителна обработка. 2516 02:04:27,390 --> 02:04:28,880 >> И звън прави всичко това за нас. 2517 02:04:28,880 --> 02:04:30,510 И това го прави толкова дяволски бързо, не е нужно дори 2518 02:04:30,510 --> 02:04:32,000 виж четири различни неща, които се случват. 2519 02:04:32,000 --> 02:04:34,100 Но това е първата подобна стъпка. 2520 02:04:34,100 --> 02:04:35,560 >> Какво всъщност се случва след това? 2521 02:04:35,560 --> 02:04:38,320 Е, на следващия длъжностното стъпка е съставянето. 2522 02:04:38,320 --> 02:04:40,385 И се оказва, че съставяне на програма 2523 02:04:40,385 --> 02:04:44,060 технически средства става от изходен код, нещата, които съм 2524 02:04:44,060 --> 02:04:47,890 пише днес, за нещо наречена монтаж код, нещо 2525 02:04:47,890 --> 02:04:49,260 че изглежда малко по-различно. 2526 02:04:49,260 --> 02:04:51,050 >> И в действителност, ние можем да видим това доста бързо. 2527 02:04:51,050 --> 02:04:53,890 Нека действително отиде в моя IDE. 2528 02:04:53,890 --> 02:04:58,050 Нека да вървим напред и отворен hello.c, които е първата програма, с която ние 2529 02:04:58,050 --> 02:04:59,120 започва днес. 2530 02:04:59,120 --> 02:05:04,130 И нека да вървим напред и да тичам звън на малко по-различно, звън-ите, hello.c, 2531 02:05:04,130 --> 02:05:07,720 което всъщност ще дайте ми друг файл hello.s. 2532 02:05:07,720 --> 02:05:10,330 >> И ние може би никога няма да отново видя този вид код. 2533 02:05:10,330 --> 02:05:13,030 Ако сте приели по-ниско ниво системи клас като CS61, 2534 02:05:13,030 --> 02:05:14,920 вие ще видите много повече на този вид на код. 2535 02:05:14,920 --> 02:05:17,020 Но това е асемблер. 2536 02:05:17,020 --> 02:05:22,050 Това е X86 асемблер че процесора, който е в основата 2537 02:05:22,050 --> 02:05:24,460 CS50 IDE всъщност разбира. 2538 02:05:24,460 --> 02:05:27,060 >> И загадъчен, както го прави изглежда, че е нещо, 2539 02:05:27,060 --> 02:05:29,180 компютърът разбира доста добре. 2540 02:05:29,180 --> 02:05:30,790 Под Q, това е изваждане. 2541 02:05:30,790 --> 02:05:31,660 Има движения. 2542 02:05:31,660 --> 02:05:35,730 >> Там се обажда на функции тук, х oring, едно движение, една добавка, поп, 2543 02:05:35,730 --> 02:05:36,430 връщане. 2544 02:05:36,430 --> 02:05:38,850 Така че има някои много инструкции ниско ниво 2545 02:05:38,850 --> 02:05:41,280 че процесорите да разберат, че Аз споменах по-рано. 2546 02:05:41,280 --> 02:05:43,100 Това е, което Intel Inside. 2547 02:05:43,100 --> 02:05:45,030 >> Има модели на нули и единици, които 2548 02:05:45,030 --> 02:05:51,800 Карта на тези arcanely формулирана, но донякъде добре име, инструкции, 2549 02:05:51,800 --> 02:05:52,780 така да се каже. 2550 02:05:52,780 --> 02:05:54,780 Това е, което се случва, когато компилирате кода си. 2551 02:05:54,780 --> 02:05:58,560 Можете да получите монтаж език от това, което 2552 02:05:58,560 --> 02:06:04,680 означава Третата стъпка е да се съберат че сглобяване код в крайна сметка, 2553 02:06:04,680 --> 02:06:09,080 машини code-- нули и единици, не на текст, който ние просто видях преди малко. 2554 02:06:09,080 --> 02:06:13,370 >> Така предварителна обработка се, че се намери и замени, и няколко други неща. 2555 02:06:13,370 --> 02:06:16,430 Съставяне поема своя източник код от C, изходния код 2556 02:06:16,430 --> 02:06:18,980 че сме писали, да сглобяване код, който ние просто погледна. 2557 02:06:18,980 --> 02:06:22,170 Сглобяване отнема че сглобяване код за нули и единици 2558 02:06:22,170 --> 02:06:24,680 че процесора наистина ще разбере в края на деня. 2559 02:06:24,680 --> 02:06:27,630 И свързване е последната стъпка , което се случва за us-- отново, 2560 02:06:27,630 --> 02:06:29,830 толкова бързо, ние дори не notice--, която казва, 2561 02:06:29,830 --> 02:06:32,460 хей компютър, да вземе всички единиците и нулите, че 2562 02:06:32,460 --> 02:06:36,750 е резултат от съставянето на код на Давид, и основната му функция в този случай. 2563 02:06:36,750 --> 02:06:39,160 >> И хей ​​компютър, иди всички от единиците и нулите 2564 02:06:39,160 --> 02:06:42,180 че персоналът CS50 пише вътре в библиотеката CS50. 2565 02:06:42,180 --> 02:06:43,440 Смесете тези в с Дейвид. 2566 02:06:43,440 --> 02:06:46,648 И хей ​​компютър, отидете получите всички нули и такива, които някой друг е написал години 2567 02:06:46,648 --> 02:06:47,470 Преди за ФОРМАТ. 2568 02:06:47,470 --> 02:06:49,880 И добавите тези в цялата работа, така че ние сме 2569 02:06:49,880 --> 02:06:52,870 Трябва ми нули и единици, за нули и единици персонала CS50, 2570 02:06:52,870 --> 02:06:55,370 нулите на ФОРМАТ и тези, и всичко друго, което използваме. 2571 02:06:55,370 --> 02:07:00,410 >> Всички те се комбинират заедно в едно програма, наречена, в този случай, здравей. 2572 02:07:00,410 --> 02:07:03,141 Така че отсега нататък, ние просто ще използвайте дума съставянето. 2573 02:07:03,141 --> 02:07:06,390 И ние ще приемем за даденост, че когато ние казваме, компилирате вашата програма, това означава, 2574 02:07:06,390 --> 02:07:08,849 хей направя предварителната обработка, монтаж и свързване. 2575 02:07:08,849 --> 02:07:11,890 Но всъщност има някои сочни неща става там под предния капак. 2576 02:07:11,890 --> 02:07:13,723 И особено ако получите любопитни известно време, 2577 02:07:13,723 --> 02:07:15,900 можете да започнете да изпълзяват около в тази по-ниско ниво. 2578 02:07:15,900 --> 02:07:19,660 Но за сега, да разбере, че сред храна за вкъщи за днес 2579 02:07:19,660 --> 02:07:23,420 са просто най- началото на процеса, 2580 02:07:23,420 --> 02:07:26,700 за получаване на комфортно с нещо като здравей свят. 2581 02:07:26,700 --> 02:07:29,575 Всъщност, повечето от това, което направихме днес със сигурност няма да потъне в супер бързо. 2582 02:07:29,575 --> 02:07:31,491 И това ще отнеме известно време, а някои практики. 2583 02:07:31,491 --> 02:07:33,864 И шансовете са, че ще се справи от искаме да удари вашата клавиатура 2584 02:07:33,864 --> 02:07:34,780 или крещи на екрана. 2585 02:07:34,780 --> 02:07:35,880 И всичко това е ОК. 2586 02:07:35,880 --> 02:07:38,320 Макар, че може би не се опитват да го направи в библиотеката толкова много. 2587 02:07:38,320 --> 02:07:40,820 >> И в крайна сметка, ще бъде в състояние все пак, за да започнете 2588 02:07:40,820 --> 02:07:44,580 виждайки модели, както в добро код че вие ​​сте писали и в грешки 2589 02:07:44,580 --> 02:07:45,370 че сте направили. 2590 02:07:45,370 --> 02:07:48,965 И много прилича на процеса на стане TF или CA е като, 2591 02:07:48,965 --> 02:07:51,590 ще започне да се получи по-добре и по-добре, когато видя тези модели, 2592 02:07:51,590 --> 02:07:53,774 и точно решаване на вашия собствени проблеми в крайна сметка. 2593 02:07:53,774 --> 02:07:56,940 В същото време, ще има много на нас, за да заемаш ви подкрепа, и ще получите 2594 02:07:56,940 --> 02:07:57,481 чрез това. 2595 02:07:57,481 --> 02:07:59,450 И в писане прозорци за всички проблеми 2596 02:07:59,450 --> 02:08:01,366 ще ви бъдат преведени през всички команди 2597 02:08:01,366 --> 02:08:05,330 че аз със сигурност знам от много практика до сега, 2598 02:08:05,330 --> 02:08:07,380 но може да е летял над главата за сега. 2599 02:08:07,380 --> 02:08:08,580 И това е напълно наред. 2600 02:08:08,580 --> 02:08:11,230 >> Но, в крайна сметка, ти започваш да започне да видите модели се появяват. 2601 02:08:11,230 --> 02:08:14,260 И след като преминем през всички по- глупави подробности, като скоби, 2602 02:08:14,260 --> 02:08:16,710 и фигурни скоби, и точка и запетая, и неща, честно казано, 2603 02:08:16,710 --> 02:08:19,360 че изобщо не е интелектуално интересен. 2604 02:08:19,360 --> 02:08:22,690 И това не е целта на като всяка уводна клас. 2605 02:08:22,690 --> 02:08:24,410 Това е идеите, които се случва да има значение. 2606 02:08:24,410 --> 02:08:26,659 >> Това е примките, и условия и функциите, 2607 02:08:26,659 --> 02:08:30,552 и по-силно черпене, и факторинга на код, 2608 02:08:30,552 --> 02:08:33,510 и добър дизайн, и за доброто стил, и в крайна сметка на точността 2609 02:08:33,510 --> 02:08:37,330 на кода си, че това е в крайна сметка Ще има значение най-много. 2610 02:08:37,330 --> 02:08:40,925 Така че през следващата седмица, ние ще вземем тези идеи, които за първи път се видяхме в Scratch 2611 02:08:40,925 --> 02:08:42,800 и сега са преведени да C. И ние ще започнем 2612 02:08:42,800 --> 02:08:45,740 да се въведе първият от реалния свят домейни курса. 2613 02:08:45,740 --> 02:08:50,140 >> Ние ще се съсредоточим върху света на сигурността, и по-специално криптография, 2614 02:08:50,140 --> 02:08:51,980 изкуството на кодиране на информация. 2615 02:08:51,980 --> 02:08:54,000 И сред първите проблеми ти сам 2616 02:08:54,000 --> 02:08:56,840 Ще си да напише отвъд играе с някои от синтаксиса 2617 02:08:56,840 --> 02:08:59,880 и решаване на някои логически проблеми, в крайна сметка след дълго, 2618 02:08:59,880 --> 02:09:03,960 е действително да се катеря, или криптиране, и в крайна сметка да декриптира информация. 2619 02:09:03,960 --> 02:09:06,470 И всичко, което сме направили Днес, по-скоро ще ниско 2620 02:09:06,470 --> 02:09:09,190 ниво, е просто ще позволи нас, за да вземе един, и един, 2621 02:09:09,190 --> 02:09:13,550 и още една стъпка по-горе към написването на най-интересното кода си. 2622 02:09:13,550 --> 02:09:15,050 >> Така че повече от това през следващата седмица. 2623 02:09:15,050 --> 02:09:17,834 2624 02:09:17,834 --> 02:09:18,762 >> [Възпроизвеждане на видео] 2625 02:09:18,762 --> 02:09:19,690 2626 02:09:19,690 --> 02:09:22,006 >> -Какво Може да ми кажете за последния път, когато го видя? 2627 02:09:22,006 --> 02:09:26,041 2628 02:09:26,041 --> 02:09:27,040 -Какво Мога да кажа, наистина? 2629 02:09:27,040 --> 02:09:30,500 2630 02:09:30,500 --> 02:09:35,340 Искам да кажа, че е като всяка друга предварително производство репетиция, 2631 02:09:35,340 --> 02:09:40,510 освен там беше нещо, което той каза, в самия край, който остана с мен. 2632 02:09:40,510 --> 02:09:44,810 2633 02:09:44,810 --> 02:09:46,640 >> -Това Е CS50. 2634 02:09:46,640 --> 02:09:49,440 2635 02:09:49,440 --> 02:09:52,190 >> -Това Е нарязан на всички, чудесна работа по репетиция. 2636 02:09:52,190 --> 02:09:53,070 >> обяд -Това е? 2637 02:09:53,070 --> 02:09:54,986 >> -Да, Ти и аз мога вземете сандвич в малко. 2638 02:09:54,986 --> 02:09:58,380 Нека само да разпиташ с Дейвид наистина бързо. 2639 02:09:58,380 --> 02:09:59,160 Дейвид? 2640 02:09:59,160 --> 02:10:01,260 Дейвид? 2641 02:10:01,260 --> 02:10:03,110 >> [END PLAYBACK]