1 00:00:00,000 --> 00:00:03,353 >> [Музички] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 Дејвид MALAN: Здраво на сите. 4 00:00:06,050 --> 00:00:07,777 Ова е supersection CS50 е. 5 00:00:07,777 --> 00:00:09,860 Доделени Секции нема да почне уште една недела. 6 00:00:09,860 --> 00:00:11,580 И така денес, јас сум тука with-- 7 00:00:11,580 --> 00:00:12,122 >> МАРИЈА: Марија. 8 00:00:12,122 --> 00:00:14,163 Дејвид MALAN: --to всушност погледнеме проблемот 9 00:00:14,163 --> 00:00:16,110 постави една, на курсот првите недели на материјалот, 10 00:00:16,110 --> 00:00:19,780 ти се ориентирани со CS50 ИРО, малку на Linux, оперативниот систем кој е 11 00:00:19,780 --> 00:00:22,290 се извршува на IDE, како и погледнеме некои од транзицијата 12 00:00:22,290 --> 00:00:25,730 од нула до C водечка до проблем во собата еден. 13 00:00:25,730 --> 00:00:28,340 >> Значи без понатамошно ado, во еден проблем во собата, 14 00:00:28,340 --> 00:00:30,520 си оди за да биде воведен за да CS50 ИРО, која 15 00:00:30,520 --> 00:00:33,230 е овој веб-базирани програмирање животната средина кои ги користат со цел 16 00:00:33,230 --> 00:00:34,280 да им пишуваат програми. 17 00:00:34,280 --> 00:00:37,280 Тоа е дизајниран да изгледа многу потсетува на еден типичен компјутер 18 00:00:37,280 --> 00:00:39,430 систем кој работи на оперативниот систем наречен Линукс. 19 00:00:39,430 --> 00:00:42,440 Но, тоа е во т.н. облак, што значи дека сите во класот 20 00:00:42,440 --> 00:00:45,100 всушност може да има неговата или нејзината своја сметка, а го користат, како и. 21 00:00:45,100 --> 00:00:48,950 >> Па повеќето од вас веројатно никогаш не се користи Линукс животната средина пред или можеби 22 00:00:48,950 --> 00:00:50,447 дури и командната линија на животната средина. 23 00:00:50,447 --> 00:00:52,280 И командната линија околина е различна. 24 00:00:52,280 --> 00:00:53,200 Тоа е за сите текстуални. 25 00:00:53,200 --> 00:00:54,730 Сето тоа е тастатура команди. 26 00:00:54,730 --> 00:00:59,480 А не е ни mousing, нема икони, нема дијалог прозорците, немаше менија. 27 00:00:59,480 --> 00:01:00,212 Тоа е чисто текст. 28 00:01:00,212 --> 00:01:01,920 Така на прв, тој вид на чувствувам како чекор 29 00:01:01,920 --> 00:01:04,434 назад во поглед на софистицираност. 30 00:01:04,434 --> 00:01:06,600 Но тоа завршува се многу помоќен, секако, 31 00:01:06,600 --> 00:01:08,510 за компјутерски научник, во крајна линија. 32 00:01:08,510 --> 00:01:09,540 >> Па ајде да ги разгледаме. 33 00:01:09,540 --> 00:01:13,850 Јас сум тука на CS50.io, преку кој можете да влезете во CS50 ИРО. 34 00:01:13,850 --> 00:01:17,414 И многу сличен на гребење, има три основни области на овој екран. 35 00:01:17,414 --> 00:01:20,080 Така, на левата страна, имаме она што ќе биде прелистувачот на датотеки. 36 00:01:20,080 --> 00:01:22,413 И има во оваа папка врвот, кој е во моментов празна 37 00:01:22,413 --> 00:01:24,690 бидејќи јас се ослободи од сите мои додадени фајлови: пред supersection. 38 00:01:24,690 --> 00:01:27,599 И тоа е каде што ние ќе спаси Ц датотеки кои ги пишувам. 39 00:01:27,599 --> 00:01:30,890 Во горниот десен агол, имаме место каде сите наши код се случува да се пишува. 40 00:01:30,890 --> 00:01:34,610 И, навистина, ако јас кликнете на ова, плус, ова се случува да ми дозволи да се избере нова датотека. 41 00:01:34,610 --> 00:01:38,310 И тука јас да почнете со пишување на код или Ц, навистина, било кој број на други јазици. 42 00:01:38,310 --> 00:01:42,670 >> А потоа на дното каде што се вели jharvard @ ide50-- и твое ќе 43 00:01:42,670 --> 00:01:45,080 кажам нешто малку different-- она ​​што се нарекува овој? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Терминален прозорец. 46 00:01:49,310 --> 00:01:49,570 Је. 47 00:01:49,570 --> 00:01:51,810 Па на прозорецот на терминалот е т.н. командната линија 48 00:01:51,810 --> 00:01:55,540 интерфејс преку кој може да комуницирате со основните оперативен систем. 49 00:01:55,540 --> 00:01:58,220 И сега за сега, ние ќе треба да направи многу малку употреба на this-- 50 00:01:58,220 --> 00:02:01,170 само за да ги собере, да се погледне во пораки за грешки, кои ги гледаме, 51 00:02:01,170 --> 00:02:02,347 и да се кандидира на нашите програми. 52 00:02:02,347 --> 00:02:04,680 Но на крајот, ние ќе да се направи многу повеќе, како и. 53 00:02:04,680 --> 00:02:07,490 И може дури да се инсталира софтвер и администрирање на вашиот работен простор 54 00:02:07,490 --> 00:02:09,066 рок CS50 ИРО, како и. 55 00:02:09,066 --> 00:02:10,440 Но повеќе за тоа друг пат. 56 00:02:10,440 --> 00:02:12,689 >> Значи, да се оди напред и да се напише многу едноставна програма само 57 00:02:12,689 --> 00:02:15,064 да се оди преку загревање на hello.c, што можеби е 58 00:02:15,064 --> 00:02:16,480 наједноставниот програма може да се напише. 59 00:02:16,480 --> 00:02:18,330 Јас веќе се отвори нов таб. 60 00:02:18,330 --> 00:02:24,310 Одам да се оди напред и да велат вклучуваат стандардни io.h. 61 00:02:24,310 --> 00:02:25,325 Тогаш int главната (празно). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 А потоа printf ("Здраво, свет" обратна коса црта n, во близина понуда, 64 00:02:35,200 --> 00:02:39,480 блиску заграда, и точка-запирка. 65 00:02:39,480 --> 00:02:39,990 >> Во ред. 66 00:02:39,990 --> 00:02:41,700 Па сега се забележи мојот прозорец е наслов. 67 00:02:41,700 --> 00:02:44,840 Па јас сум многу брзо одење да се оди до фајл, зачувајте. 68 00:02:44,840 --> 00:02:46,910 И тоа е важно Ве повикувам да не овој "здраво". 69 00:02:46,910 --> 00:02:49,243 Толку многу честа грешка, особено во еден проблем во собата, 70 00:02:49,243 --> 00:02:52,530 е да се случајно само да се јавите на вашиот Програмата "вода" или "алчен" или "Марио" 71 00:02:52,530 --> 00:02:53,890 или "кредит" или слично. 72 00:02:53,890 --> 00:02:55,970 Но вие всушност сакате да се направи Дали сте сигурни дека имаат наставката на датотеката 73 00:02:55,970 --> 00:02:58,928 бидејќи ова е единствениот начин на кој компајлерот и и уредник код 74 00:02:58,928 --> 00:03:00,710 знае дека ти си всушност пишување C код. 75 00:03:00,710 --> 00:03:02,280 Па дозволете ми да оди напред и да кликнете на Зачувај. 76 00:03:02,280 --> 00:03:05,710 >> И сега, исто така, она што CS50 ИРО го направи за нас е тоа е, исто така, 77 00:03:05,710 --> 00:03:07,120 синтакса истакна сè. 78 00:03:07,120 --> 00:03:08,822 Така, тоа е направено се што е многу шарени. 79 00:03:08,822 --> 00:03:10,780 И целта на целата дека не е функционална. 80 00:03:10,780 --> 00:03:14,290 Тоа е само да се привлече очите кон концептуално различни парчиња 81 00:03:14,290 --> 00:03:15,310 на оваа програма. 82 00:03:15,310 --> 00:03:17,570 Значи, да се оди напред и да ги собере на оваа. 83 00:03:17,570 --> 00:03:19,490 И можам да ги собере на оваа во неколку начини. 84 00:03:19,490 --> 00:03:22,010 И во една недела, старата школа начин што го направивме 85 00:03:22,010 --> 00:03:26,250 тоа беше буквално на команда line-- "ѕвекот hello.c." 86 00:03:26,250 --> 00:03:27,596 И јас тогаш притиснете Enter. 87 00:03:27,596 --> 00:03:29,720 И ништо не чини да се случи во терминален прозорец. 88 00:03:29,720 --> 00:03:32,654 Но, она што го направи промена во IDE? 89 00:03:32,654 --> 00:03:35,320 Каде што, пак, ИРО само значи Интегриран развој на животната средина. 90 00:03:35,320 --> 00:03:38,360 Тоа е фенси начин да се каже овој интегриран развој 91 00:03:38,360 --> 00:03:40,620 средина за развој на софтвер. 92 00:03:40,620 --> 00:03:42,477 Значи она што не се промени во корисничкиот интерфејс? 93 00:03:42,477 --> 00:03:44,310 Што ќе забележите што е различно, Марија? 94 00:03:44,310 --> 00:03:47,100 >> МАРИЈА: јас забележав нешто под IDE50 папката до тука. 95 00:03:47,100 --> 00:03:47,850 >> Дејвид MALAN: Да. 96 00:03:47,850 --> 00:03:50,230 Значи до тука, не само дали имаме "hello.c." 97 00:03:50,230 --> 00:03:53,120 Ние исто така имаме "a.out", која е вид на нем име за програмата. 98 00:03:53,120 --> 00:03:56,430 Но, навистина, тоа е стандардно име за програма, кога вие само компајлирате вашиот код 99 00:03:56,430 --> 00:03:59,110 и да не кажам на компајлерот она датотека на излез. 100 00:03:59,110 --> 00:04:01,790 Па ако сакате да ја извршите оваа, јас треба да му кажете на compiler-- 101 00:04:01,790 --> 00:04:05,340 или подобро, јас треба да се каже на работниот простор што јас 102 00:04:05,340 --> 00:04:09,780 сакате да ја извршите програмата наречена "a.out". 103 00:04:09,780 --> 00:04:10,550 Влезе. 104 00:04:10,550 --> 00:04:12,474 И таму е "Здраво, светот. "сега" ./ ". 105 00:04:12,474 --> 00:04:13,390 е всушност важно. 106 00:04:13,390 --> 00:04:16,050 Иако нормално ние само напише имињата на команди, 107 00:04:16,050 --> 00:04:19,060 кога тоа е програма сте напишано, вие не сакате да се каже "./" 108 00:04:19,060 --> 00:04:22,460 бидејќи тоа експлицитно кажува Линукс што сакате да ја извршите програмата наречена 109 00:04:22,460 --> 00:04:26,930 "a.out" тоа е во овој, каде што точката значи овој директориум дека јас сум во моментов 110 00:04:26,930 --> 00:04:31,600 во кој се случува да биде простор наречен "a.out. 111 00:04:31,600 --> 00:04:35,410 Затоа што ако јас само рече "a.out" Enter, Одам да се добие "a.out команда не 112 00:04:35,410 --> 00:04:38,035 пронајдени ", бидејќи computer-- бидејќи јас измислена "a.out;" 113 00:04:38,035 --> 00:04:40,910 тоа не дојде со computer-- не знаат каде да се погледне за неа, 114 00:04:40,910 --> 00:04:43,590 и покрај тоа што е во право под нос, така да се каже. 115 00:04:43,590 --> 00:04:44,090 ВО РЕД. 116 00:04:44,090 --> 00:04:49,910 За да можеме да го промените ова биде "ѕвекот -o здраво hello.c." 117 00:04:49,910 --> 00:04:53,030 И ако јас притиснете ентер, што програма е ова се случува за излез за мене? 118 00:04:53,030 --> 00:04:55,710 Кое е името на датотеката? 119 00:04:55,710 --> 00:04:57,500 Да, во грбот. 120 00:04:57,500 --> 00:04:58,479 Тоа е точно. "Здраво". 121 00:04:58,479 --> 00:05:00,520 Па "Здраво", се случува да биде името на програмата 122 00:05:00,520 --> 00:05:04,610 затоа што ние сме се користи т.н. аргумент командната линија, што е само 123 00:05:04,610 --> 00:05:08,120 начин на менување на однесувањето на компајлерот да всушност излез 124 00:05:08,120 --> 00:05:09,450 специфично име на датотека. 125 00:05:09,450 --> 00:05:12,400 И, навистина, ако можам да зумирате надвор и да се погледне до тука, 126 00:05:12,400 --> 00:05:17,430 сега имам само "a.out" и "hello.c", но, исто така, "Здраво", како и. 127 00:05:17,430 --> 00:05:22,410 Па сега можам да го направам "./hello" Enter. 128 00:05:22,410 --> 00:05:23,640 И таму е "Здраво, свет". 129 00:05:23,640 --> 00:05:25,640 Но lastly-- и ова сега ќе биде на конгресот 130 00:05:25,640 --> 00:05:27,590 ние ги користиме во текот на семестар, typically-- 131 00:05:27,590 --> 00:05:30,070 е исто така можете само велат "направи здраво". 132 00:05:30,070 --> 00:05:33,370 И навистина, тоа е велејќи дека е до до денес, бидејќи тоа веќе постои. 133 00:05:33,370 --> 00:05:37,860 Дозволете ми да оди напред и да се отстранат, со команда РМ, и двете "a.out" - 134 00:05:37,860 --> 00:05:39,644 и да каже "да ги отстрани обична датотека a.out?" 135 00:05:39,644 --> 00:05:41,810 Тоа само значи дека, вие сте Дали сте сигурни дека сакате да ја избришете? 136 00:05:41,810 --> 00:05:42,880 Одам да се каже да. 137 00:05:42,880 --> 00:05:46,690 А потоа јас ќе одам да се отстрани "Здраво", но не и "hello.c." 138 00:05:46,690 --> 00:05:49,920 Одам да се каже "да" експлицитно, но "y" е доволно, исто така. 139 00:05:49,920 --> 00:05:52,140 >> И сега се забележи ако јас напишете ls-- која, да се потсетиме, 140 00:05:52,140 --> 00:05:55,540 значи list-- што ги прикажува сите на датотеки во мојата папка. 141 00:05:55,540 --> 00:05:57,850 И, навистина, ако можам да зумирате надвор и да се погледне во горниот лев агол, 142 00:05:57,850 --> 00:05:59,730 потврдува дека она што е во оваа папка, дури и 143 00:05:59,730 --> 00:06:04,990 иако тоа е етикетиран како IDE50 се тука и нема простор за работа, тоа е само "hello.c." 144 00:06:04,990 --> 00:06:09,152 Па сега овде, ако јас се "направи здраво", Внесете, 145 00:06:09,152 --> 00:06:12,360 сега гледам многу подолг команда, туку пософистицирани команда кој ќе 146 00:06:12,360 --> 00:06:13,940 за да бидат корисни во неделите што доаѓаат. 147 00:06:13,940 --> 00:06:16,720 И сега можам да кажам "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Значи, да се земе брз турнеја некои други Линукс команди. 149 00:06:19,257 --> 00:06:21,840 Тогаш зошто да не се преземе чекор врати и всушност поглед на C повеќе 150 00:06:21,840 --> 00:06:25,020 генерално, транзиција од нула до C, а потоа заврши со изгледот 151 00:06:25,020 --> 00:06:27,305 на првиот проблем поставени во C. Во ред. 152 00:06:27,305 --> 00:06:30,430 Па јас ќе одам да се оди напред и само се чисти до просторот за работа ми со Control-L само 153 00:06:30,430 --> 00:06:31,429 да се задржи на екранот уредни. 154 00:06:31,429 --> 00:06:33,520 Но дека нема функционални влијаат на друг начин. 155 00:06:33,520 --> 00:06:35,820 >> Потсетиме дека ние сме виделе неколку команди сега. 156 00:06:35,820 --> 00:06:39,900 Значи ние сме виделе ѕвекот, кои генерално ќе се не ќе мора да се изврши рачно повеќе. 157 00:06:39,900 --> 00:06:41,650 Наместо тоа, ние ќе го користите шминка. 158 00:06:41,650 --> 00:06:45,290 Но, ние исто така, видов ls, што покажува листата на датотеки во мојата листа. 159 00:06:45,290 --> 00:06:48,750 И сега, зошто е there-- има две додадени фајлови: сега, "Здраво" и "hello.c." 160 00:06:48,750 --> 00:06:52,240 Зошто постои ѕвезда или ѕвездичка после "здраво"? 161 00:06:52,240 --> 00:06:54,900 Што мислел кои означуваат, врз од она што го видовме во една недела? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Што мислиш? 164 00:07:00,400 --> 00:07:02,742 Што значи ѕвездата означува? 165 00:07:02,742 --> 00:07:04,614 >> МАРИЈА: For-- програмата "здраво"? 166 00:07:04,614 --> 00:07:05,530 Дејвид MALAN: "Здраво *". 167 00:07:05,530 --> 00:07:06,330 Је. 168 00:07:06,330 --> 00:07:07,760 О да? 169 00:07:07,760 --> 00:07:08,639 Ох, извршна. 170 00:07:08,639 --> 00:07:09,180 Тоа е точно. 171 00:07:09,180 --> 00:07:10,890 Па тоа значи дека "Здраво" е извршна. 172 00:07:10,890 --> 00:07:13,430 Значи, навистина, тоа е зошто Можам да направам "./hello." 173 00:07:13,430 --> 00:07:13,930 Во ред. 174 00:07:13,930 --> 00:07:15,179 Па што друго можам да направам во оваа ситуација? 175 00:07:15,179 --> 00:07:17,290 Па, излегува можам исто така да креирате директориуми. 176 00:07:17,290 --> 00:07:20,924 Па дозволете ми да оди напред и да се создаде, на пример, "pset1" директориум. 177 00:07:20,924 --> 00:07:23,590 И спецификацијата проблем во собата ќе мора да го прават токму тоа, 178 00:07:23,590 --> 00:07:25,260 така да не мора да се сеќавам и денес. 179 00:07:25,260 --> 00:07:27,340 Но "mkdir pset1", се чини нема да има влијание. 180 00:07:27,340 --> 00:07:30,540 Но, повторно, нема порака за грешка е генерално добра работа. 181 00:07:30,540 --> 00:07:34,060 Значи, ако јас напишете "ls" now-- ах, сега Имам извршна датотека наречена 182 00:07:34,060 --> 00:07:36,570 "Здраво", на датотеката C наречен "hello.c." 183 00:07:36,570 --> 00:07:40,860 А потоа и коса црта на крајот, така да зборуваат, значи дека ова е директориум. 184 00:07:40,860 --> 00:07:42,510 >> Значи, навистина, сега сакам да го отворите. 185 00:07:42,510 --> 00:07:45,730 И не ми е двоен клик на неа, како во GUI, графичка околина. 186 00:07:45,730 --> 00:07:48,550 Јас наместо да каже "cd pset1." 187 00:07:48,550 --> 00:07:49,640 Влезе. 188 00:07:49,640 --> 00:07:53,100 Ништо интересно се чини дека има се случи, освен моето мало навремена 189 00:07:53,100 --> 00:07:57,300 here-- ова е начин на потсетување на Линукс мене каде што сум, па што папка е отворен. 190 00:07:57,300 --> 00:08:00,080 Тоа е само да ми каже експлицитно што е спротивно на графички. 191 00:08:00,080 --> 00:08:05,100 И ако јас напишете "ls", зошто гледам друг го извести веднаш, мислите, 192 00:08:05,100 --> 00:08:07,269 кога ќе се листа на содржината на pset1? 193 00:08:07,269 --> 00:08:09,310 МАРИЈА: Најверојатно не има нешто таму. 194 00:08:09,310 --> 00:08:09,630 Дејвид MALAN: Да. 195 00:08:09,630 --> 00:08:11,510 Па тогаш не сме очигледно создаде нешто таму 196 00:08:11,510 --> 00:08:13,150 бидејќи јас само создаде именикот. 197 00:08:13,150 --> 00:08:17,690 Сега, ако сакав да се создаде file-- за На пример, јас би можеле да креирате нова датотека. 198 00:08:17,690 --> 00:08:20,190 И тогаш би можел да оди на Спаси и спаси како, 199 00:08:20,190 --> 00:08:23,090 како, "mario.c" ако правиш Стандардното издание на pset еден. 200 00:08:23,090 --> 00:08:27,610 А потоа, како и секој Mac или PC, само изберете ја папката "pset1, Save. 201 00:08:27,610 --> 00:08:28,740 И сега на датотека е празна. 202 00:08:28,740 --> 00:08:31,160 Но, ајде да зумирате повторно за една секунда. 203 00:08:31,160 --> 00:08:32,470 Ајде да го направиме ls тука. 204 00:08:32,470 --> 00:08:34,470 Сега можеме да видиме "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Па има неколку други команди кои вреди да се имајќи на ум во текот time-- 206 00:08:37,850 --> 00:08:41,200 јасно, или контрола-L е она што сум е удирање; mkdir сме виделе; 207 00:08:41,200 --> 00:08:45,240 РМ што сум го видел, како и, што е за отстранување или бришење на датотеки. 208 00:08:45,240 --> 00:08:49,310 Пазете можете да also-- и ако се погледне на онлајн вежби, ќе РМ -rf 209 00:08:49,310 --> 00:08:52,630 е многу заеднички начин да се каже избришете фолдер кој има работи во неа. 210 00:08:52,630 --> 00:08:54,280 Само да се биде супер, супер внимателни. 211 00:08:54,280 --> 00:08:58,780 -rf значи рекурзивно избришете што и да е 212 00:08:58,780 --> 00:09:01,150 што се обидувате да ги избришете и насилно ја избришете. 213 00:09:01,150 --> 00:09:04,630 Па рекурзивен средство ако тоа е папка со папка со папка со папка, 214 00:09:04,630 --> 00:09:05,690 избришете сите од нив. 215 00:09:05,690 --> 00:09:08,680 И насилно значи дури и не ме праша да или не, дали сум сигурна? 216 00:09:08,680 --> 00:09:11,960 Па тоа е супер опасен начин на бришење на многу работи брзо. 217 00:09:11,960 --> 00:09:17,210 Но beware-- премногу често го прави смел студент случајно бришење, да речеме, pset 218 00:09:17,210 --> 00:09:18,000 еден, на пример. 219 00:09:18,000 --> 00:09:19,833 >> МАРИЈА: И ако тие само направи -r, тие се случува 220 00:09:19,833 --> 00:09:21,870 да ги прашате за секоја датотека. 221 00:09:21,870 --> 00:09:22,790 >> Дејвид MALAN: Која е умерено досадни. 222 00:09:22,790 --> 00:09:23,480 >> МАРИЈА: Да. 223 00:09:23,480 --> 00:09:25,813 >> Дејвид MALAN: Значи тоа е зошто толку многу од нас, само се вклучени, 224 00:09:25,813 --> 00:09:27,070 сум во навика на користење -rf. 225 00:09:27,070 --> 00:09:27,861 Но, тоа е опасно. 226 00:09:27,861 --> 00:09:29,010 Па купувачот пазете се. 227 00:09:29,010 --> 00:09:31,050 А потоа mv е вид на Интересно е именуван. 228 00:09:31,050 --> 00:09:33,600 Значи ова е команда потег, која се чувствува малку чудно 229 00:09:33,600 --> 00:09:37,260 затоа што навистина може да го користат за да преместите датотеки од едно место до друго. 230 00:09:37,260 --> 00:09:39,970 На пример, да претпоставиме дека сум збркана. 231 00:09:39,970 --> 00:09:43,660 Да претпоставиме дека сум создадена нова датотека за pset. 232 00:09:43,660 --> 00:09:46,320 И јас тоа го зачувува како "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Но, претпоставувам дека случајно го спаси во IDE50-- така што во мојот самиот работен простор 234 00:09:49,970 --> 00:09:51,580 а не во pset1. 235 00:09:51,580 --> 00:09:53,960 >> Може да се види колку во горниот лев агол. 236 00:09:53,960 --> 00:09:55,284 Има "greedy.c." 237 00:09:55,284 --> 00:09:56,450 И има неколку решенија. 238 00:09:56,450 --> 00:09:58,324 Значи, можам да го користите супер-лесен начин 239 00:09:58,324 --> 00:09:59,740 на само влечење и пуштање. 240 00:09:59,740 --> 00:10:01,910 И дека, всушност, би го надминете овој проблем. 241 00:10:01,910 --> 00:10:04,967 Но, денес, ние се обидуваме да се погледне повеќе таинствени, но моќни начини 242 00:10:04,967 --> 00:10:05,550 направи ова. 243 00:10:05,550 --> 00:10:07,880 Па дозволете ми да ги преземе "ls" во pset1. 244 00:10:07,880 --> 00:10:09,690 А јас само се види "mario.c." 245 00:10:09,690 --> 00:10:13,450 Дозволете ми да оди напред и да се направи "cd ..". 246 00:10:13,450 --> 00:10:15,320 Така ЦД повторно е промена директориум. 247 00:10:15,320 --> 00:10:18,130 ".." Значи дека она што, иако? 248 00:10:18,130 --> 00:10:21,100 Последниот пат кога го рече "cd pset1 "да оди во pset1. 249 00:10:21,100 --> 00:10:24,360 Па кога ќе се каже "cd ..", што правам? 250 00:10:24,360 --> 00:10:24,910 Наназад. 251 00:10:24,910 --> 00:10:25,150 Је. 252 00:10:25,150 --> 00:10:26,750 >> Па затоа се случува да се т.н. родител. 253 00:10:26,750 --> 00:10:29,730 Одат едно ниво нагоре, како излегување од папка. 254 00:10:29,730 --> 00:10:30,500 Па Enter. 255 00:10:30,500 --> 00:10:31,900 И, навистина, да бараат она што го направив тоа. 256 00:10:31,900 --> 00:10:37,070 Тоа ми се пресели само во работниот простор, наместо на во pset1, кој е во работен простор. 257 00:10:37,070 --> 00:10:39,710 И сега, ако јас напишете "ls", има еден куп работи. 258 00:10:39,710 --> 00:10:41,650 Таму е "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Па сега дозволете ми да го користите mv да буквално движат "greedy.c" во pset1. 260 00:10:48,720 --> 00:10:51,120 И така многу Линукс команди работат токму вака. 261 00:10:51,120 --> 00:10:54,470 Тие се без аргументи или тие се еден аргумент или тие се две командната линија 262 00:10:54,470 --> 00:10:55,449 аргументи и така натаму. 263 00:10:55,449 --> 00:10:57,240 И во овој случај, тоа е буквално го прави она што 264 00:10:57,240 --> 00:11:01,670 што се вели, иако succinctly-- се движат во greedy.c pset1. 265 00:11:01,670 --> 00:11:02,310 Влезе. 266 00:11:02,310 --> 00:11:03,310 Ништо не чини да се случи. 267 00:11:03,310 --> 00:11:06,180 Но, ако јас се направи ls повторно, алчен е нема. 268 00:11:06,180 --> 00:11:12,437 И ако го направам "cd pset1", внесете го, а потоа ls повторно, сега е на вистинското место. 269 00:11:12,437 --> 00:11:14,270 Како настрана, ако за некои reason-- особено 270 00:11:14,270 --> 00:11:16,194 ако имаш повремен мрежа за поврзување 271 00:11:16,194 --> 00:11:18,360 или си шетаат наоколу кампусот со вашиот лаптоп капак 272 00:11:18,360 --> 00:11:20,180 затворена и потоа да ја отвори повторно и вашиот работен простор 273 00:11:20,180 --> 00:11:21,730 се чини дека малку од Sync, нема ништо страшно. 274 00:11:21,730 --> 00:11:23,646 Само да ја превчитате вашиот интернет пребарувач прозорецот, и тоа треба да 275 00:11:23,646 --> 00:11:26,339 resync така што левата рака прелистувачот на датотеки изгледа точно 276 00:11:26,339 --> 00:11:27,380 како што е терминалниот прозорец. 277 00:11:27,380 --> 00:11:27,921 Да не се грижите. 278 00:11:27,921 --> 00:11:31,460 Кога се двоумите, повторно вчитајте ја страницата, така колку што сте ги зачувале на датотеки веќе. 279 00:11:31,460 --> 00:11:31,960 ВО РЕД. 280 00:11:31,960 --> 00:11:34,710 МВ така може да се користи за да се преименуваат датотеки. 281 00:11:34,710 --> 00:11:36,760 И ајде да ги разгледаме во оваа последна заповед тука. 282 00:11:36,760 --> 00:11:39,950 Suppose-- така и ова е супер заеднички, исто така, на почетокот. 283 00:11:39,950 --> 00:11:46,400 Некои ученици повремено се создаде датотека вика, ајде say-- што е уште една? 284 00:11:46,400 --> 00:11:47,730 Како "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Па јас само ќе викам, за без причина, во сите капи. 286 00:11:51,080 --> 00:11:53,190 Но, ова не е точното име на датотека 287 00:11:53,190 --> 00:11:56,660 ако само затоа што нашиот проблем во собата спецификација не ви кажам 288 00:11:56,660 --> 00:11:59,430 да се зачува датотеката со сите големи букви "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Наместо тоа, ние очекуваме "water.c" со мала буква. 290 00:12:01,320 --> 00:12:03,140 И дека, всушност, ова е проблематично поради check50, 291 00:12:03,140 --> 00:12:04,370 програма си оди да се сретнат во проблемот 292 00:12:04,370 --> 00:12:07,350 постави еден кој автоматски тестови исправноста на вашиот код 293 00:12:07,350 --> 00:12:11,615 се случува да се развикам ако не може да најдете "water.c" во сите мали букви. 294 00:12:11,615 --> 00:12:12,712 >> Па јас треба да се поправи ова. 295 00:12:12,712 --> 00:12:14,920 Толку многу различни начини за да се го направите ова, од кои првиот 296 00:12:14,920 --> 00:12:18,330 ќе биде да Контрола-клик или десен клик името на датотеката и само промена на преименување. 297 00:12:18,330 --> 00:12:19,740 Сосема во ред за да се направи тоа. 298 00:12:19,740 --> 00:12:21,820 Но, повторно, и денес, ајде го направи тоа малку познавач. 299 00:12:21,820 --> 00:12:26,680 Ајде да го користите mv да се промени "WATER.C" до "water.c." 300 00:12:26,680 --> 00:12:30,690 За да можете да ги користите и првиот аргумент да го преименуваат во вториот аргумент 301 00:12:30,690 --> 00:12:34,455 ако на вториот аргумент не, е во Всушност, на име на папка или директориум. 302 00:12:34,455 --> 00:12:35,120 >> Во ред. 303 00:12:35,120 --> 00:12:39,560 И на крај, малку trick-- па јас сум во мојот именик работен простор во моментот. 304 00:12:39,560 --> 00:12:43,660 Ако сакам да навлегувам во pset еден, Јас секако да напишете "CD pset1." 305 00:12:43,660 --> 00:12:47,260 Но тоа е толку досадни да напишете "pset1" или повеќе имиња на датотеки или имиња директориум 306 00:12:47,260 --> 00:12:47,980 уште. 307 00:12:47,980 --> 00:12:51,960 Па многу често во Linux, што можете да го направите е да почнете да пишувате "PSE" 308 00:12:51,960 --> 00:12:56,100 и само да се досадуваат, хит јазиче, и нека фигура на компјутерот тоа за вас. 309 00:12:56,100 --> 00:12:58,190 Супер корисно да се влезе во таа навика. 310 00:12:58,190 --> 00:13:01,079 Само се фати е ако имаш повеќе датотеки или папки со почеток 311 00:13:01,079 --> 00:13:02,870 со буквата "Р" или "PS," може да има 312 00:13:02,870 --> 00:13:05,525 да напишеш уште неколку пред компјутерот знае што да прави. 313 00:13:05,525 --> 00:13:06,820 >> МАРИЈА: Ние сакаме кратенки. 314 00:13:06,820 --> 00:13:08,695 >> Дејвид MALAN: Ова ќе те спаси многу време. 315 00:13:08,695 --> 00:13:11,930 И, исто така, како што рековме во предавање, ќе може да се движите нагоре во историјата, нагоре и надолу, 316 00:13:11,930 --> 00:13:15,461 да се најде неодамна егзекутирани команди, како и. 317 00:13:15,461 --> 00:13:15,960 Во ред. 318 00:13:15,960 --> 00:13:20,904 А сега, ајде да го свртиме нашето внимание назад до едноставна програма, Здраво светот. 319 00:13:20,904 --> 00:13:22,195 Значи, ние сме составени токму ова. 320 00:13:22,195 --> 00:13:24,050 И сега, зошто да не можеме да ги преземе погледнете го видот на податоците 321 00:13:24,050 --> 00:13:26,776 а потоа се транзиција од некои што одговара на гребење блокови на В. 322 00:13:26,776 --> 00:13:27,400 МАРИЈА: Прекрасно. 323 00:13:27,400 --> 00:13:30,031 Па сега дека сте почнале пишување програми во C, 324 00:13:30,031 --> 00:13:32,530 ние ќе треба да почнам да зборувам за типови на податоци и променливи. 325 00:13:32,530 --> 00:13:37,570 Па некои типови на податоци што ќе ќе сакаат да знаат сега почнува 326 00:13:37,570 --> 00:13:39,400 се оние кои се осветлени со сина боја. 327 00:13:39,400 --> 00:13:42,420 Значи ние треба int прво, која се залага за цел број. 328 00:13:42,420 --> 00:13:46,075 И кој има цели броеви, како што се може да има guessed-- така, 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 и било какви други цели броеви дека можете да замислите. 330 00:13:47,950 --> 00:13:48,730 >> Дејвид MALAN: А исто така и негативни. 331 00:13:48,730 --> 00:13:50,220 >> МАРИЈА: И, исто така негативците, Да. 332 00:13:50,220 --> 00:13:51,450 И 0. 333 00:13:51,450 --> 00:13:54,250 Тогаш имаме пловки, која лебдат точка броеви. 334 00:13:54,250 --> 00:13:58,360 Значи тоа е сите реални броеви кои имаат децимални поени. 335 00:13:58,360 --> 00:14:03,960 Па 5.0, 5.2, и уште повеќе цифри по децималната точка, 336 00:14:03,960 --> 00:14:05,620 како и, и, исто така, негативните. 337 00:14:05,620 --> 00:14:07,530 Тогаш имаме знак кој е лик. 338 00:14:07,530 --> 00:14:10,240 Па мислам дека ние разговаравме за ова предавање денес. 339 00:14:10,240 --> 00:14:15,682 Но, ние имаме букви, на example-- А, Б, C-- кои можат да бидат зачувани како знак. 340 00:14:15,682 --> 00:14:18,390 Но, тогаш ние имаме многу повеќе симболи кои можат да бидат зачувани како знак. 341 00:14:18,390 --> 00:14:22,380 И оние кои се чуваат како ASCII. 342 00:14:22,380 --> 00:14:25,280 >> И тогаш имаме bool, кои се Booleans. 343 00:14:25,280 --> 00:14:29,067 И оние кои се за да се оцени Вистински или Лажни или 1 и 0, соодветно. 344 00:14:29,067 --> 00:14:31,650 Дејвид MALAN: И се сети дека bool доаѓа од CS50 библиотека. 345 00:14:31,650 --> 00:14:33,300 Па тоа не е вграден во Ц, но тоа е супер корисни 346 00:14:33,300 --> 00:14:34,850 да нема чувство на вистински и лажни. 347 00:14:34,850 --> 00:14:36,990 Па дури и покрај тоа што можеби think-- забава факт. 348 00:14:36,990 --> 00:14:43,700 А bool технички потреби колку битови, навистина, да ја претставуваат Точно наспроти лажни? 349 00:14:43,700 --> 00:14:47,910 Колку битови дали мислите ќе треба, максимално? 350 00:14:47,910 --> 00:14:48,790 Да, само на еден. 351 00:14:48,790 --> 00:14:52,077 Значи излегува дека C не може да ви даде само една малку. 352 00:14:52,077 --> 00:14:54,160 Најмалата единица на мерка може да се добијат е осум. 353 00:14:54,160 --> 00:14:57,090 Така, тоа е малку непотребното тие си користење на целиот бајт, или осум бита, 354 00:14:57,090 --> 00:14:58,340 да претставуваат вистински или лажни. 355 00:14:58,340 --> 00:15:01,807 Но, тоа е само начинот на кој тоа е имплементирани во C библиотеката CS50. 356 00:15:01,807 --> 00:15:04,890 МАРИЈА: И тогаш оние кои ние сме не се случува да се зборува за што опширно 357 00:15:04,890 --> 00:15:08,060 право now-- двокреветни, тоа е за поголеми плови. 358 00:15:08,060 --> 00:15:09,811 Долго долги и кратки Исто така, за цели броеви. 359 00:15:09,811 --> 00:15:10,643 Дејвид MALAN: Навистина. 360 00:15:10,643 --> 00:15:13,190 Во издание на хакерски pset еден, ние всушност ги користат долго долго. 361 00:15:13,190 --> 00:15:15,801 Но, за стандардот издание, тоа не треба да биде неопходно. 362 00:15:15,801 --> 00:15:16,300 МАРИЈА: Кул. 363 00:15:16,300 --> 00:15:17,361 ВО РЕД. 364 00:15:17,361 --> 00:15:20,110 Operators-- така треба да бидете веројатно запознаени со повеќето од овие. 365 00:15:20,110 --> 00:15:22,620 Покрај тоа, +; одземање, -. 366 00:15:22,620 --> 00:15:24,070 За мултипликација, имаме *. 367 00:15:24,070 --> 00:15:25,900 Па не Х кои ние обично го користат. 368 00:15:25,900 --> 00:15:27,840 Поделба, имаме обратна коса црта. 369 00:15:27,840 --> 00:15:31,380 И modulo е нашиот последен оператор кој ние ќе се обидеме да се зборува за во моментов. 370 00:15:31,380 --> 00:15:35,610 Тоа е оператор кој ни овозможува да се преземе остатокот на поделба. 371 00:15:35,610 --> 00:15:40,630 Значи, ако имаме 4% 2, 4 поделени од страна на 2 е 2 со остатокот од 0. 372 00:15:40,630 --> 00:15:41,740 Така 4% 2 е 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 е 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 е 4, како што може да претпоставам. 375 00:15:44,870 --> 00:15:48,860 И се сеќавам кога се користи на сите овие оператори да ги користат правилата PEMDAS. 376 00:15:48,860 --> 00:15:54,060 >> Дејвид MALAN: Значи да биде јасно, ако направи 4% 2, зошто е тоа 0, точно? 377 00:15:54,060 --> 00:15:57,480 >> МАРИЈА: Бидејќи 4 поделено со 2 е 2 со остатокот од 0. 378 00:15:57,480 --> 00:16:00,752 Па modulo ни дава дека остатокот како за разлика од резултат на поделбата. 379 00:16:00,752 --> 00:16:02,960 Дејвид MALAN: И, навистина, она што ќе го најде ова корисно 380 00:16:02,960 --> 00:16:05,640 за е дека во некои проблеми тоа не е секогаш еден, 381 00:16:05,640 --> 00:16:08,040 ако сакате да го имаат на ограничување себе 382 00:16:08,040 --> 00:16:10,720 до низа на броеви како од 0 до нешто, 383 00:16:10,720 --> 00:16:13,904 можете да го користите да се заврши околу modulo порано отколку како на 2 милијарди 384 00:16:13,904 --> 00:16:16,320 или вредност од 4 милијарди дека ние разговаравме за во предавањето. 385 00:16:16,320 --> 00:16:16,870 >> МАРИЈА: Да. 386 00:16:16,870 --> 00:16:19,429 Па дури и во "алчен" ние би можеле да. 387 00:16:19,429 --> 00:16:21,345 Дејвид MALAN: Да, во проблем во собата еден, како и. 388 00:16:21,345 --> 00:16:22,520 МАРИЈА: Да, убаво. 389 00:16:22,520 --> 00:16:24,340 Дејвид MALAN: Добар совет. 390 00:16:24,340 --> 00:16:25,750 МАРИЈА: Жал ми е. 391 00:16:25,750 --> 00:16:28,590 Булова expressions-- така за Булова оператори, 392 00:16:28,590 --> 00:16:31,770 ние ќе се обидеме да се зборува за сите од тие што го гледате тука. 393 00:16:31,770 --> 00:16:35,310 Значи, токму сега, имаме две еднакви знаци наведени за еднаквите. 394 00:16:35,310 --> 00:16:38,650 Значи тоа се за споредба. 395 00:16:38,650 --> 00:16:40,830 Досега, ние сме само гледа еден е еднакво на знак. 396 00:16:40,830 --> 00:16:44,870 Тоа е кога ние доделите вредност на променлива. 397 00:16:44,870 --> 00:16:50,160 Значи, ако ние сме виделе int n = 5, а потоа ние сме се доделени од 5 до променливата n. 398 00:16:50,160 --> 00:16:55,600 Но, ако сакаме да се користи за == споредба, ние може да се провери ако n == 5. 399 00:16:55,600 --> 00:16:58,310 И ако n == 5, тогаш тоа е вистина. 400 00:16:58,310 --> 00:17:01,950 >> Па Булова оператори ни овозможи, во основа, 401 00:17:01,950 --> 00:17:04,670 да се оцени Булова изрази за да се вистинити или лажни. 402 00:17:04,670 --> 00:17:07,819 Па не equals-- имаме марка и еднаквите фантастичен. 403 00:17:07,819 --> 00:17:14,240 Значи, ние исто така може да се провери ако n не е еднакво 5-- така n! = 5. 404 00:17:14,240 --> 00:17:17,640 Помалку од, помалку од или еднакво на, е поголем од, е поголема од или еднаква на, 405 00:17:17,640 --> 00:17:20,720 а потоа имаме логички И така и логичките ИЛИ. 406 00:17:20,720 --> 00:17:24,060 И оние кои се ни овозможи да се оцени повеќе Булова изрази заедно 407 00:17:24,060 --> 00:17:27,930 во основа да дојде заедно како една целина Булова израз. 408 00:17:27,930 --> 00:17:34,970 Значи, ако сакаме да се најдат голем број, да речеме, која е поголема од 5, но помалку од 15 409 00:17:34,970 --> 00:17:39,810 во исто време, ние ќе го користи логички и оператор за да ја видите ако n е 410 00:17:39,810 --> 00:17:42,937 поголема од 5 && n помалку од 15. 411 00:17:42,937 --> 00:17:44,770 Дејвид MALAN: И тука, исто така, тоа е навистина лесно 412 00:17:44,770 --> 00:17:47,290 рано да се случајно користете само една симболот 413 00:17:47,290 --> 00:17:48,572 или една вертикална лента. 414 00:17:48,572 --> 00:17:51,280 И се надевам дека компајлерот ќе развикам, бидејќи тие всушност 415 00:17:51,280 --> 00:17:52,530 имаат многу поинакво значење. 416 00:17:52,530 --> 00:17:55,660 За оние кои се љубопитни, тие се користат за битовата операција, 417 00:17:55,660 --> 00:17:57,197 кои работат на индивидуалните битови. 418 00:17:57,197 --> 00:17:58,780 Но вие не сакате пар од нив тука. 419 00:17:58,780 --> 00:18:01,560 И супер важно е дека Првиот, знак за еднаквост, 420 00:18:01,560 --> 00:18:05,270 која е оператор на еднаквост како за разлика од операторот на задачата. 421 00:18:05,270 --> 00:18:08,552 >> МАРИЈА: И ја вертикалната лента е кој се наоѓа помеѓу Бришење и враќање. 422 00:18:08,552 --> 00:18:09,260 Дејвид MALAN: Да. 423 00:18:09,260 --> 00:18:11,420 На типичен тастатура САД. 424 00:18:11,420 --> 00:18:13,190 >> МАРИЈА: Да. 425 00:18:13,190 --> 00:18:15,890 Па ајде да скокаат право во условно извештаи. 426 00:18:15,890 --> 00:18:18,300 Во Скреч, сте веќе видено, веројатно, 427 00:18:18,300 --> 00:18:22,730 ако извештаи кои ќе ви овозможи да се проверете дали нешто е точно, тогаш 428 00:18:22,730 --> 00:18:23,660 направи нешто друго. 429 00:18:23,660 --> 00:18:28,410 Па можеби ќе го сакале за да провериш дали е самовила 430 00:18:28,410 --> 00:18:31,410 допира некои други самовила или на границата на вашиот екран. 431 00:18:31,410 --> 00:18:35,520 И тогаш можеби сте сакале да стави крај на играта или да направи нешто друго. 432 00:18:35,520 --> 00:18:40,000 Па на синтакса за кои е "ако (состојба)." 433 00:18:40,000 --> 00:18:46,820 Значи, ако вашата фигура допира нешто, тогаш не е во внатрешноста на големите загради. 434 00:18:46,820 --> 00:18:48,980 >> Тогаш имаме ако-друго извештаи. 435 00:18:48,980 --> 00:18:54,080 На друго место ни овозможува да се направи нешто дали се исполнети условите кои ги 436 00:18:54,080 --> 00:18:55,870 проверете за во почетокот не е точно. 437 00:18:55,870 --> 00:19:01,530 Значи, ако на самовила е допирање на границата го направите тоа, што друго да се направи нешто друго. 438 00:19:01,530 --> 00:19:04,030 Па поинаку направи нешто друго. 439 00:19:04,030 --> 00:19:07,530 Тогаш имаме краток пример за ова. 440 00:19:07,530 --> 00:19:11,551 Значи, ако (military_time <12), ние сакаат да printf "Добро утро!" 441 00:19:11,551 --> 00:19:13,300 Друго ние ќе треба да printf "Добра вечер!" 442 00:19:13,300 --> 00:19:14,860 Основни пример. 443 00:19:14,860 --> 00:19:15,680 >> Дејвид MALAN: Добро. 444 00:19:15,680 --> 00:19:16,760 >> МАРИЈА: Кул. 445 00:19:16,760 --> 00:19:18,560 Така, сега имаме прекинувач извештаи. 446 00:19:18,560 --> 00:19:21,960 Прекинување на извештаи во целина може да ни овозможи да се направи многу на истото 447 00:19:21,960 --> 00:19:25,070 дека ние само разговаравме во врска со ако извештаи. 448 00:19:25,070 --> 00:19:29,440 На пример, во моментов имаме Општата форма на изјава на прекинувачот 449 00:19:29,440 --> 00:19:33,870 која ни овозможува да се земе променлива наречена n a 450 00:19:33,870 --> 00:19:37,670 и да се спореди со многу различни вредности, кои тука ќе се 451 00:19:37,670 --> 00:19:40,010 побараа constant1, constant2. 452 00:19:40,010 --> 00:19:41,150 Ние може да има многу повеќе. 453 00:19:41,150 --> 00:19:42,930 И оние кои се наречени случаи. 454 00:19:42,930 --> 00:19:46,280 >> Значи ако имаме прекинувач statement-- и тоа функционира 455 00:19:46,280 --> 00:19:50,580 само за integers-- имаме променлива во овој случај тоа е n. 456 00:19:50,580 --> 00:19:53,840 Ако променливата n е еднаква constant1, ние 457 00:19:53,840 --> 00:19:59,720 ќе се изврши некои програмка на код или нешто што сакаме да го направиме. 458 00:19:59,720 --> 00:20:01,280 А потоа ние ќе се скрши. 459 00:20:01,280 --> 00:20:04,820 Па на пауза значи дека изјава на прекинувачот 460 00:20:04,820 --> 00:20:08,120 да запре извршување ако n е еднакво на constant1, 461 00:20:08,120 --> 00:20:09,752 а потоа вашата програма ќе продолжи. 462 00:20:09,752 --> 00:20:11,835 Тоа ќе излезете надвор од префрлиш изјава и тоа ќе го 463 00:20:11,835 --> 00:20:13,520 продолжи да се направи нешто друго. 464 00:20:13,520 --> 00:20:17,204 >> Ако, пак, не е еднакво на n constant1, тогаш случајот за constant2 465 00:20:17,204 --> 00:20:17,870 ќе бидат проверени. 466 00:20:17,870 --> 00:20:21,750 Значи, ако n е еднакво constant2, дека други програмка на кодот ќе биде убиен. 467 00:20:21,750 --> 00:20:23,850 И тогаш тоа ќе се скрши ако тоа е еднаква на тоа. 468 00:20:23,850 --> 00:20:27,580 И тогаш можеме да имаме also-- не мора да значи, though-- случај стандардно, 469 00:20:27,580 --> 00:20:32,290 што ќе се случи ако n не е еднакво на ниту еден од случаите кои се наведени. 470 00:20:32,290 --> 00:20:35,400 А во случај на стандардно, ние, исто така, не мора да значи треба пауза 471 00:20:35,400 --> 00:20:39,271 поради изјавата на прекинувачот ќе се знае дека треба да се заврши по стандардно 472 00:20:39,271 --> 00:20:40,270 доколку тоа е случај. 473 00:20:40,270 --> 00:20:42,140 >> Дејвид MALAN: Но стилски, ние секогаш го стави таму. 474 00:20:42,140 --> 00:20:42,540 >> МАРИЈА: Да. 475 00:20:42,540 --> 00:20:42,710 >> Дејвид MALAN: Да. 476 00:20:42,710 --> 00:20:44,750 Толку посебно кога на почетокот, особено ако меѓу оние кои се помалку 477 00:20:44,750 --> 00:20:47,458 удобно, јас би лично само препорачуваме да се држи со ИЧС 478 00:20:47,458 --> 00:20:51,564 и што IFS-elses и ако-друг-ако-elses и така натаму, ако само 479 00:20:51,564 --> 00:20:53,480 затоа што тие се малку повеќе јасна. 480 00:20:53,480 --> 00:20:56,142 Ова е еден убав оптимизација, или понекогаш дури и естетски тоа 481 00:20:56,142 --> 00:20:57,350 прави кодот повеќе читлив. 482 00:20:57,350 --> 00:20:59,599 И всушност, веројатно средината на семестарот ќе видиме проблем 483 00:20:59,599 --> 00:21:02,504 поставите каде тоа само изгледа подобро и полесно да се чита за луѓето 484 00:21:02,504 --> 00:21:03,670 со помош на прекинувачот за изјава. 485 00:21:03,670 --> 00:21:05,460 Но, не грижете се за припивам до овој премногу рано. 486 00:21:05,460 --> 00:21:05,680 >> МАРИЈА: Да. 487 00:21:05,680 --> 00:21:08,840 Ако имате многу ако извештаи, тоа не би можело да биде многу читлив. 488 00:21:08,840 --> 00:21:10,965 Тоа не може да биде многу брзо за вас да одат преку него. 489 00:21:10,965 --> 00:21:13,230 Па може да се префрлат извештаи бидат многу корисни, како и. 490 00:21:13,230 --> 00:21:17,900 И, исто така, не remember-- не заборавајте да се стави на паузите во таму. 491 00:21:17,900 --> 00:21:20,330 >> Дејвид MALAN: Не се сеќава на ова. 492 00:21:20,330 --> 00:21:24,890 >> МАРИЈА: Затоа што тогаш ќе може да падне преку од случај до случај. 493 00:21:24,890 --> 00:21:27,930 Па да речеме дека случајот constant1 немаше изјава пауза во неа. 494 00:21:27,930 --> 00:21:31,920 Тогаш би можеле да пропаднете во случај constant2. 495 00:21:31,920 --> 00:21:35,070 И ние не сакаме да го направи тоа ако ние сме веќе достигна случај constant1 496 00:21:35,070 --> 00:21:37,830 и тоа е еднакво на n. 497 00:21:37,830 --> 00:21:45,100 >> Така, на пример, ако имаме променлива n, која содржи голем број класа, 498 00:21:45,100 --> 00:21:48,990 и ние сакаме да се види она што класа is-- ако n е еднакво на 50, 499 00:21:48,990 --> 00:21:51,957 ние ќе треба да се печати "CS50 е Вовед во компјутерски науки јас " 500 00:21:51,957 --> 00:21:53,040 Тогаш ние ќе треба да се скрши. 501 00:21:53,040 --> 00:21:53,920 И тоа е тоа. 502 00:21:53,920 --> 00:21:55,950 Ако, пак, n е еднакво до 51, ние ќе 503 00:21:55,950 --> 00:21:58,494 да се печати "CS51 е Вовед за компјутерски науки II ". 504 00:21:58,494 --> 00:21:59,910 Потоа, пак, ние ќе треба да се скрши. 505 00:21:59,910 --> 00:22:05,080 Меѓутоа, ако потоа ќе стави 124, 61, било друг број што може да се размислува за, 506 00:22:05,080 --> 00:22:06,890 или програма не се случува да го признаат тоа. 507 00:22:06,890 --> 00:22:09,010 Значи тоа се случува да се каже, "Жал ми е, јас сум не се запознаени со таа класа. " 508 00:22:09,010 --> 00:22:10,009 И тоа се случува да се скрши. 509 00:22:10,009 --> 00:22:12,847 Дејвид MALAN: Значи навистина може да се види на, ако, на друго место, ако, на друго место идеја овде. 510 00:22:12,847 --> 00:22:15,430 Тоа е само различни синтакса за изразувајќи иста идеја. 511 00:22:15,430 --> 00:22:17,690 >> МАРИЈА: Токму така. 512 00:22:17,690 --> 00:22:19,480 Сега ние си имаме троичен оператори. 513 00:22:19,480 --> 00:22:24,900 Па троичен оператори имаат три parts-- состојба, 514 00:22:24,900 --> 00:22:27,220 нешто да се направи, ако дека условот е исполнет, 515 00:22:27,220 --> 00:22:29,730 а потоа нешто да се направи ако таа состојба е лажна. 516 00:22:29,730 --> 00:22:33,400 Така што гледате, во основа, синтаксата на тоа овде. 517 00:22:33,400 --> 00:22:37,792 Имаме на прашалник, и тогаш the-- она ​​што ние го нарекуваме ова? 518 00:22:37,792 --> 00:22:38,750 Дејвид MALAN: дебелото црево. 519 00:22:38,750 --> 00:22:39,100 МАРИЈА: Колон. 520 00:22:39,100 --> 00:22:39,599 Ти благодарам. 521 00:22:39,599 --> 00:22:41,880 Жал ми е. 522 00:22:41,880 --> 00:22:45,800 Па ајде да погледнеме во нашиот пример да види дали може да се направи смисла на this-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Па тука ги гледаме нашите Булова оператор == што го споредува променлива class_num 525 00:22:52,580 --> 00:22:53,100 до 50. 526 00:22:53,100 --> 00:22:55,150 Па class_num продавници цел број. 527 00:22:55,150 --> 00:22:58,180 И ако тоа се цели броеви еднакво на 50, а потоа ние сме 528 00:22:58,180 --> 00:23:02,810 ќе ги чувате "Давид Malan" професор во внатрешноста на стрингот. 529 00:23:02,810 --> 00:23:05,912 Ако бројот класа не еднаков на 50, а не "Дејвид Malan" 530 00:23:05,912 --> 00:23:07,120 ќе биде професорот. 531 00:23:07,120 --> 00:23:08,630 >> Дејвид MALAN: Ви благодарам. 532 00:23:08,630 --> 00:23:12,110 И така се чини дека ова е еквивалентно на она, дали би рекле, на прв поглед? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> МАРИЈА: Ми се чини како ако-друго извештаи. 535 00:23:19,960 --> 00:23:20,709 >> Дејвид MALAN: Да. 536 00:23:20,709 --> 00:23:24,020 И всушност, ова е вид на убава еден брод, 537 00:23:24,020 --> 00:23:27,520 така да се каже, за спроведување на точно логиката ако-друго 538 00:23:27,520 --> 00:23:29,010 но прави се што е во еден чекор. 539 00:23:29,010 --> 00:23:29,860 >> МАРИЈА: Токму така. 540 00:23:29,860 --> 00:23:30,360 Је. 541 00:23:30,360 --> 00:23:33,520 Па ако-друго изјавите на сила заземаат многу простор. 542 00:23:33,520 --> 00:23:36,283 Тие може да биде премногу долго за нешто толку едноставно како ова. 543 00:23:36,283 --> 00:23:38,350 Така што ова може да биде многу содржаен и многу убаво. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Па сега ние си оди во потрага по извршува нешто повторно и повторно, 546 00:23:46,820 --> 00:23:50,060 па проверка за условуваат повеќе пати 547 00:23:50,060 --> 00:23:53,510 а потоа продолжува да се направи нешто а таа состојба е точно. 548 00:23:53,510 --> 00:23:56,740 Значи ова не носи убаво во додека петелки. 549 00:23:56,740 --> 00:23:59,270 >> Од лево, имаме нашата прва додека јамка. 550 00:23:59,270 --> 00:24:03,840 Така, додека нешто е точно, направи нешто повторно и повторно. 551 00:24:03,840 --> 00:24:08,850 Така бидете сигурни дека да се забележи дека нашите состојба тука е потврдена на врвот. 552 00:24:08,850 --> 00:24:14,150 Со оглед на тоа што нашата втора loop-- ние го нарекуваме дека не се прави додека loop-- правиме нешто, 553 00:24:14,150 --> 00:24:15,890 тогаш можеме да се провери за состојба. 554 00:24:15,890 --> 00:24:17,980 И ако таа состојба продолжува да биде вистина, 555 00:24:17,980 --> 00:24:20,150 ние се вратиме и да го стори нешто повторно. 556 00:24:20,150 --> 00:24:23,360 Значи главната разлика е во тоа каде состојбата е проверена. 557 00:24:23,360 --> 00:24:29,260 И кодот никогаш не може да биде изврши доколку состојбата не е 558 00:24:29,260 --> 00:24:30,430 точно со јамка време. 559 00:24:30,430 --> 00:24:33,050 Додека со не-а јамка, имаме код 560 00:24:33,050 --> 00:24:35,380 што секогаш е извршена барем еднаш. 561 00:24:35,380 --> 00:24:37,470 А потоа, додека состојбата продолжува да биде вистина, 562 00:24:37,470 --> 00:24:39,960 ние може да се врати и да iterate повторно внатре. 563 00:24:39,960 --> 00:24:43,625 Па зошто мислите дека ние ќе го користи не-додека јамка во текот додека јамка? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Право. 566 00:24:48,720 --> 00:24:52,600 Значи, ако сакаме да го извести корисникот за некој вид на влез, 567 00:24:52,600 --> 00:24:55,400 ако сакаме да ги прашаме за да влезат во нивното име, 568 00:24:55,400 --> 00:24:57,342 ние сакаме да се барем да ги прашате еднаш. 569 00:24:57,342 --> 00:24:59,050 И ако тие не влезе тоа име, ние не сме 570 00:24:59,050 --> 00:25:00,740 ќе ги прашате повторно затоа што веќе го знаеме. 571 00:25:00,740 --> 00:25:02,656 Но, ако тие не влезе нивното име, или ако тие 572 00:25:02,656 --> 00:25:05,787 внесете нешто што е очигледно не е име, 573 00:25:05,787 --> 00:25:08,120 ние се уште сакаат да продолжат барајќи од нив на за нивното име. 574 00:25:08,120 --> 00:25:10,710 >> Дејвид MALAN: И во предавање имавме по една вака со добие позитивен цел број 575 00:25:10,710 --> 00:25:13,550 пример, каде што нема ништо да проверете на прв, бидејќи не сте дури и 576 00:25:13,550 --> 00:25:14,190 добивано int. 577 00:25:14,190 --> 00:25:16,680 Значи, ние сакаме да го направи this-- добие на int од user-- 578 00:25:16,680 --> 00:25:18,860 потоа проверете тоа, можеби, повторно и повторно и повторно. 579 00:25:18,860 --> 00:25:21,030 >> МАРИЈА: Токму така. 580 00:25:21,030 --> 00:25:22,060 За loops-- ОК. 581 00:25:22,060 --> 00:25:25,842 За петелки може да ни овозможи да се направи речиси иста работа, како и. 582 00:25:25,842 --> 00:25:27,300 Тоа е всушност на иста работа. 583 00:25:27,300 --> 00:25:30,190 Па нема ништо што можете да направите со за петелки 584 00:25:30,190 --> 00:25:32,840 дека нема да биде во можност да се направи со додека петелки. 585 00:25:32,840 --> 00:25:36,900 Но за петелки може да изгледа малку малку покомплицирано синтаксички 586 00:25:36,900 --> 00:25:39,730 затоа што тие имаат три дела во она што 587 00:25:39,730 --> 00:25:42,990 беше пред само Состојбата со додека петелки. 588 00:25:42,990 --> 00:25:48,260 Така, првиот дел што можете морето, најлево, имаме "int Џуџиња = 0." 589 00:25:48,260 --> 00:25:51,490 Значи ова е местото каде што ние иницијализирам нашата променлива. 590 00:25:51,490 --> 00:25:55,210 >> Тогаш имаме запирка и "Џуџиња <7." 591 00:25:55,210 --> 00:25:57,100 Значи ова е местото каде надвор состојба всушност е. 592 00:25:57,100 --> 00:26:00,170 Значи тоа е она што ние ќе треба стави само во време loop-- 593 00:26:00,170 --> 00:26:01,880 "Додека Џуџиња <7." 594 00:26:01,880 --> 00:26:05,380 Тука, што оди во средината на нашата за телефонска линија. 595 00:26:05,380 --> 00:26:07,190 Па "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 А потоа нашиот последен дел е "Џуџиња ++" која е местото каде што ние ажурирање на нашите променлива. 597 00:26:11,350 --> 00:26:15,470 Толку важно да се реализира е тоа што овој 598 00:26:15,470 --> 00:26:22,010 се случува да одат преку овој за телефонска линија седум пати и ќе ја изврши седум пати. 599 00:26:22,010 --> 00:26:24,020 Па ние имаме седум Џуџиња, и сите тие се 600 00:26:24,020 --> 00:26:26,020 случува да се каже, "Јас сум тука да ви помогнат, Снежана " 601 00:26:26,020 --> 00:26:28,860 затоа што тие се подготвени да им помогне на Снежана. 602 00:26:28,860 --> 00:26:33,600 >> Со додека петелки, ние би го направиле иницијализација и ажурирање 603 00:26:33,600 --> 00:26:37,490 не и во внатрешноста на состојбата, повторно, но или пред или во внатрешноста на циклус, додека 604 00:26:37,490 --> 00:26:40,210 да бидете сигурни дека we-- бидејќи ние секогаш треба тие делови. 605 00:26:40,210 --> 00:26:42,835 Така да бидете сигурни дека имаме нив, ние ќе си се уште им е додадена 606 00:26:42,835 --> 00:26:44,580 на, а не само внатре во загради. 607 00:26:44,580 --> 00:26:47,288 >> Дејвид MALAN: И така изгледа like-- во предавањето, на пример, 608 00:26:47,288 --> 00:26:50,250 Јас скоро секогаш се користи, како што, јас и n и прилично здодевен променливи. 609 00:26:50,250 --> 00:26:53,050 Тоа изгледа како можете да го користите повеќе умно име променливи, исто така. 610 00:26:53,050 --> 00:26:56,300 >> МАРИЈА: Да, тоа е всушност многу убаво да се користи малку повеќе описни променливи 611 00:26:56,300 --> 00:26:59,400 бидејќи особено ако некој друг е читањето на вашата code-- можеби ти си човек кој степенува 612 00:26:59,400 --> 00:27:00,940 или ако сте соработувале со somebody-- 613 00:27:00,940 --> 00:27:03,481 вие сакате да бидете сигурни дека тие се разбере она што го правиш. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> ВО РЕД. 616 00:27:06,400 --> 00:27:11,435 Така што ова е нешто многу funky-- за телефонска линија во внатрешноста на за телефонска линија. 617 00:27:11,435 --> 00:27:13,060 Јас не знам дали видовме тоа порано. 618 00:27:13,060 --> 00:27:13,830 Веројатно не. 619 00:27:13,830 --> 00:27:17,750 Но, всушност, може да имаме this-- па петелки наместо петелки. 620 00:27:17,750 --> 00:27:25,130 Па дали некој можеби сакаат да пешачат мене преку она што се случува овде? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 Дејвид MALAN: Ќе земе прободе. 623 00:27:29,490 --> 00:27:29,970 МАРИЈА: Кул. 624 00:27:29,970 --> 00:27:30,636 Дејвид MALAN: Во ред. 625 00:27:30,636 --> 00:27:34,690 Значи, spoiler-- ние сакаме да се печати на работи тоа е во долниот десен агол 626 00:27:34,690 --> 00:27:35,190 таму. 627 00:27:35,190 --> 00:27:35,450 >> МАРИЈА: Добро. 628 00:27:35,450 --> 00:27:35,710 Да да. 629 00:27:35,710 --> 00:27:38,043 >> Дејвид MALAN: Значи ние само стави дека излез примерок таму. 630 00:27:38,043 --> 00:27:42,590 За да можам да заклучиме од врвниот јамка дека сте 631 00:27:42,590 --> 00:27:45,680 процесирањето повеќе редови најоддалечените јамка, така да се каже. 632 00:27:45,680 --> 00:27:48,107 А ти си повеќе од процесирањето колони со најскриената јамка. 633 00:27:48,107 --> 00:27:50,190 И интуитивно, овој надевам дека треба да има смисла 634 00:27:50,190 --> 00:27:52,070 бидејќи по природа на секоја програма што сум го видел 635 00:27:52,070 --> 00:27:55,570 пред, printf, што е ние сме со користење на функцијата, во крајна линија, 636 00:27:55,570 --> 00:27:58,190 има способност да се печати работи пред сé линија по линија. 637 00:27:58,190 --> 00:27:59,960 Како, еднаш сте outputted нова линија, има 638 00:27:59,960 --> 00:28:02,876 Нема удвојување назад и нешто печатење повисока во екранот, најмалку 639 00:28:02,876 --> 00:28:04,530 не користи printf се допаѓа ова. 640 00:28:04,530 --> 00:28:07,750 >> И така во тој поглед, тоа го прави смисла дека најоддалечените јамка 641 00:28:07,750 --> 00:28:10,930 треба да се однесуваат на редови бидејќи за секој даден ред, 642 00:28:10,930 --> 00:28:13,650 ви се случува да сакаат да испечатите XXXXX, а потоа 643 00:28:13,650 --> 00:28:15,520 да се движи кон следниот ред, XXXXX. 644 00:28:15,520 --> 00:28:17,317 Па редови доаѓаат во прв план. 645 00:28:17,317 --> 00:28:19,150 А потоа во рамките на секоја ред, ќе се печати колони. 646 00:28:19,150 --> 00:28:21,160 Ако сте се обиделе да го направите спротивното, тоа најверојатно нема да 647 00:28:21,160 --> 00:28:21,690 излезе како имате намера. 648 00:28:21,690 --> 00:28:22,190 >> МАРИЈА: Да. 649 00:28:22,190 --> 00:28:24,950 Ние едноставно не може да се врати претходниот ред со printf. 650 00:28:24,950 --> 00:28:27,658 >> Дејвид MALAN: И она што е интересно по денешниот разговор во врска со обемот, 651 00:28:27,658 --> 00:28:31,600 всушност, е дека спорот е int која е прогласена во врвниот јамка. 652 00:28:31,600 --> 00:28:34,030 Но се забележи дека се уште е внатрешноста, така да се каже, 653 00:28:34,030 --> 00:28:35,982 на големите загради дека веднаш да се следат, 654 00:28:35,982 --> 00:28:38,440 иако тоа не е технички во рамките на тие големи загради. 655 00:28:38,440 --> 00:28:41,750 Па ред е во опсегот на целината на програмка на код, 656 00:28:41,750 --> 00:28:44,690 и внатре на надворешниот за јамка и во внатрешноста на внатрешниот за телефонска линија. 657 00:28:44,690 --> 00:28:48,050 Но, од друга страна, во која е колона во опсегот? 658 00:28:48,050 --> 00:28:49,810 Променливата колона? 659 00:28:49,810 --> 00:28:51,310 Да, само во внатрешноста на јамка. 660 00:28:51,310 --> 00:28:54,280 И тоа е во ред затоа што немаме пристап тоа и надвор од неговите големи загради. 661 00:28:54,280 --> 00:28:57,280 Сите што го правиме е да испечатите на нови линија на самиот крај таму. 662 00:28:57,280 --> 00:28:58,670 Така што во суштина е во ред. 663 00:28:58,670 --> 00:29:03,740 >> Така што ова има ефект, како изгледа, на вршење на три реда и четири столбови. 664 00:29:03,740 --> 00:29:04,370 >> МАРИЈА: Добро. 665 00:29:04,370 --> 00:29:06,270 Значи прво ние одиме преку нашите први по ред. 666 00:29:06,270 --> 00:29:10,520 И само во нашите први по ред, го правиме на четири колони во внатрешноста на првиот ред. 667 00:29:10,520 --> 00:29:11,980 Значи ние се печати четири Х. 668 00:29:11,980 --> 00:29:15,800 И потоа можеме да излезете за телефонска линија, бидејќи ние сме веќе отпечатени четири Х. 669 00:29:15,800 --> 00:29:17,100 И ние печати нова линија. 670 00:29:17,100 --> 00:29:19,920 И тогаш што се минува низ Истиот процес за уште два реда 671 00:29:19,920 --> 00:29:21,170 за да се направи вкупно три. 672 00:29:21,170 --> 00:29:23,530 >> Дејвид MALAN: И тоа е вреди да се напомене дека е само артефакт на фонтот, фактот 673 00:29:23,530 --> 00:29:25,680 дека излез на примерокот се чини толку многу повисоки, 674 00:29:25,680 --> 00:29:27,520 како да има уште редови од колони. 675 00:29:27,520 --> 00:29:29,824 Но, тоа е само затоа што на X е повисок отколку што е далеку од голот. 676 00:29:29,824 --> 00:29:32,740 Тоа е се што се случува таму, плус бел простор меѓу редовите. 677 00:29:32,740 --> 00:29:33,281 >> МАРИЈА: Добро. 678 00:29:33,281 --> 00:29:34,792 Кул. 679 00:29:34,792 --> 00:29:35,750 Дејвид MALAN: Во ред. 680 00:29:35,750 --> 00:29:39,830 Па еден брз поглед на проблемот постави една, преземат сите прашања, а потоа да ја прекине? 681 00:29:39,830 --> 00:29:40,330 Во ред. 682 00:29:40,330 --> 00:29:43,164 Така што во еден проблем во собата, има три Примарната предизвици, во крајна линија. 683 00:29:43,164 --> 00:29:44,955 Но, прво, ќе најдете дека проблемот поставени 684 00:29:44,955 --> 00:29:47,900 спецификација, како и со многу од psets оваа есен, ќе ви прошетка 685 00:29:47,900 --> 00:29:50,691 преку неколку загревање вежби, можете да истакнам неколку ресурси 686 00:29:50,691 --> 00:29:52,440 кои може или не може веќе не сте виделе. 687 00:29:52,440 --> 00:29:54,440 На пример, CS50 има пакет на шорцеви, 688 00:29:54,440 --> 00:29:56,481 кои се кратки видеа, не за разлика од ова, но тоа 689 00:29:56,481 --> 00:29:58,460 се многу тема specific-- можеби пет минути, 690 00:29:58,460 --> 00:30:02,360 10 минути во должина на јамки или за условите или на алгоритми 691 00:30:02,360 --> 00:30:04,125 или подоцна повеќе напредни теми, како и. 692 00:30:04,125 --> 00:30:06,000 И ние обично го вградите оние во проблемот 693 00:30:06,000 --> 00:30:07,950 множества, така што студентите имаат ресурси со кои 694 00:30:07,950 --> 00:30:10,840 да се видат материјали кои би можеле да имаат веќе излезе во предавање или дел. 695 00:30:10,840 --> 00:30:13,220 Но, овој пат тоа е повеќе фокусиран и повеќе на нивните прсти. 696 00:30:13,220 --> 00:30:15,928 >> Ние, исто така, имаат тенденција да го вградите во проблемот поставува нешта наречени walkthroughs. 697 00:30:15,928 --> 00:30:20,790 Па речиси сите од примерите правам во предавањето, на сцената тука, ние, исто така, 698 00:30:20,790 --> 00:30:24,565 имаат снимен на камера во унапредат уште побавно, 699 00:30:24,565 --> 00:30:28,760 повеќе интимна можи од мене на мојот лаптоп на тој код, ред по ред 700 00:30:28,760 --> 00:30:31,427 така што во класа, ние често ќе обезмаслен преку нешто или некого 701 00:30:31,427 --> 00:30:33,260 ќе interject со одговорот на прашањето. 702 00:30:33,260 --> 00:30:35,820 Но, тоа не мора да потоне во за сите во публиката. 703 00:30:35,820 --> 00:30:38,230 Па ќе најдете кодот walkthroughs за поголемиот дел од примерите 704 00:30:38,230 --> 00:30:40,950 што правиме овде, во предавање, така што ќе може да помогне преку неа на свој темпо 705 00:30:40,950 --> 00:30:43,580 и премотување назад или напред или прескокнете целосно, ако сакате. 706 00:30:43,580 --> 00:30:45,356 >> Има често неколку загревање прашања кои 707 00:30:45,356 --> 00:30:47,105 да побара од вас да се најде решение на засилување на овој материјал 708 00:30:47,105 --> 00:30:50,250 и бидете сигурни дека сте удобни пред да продолжите со остатокот од pset. 709 00:30:50,250 --> 00:30:51,700 А потоа, се разбира, тука е и самата pset. 710 00:30:51,700 --> 00:30:53,450 И една од работите ние многу намерно 711 00:30:53,450 --> 00:30:57,202 направи во CS50 е речиси секој неинтересни или интелектуално неинтересни 712 00:30:57,202 --> 00:30:58,910 механички чекор кој можеби ќе треба да се направи 713 00:30:58,910 --> 00:31:00,519 скоро секогаш се многу добро документирани. 714 00:31:00,519 --> 00:31:03,560 Во текот на овој термин, ние ќе почне да побара повеќе реторички прашања 715 00:31:03,560 --> 00:31:06,187 како да се сеќавам како да го направите тоа или што? 716 00:31:06,187 --> 00:31:08,520 Но, генерално, ќе најдете дека ќе го добиете проблем сетови 717 00:31:08,520 --> 00:31:10,269 преку механика на нешто, така што 718 00:31:10,269 --> 00:31:14,160 интересните, интелектуални предизвици се конечно Ви останува на студентот. 719 00:31:14,160 --> 00:31:17,390 >> Со тоа, вели, Zamyla, на кои ние чуваат осврнувајќи денеска во предавањето, 720 00:31:17,390 --> 00:31:20,190 е еден од нашите долгогодишни вработени член кој исто така има walkthroughs 721 00:31:20,190 --> 00:31:24,520 на специфични pset проблеми како Марио и алчен, иако не води оваа година. 722 00:31:24,520 --> 00:31:26,540 И тоа е во оние walkthroughs оти често 723 00:31:26,540 --> 00:31:29,450 нуди некои совети и трикови за како да се продолжи, никогаш не ти го кажувам 724 00:31:29,450 --> 00:31:31,810 точно што да правам, но rather-- како состојба, 725 00:31:31,810 --> 00:31:35,200 ако will-- кои ви даваат најмалку неколку идеи, така што тоа е до вас, 726 00:31:35,200 --> 00:31:37,830 во крајна линија, да одлучи како да им се доближиме. 727 00:31:37,830 --> 00:31:41,200 >> МАРИЈА: вид на како на високо ниво разбирање на логиката на она што 728 00:31:41,200 --> 00:31:42,220 ние се бара да се направи. 729 00:31:42,220 --> 00:31:42,485 >> Дејвид MALAN: Токму така. 730 00:31:42,485 --> 00:31:44,190 И дека, всушност, е Zamyla walkthroughs се наменети 731 00:31:44,190 --> 00:31:46,190 да одговори на често се поставува прашањето од каде 732 00:31:46,190 --> 00:31:48,610 Почнав да се направи, особено кога овие долги спецификации се 733 00:31:48,610 --> 00:31:51,960 малку застрашувачка даден целиот текст и слики кои ги имаат во нив. 734 00:31:51,960 --> 00:31:54,890 >> Water.c така, ќе најдете откако ќе го заврши тоа, 735 00:31:54,890 --> 00:31:56,920 е всушност релативно јасна. 736 00:31:56,920 --> 00:31:58,882 Апсолутно се еден куп на ви се случува да се тресне 737 00:31:58,882 --> 00:32:01,840 шефовите на ѕидот се обидува да дознаам зошто тоа не е составувањето 738 00:32:01,840 --> 00:32:03,450 или зошто тоа не се работи правилно. 739 00:32:03,450 --> 00:32:05,040 Но, откако ќе завршиш со него и еднаш си 740 00:32:05,040 --> 00:32:07,620 поминал извесно време додека се справуваат со било на грешки кои може да има, 741 00:32:07,620 --> 00:32:09,490 ќе најдете дека тоа е многу кратко програма. 742 00:32:09,490 --> 00:32:11,770 Тоа може да се направи за само неколку линии на код, од кои најголем дел 743 00:32:11,770 --> 00:32:15,030 видовме тука во предавањето веќе, ако да се соберат на правото градежни блокови. 744 00:32:15,030 --> 00:32:16,810 >> И како што сугерираат овде, тоа се случува да прашам 745 00:32:16,810 --> 00:32:22,250 овозможува да одредите колку минути некој се тушира ​​на кампусот. 746 00:32:22,250 --> 00:32:24,779 Ние наведете во проблемот поставите брзината на проток на вода 747 00:32:24,779 --> 00:32:27,320 во, како, туш со низок проток главата, слично како на клипот Сајнфелд 748 00:32:27,320 --> 00:32:29,180 видовме вчера или спротивното од него. 749 00:32:29,180 --> 00:32:30,971 И тогаш едноставно треба да да се направи малку на математика, 750 00:32:30,971 --> 00:32:34,710 really-- аритметиката со користење на C да се каже ни колку, грубо, шишиња со вода 751 00:32:34,710 --> 00:32:37,720 е во тоа што е еквивалентно на, ако ние сме полагање на n-минута туш. 752 00:32:37,720 --> 00:32:41,389 >> Сега, во mario.c, ова се случува да биде малку подолг програмата. 753 00:32:41,389 --> 00:32:42,930 Тоа се уште не се случува да биде долго. 754 00:32:42,930 --> 00:32:45,130 Само неколку линии подолго од water.c. 755 00:32:45,130 --> 00:32:48,230 Но, тоа се случува да биде можност да се рекреираат на старата школа Марио 756 00:32:48,230 --> 00:32:50,670 пирамида од Супер Марио Браќа, или некои понатамошните активности. 757 00:32:50,670 --> 00:32:53,510 Тоа не се случува да се погледне како поубава или како шарени како што никој таму. 758 00:32:53,510 --> 00:32:56,468 Ние сме само ќе да се користи малку hashtags како што имаме тука на екранот 759 00:32:56,468 --> 00:32:58,120 користејќи ASCII текст. 760 00:32:58,120 --> 00:33:00,362 Но, тоа ќе се приближат на истата идеја. 761 00:33:00,362 --> 00:33:02,570 И тоа се случува да се биде вежба која на прв поглед 762 00:33:02,570 --> 00:33:04,720 Изгледа прилично simple-- само печати едноставен пирамида. 763 00:33:04,720 --> 00:33:07,345 Но, има неколку карактеристики тука дека се интересни. 764 00:33:07,345 --> 00:33:12,400 Забележи дека најдесната раб пирамидата всушност има две ширина. 765 00:33:12,400 --> 00:33:14,570 Значи има две еднакви колони висина, што 766 00:33:14,570 --> 00:33:16,804 прави да се бараат малку малку на мислата да се направи 767 00:33:16,804 --> 00:33:19,720 сигурни дека ќе го добиете тоа точно во право, како за разлика од само совршено искосени 768 00:33:19,720 --> 00:33:20,220 на линија. 769 00:33:20,220 --> 00:33:23,340 Така што е малку на случајот од аголот но се совпаѓа со вистинската игра. 770 00:33:23,340 --> 00:33:27,610 >> И тоа е, исто така, не-очигледно на прв видите како да се печати белиот простор. 771 00:33:27,610 --> 00:33:29,430 Па кога ќе се погледне на примерок излез here-- 772 00:33:29,430 --> 00:33:32,440 и тоа е, исто така, во тоа spec-- вид на изгледа како правоаголник, 773 00:33:32,440 --> 00:33:35,120 но на дијагоналата на правоаголник е сецкани надвор, 774 00:33:35,120 --> 00:33:37,320 и тоа е само бело простори, така да се каже. 775 00:33:37,320 --> 00:33:40,100 И така најчесто поставуваните Прашањето овде е секогаш, добро, 776 00:33:40,100 --> 00:33:43,302 како можам да се преселат на hashtags во текот на правото? 777 00:33:43,302 --> 00:33:44,760 Или како можам да се печати на празни места? 778 00:33:44,760 --> 00:33:46,860 А тоа е всушност полесно од кои повеќето студенти мислат. 779 00:33:46,860 --> 00:33:47,360 Нели? 780 00:33:47,360 --> 00:33:51,620 Можете да го приближи визуелно од само притискање на тастерот space еднаш или двапати 781 00:33:51,620 --> 00:33:52,700 или три пати. 782 00:33:52,700 --> 00:33:56,260 >> И така, иако со printf ние речиси секогаш се печати низа или int 783 00:33:56,260 --> 00:33:59,950 или збор како "здраво, свет "или серија на зборови, 784 00:33:59,950 --> 00:34:03,560 можете исто така да само печати понуда, простор, unquote. 785 00:34:03,560 --> 00:34:06,320 И дека, всушност, ќе се даде вие бел простор постои. 786 00:34:06,320 --> 00:34:08,330 Така да тоа во предвид и не overthink ова. 787 00:34:08,330 --> 00:34:10,570 Вие навистина треба да одлучи ред по ред по ред, 788 00:34:10,570 --> 00:34:14,280 не за разлика од вашиот пример на момент пред, колку од оние 789 00:34:14,280 --> 00:34:18,420 колони треба да биде бела простори и колку од нив треба да биде hashtags. 790 00:34:18,420 --> 00:34:21,560 Тоа ќе потрае малку време, но тоа е во крајна линија логика загатка на сорти. 791 00:34:21,560 --> 00:34:22,060 >> МАРИЈА: Да. 792 00:34:22,060 --> 00:34:25,060 Но логиката на одење ред по ред се случува да биде многу корисен. 793 00:34:25,060 --> 00:34:25,810 Дејвид MALAN: Да. 794 00:34:25,810 --> 00:34:28,976 Мислам дека примерокот кодот можете дури gave-- иако тоа не беше комплетна програма. 795 00:34:28,976 --> 00:34:34,247 Вие сеуште треба int и главни и неважечки, а # Include stdio.h, 796 00:34:34,247 --> 00:34:35,580 многу работи од предавањето. 797 00:34:35,580 --> 00:34:37,629 Но на градежни блокови се чини дека да се биде таму. 798 00:34:37,629 --> 00:34:39,920 А потоа и на крај е нешто малку повеќе алгоритамски. 799 00:34:39,920 --> 00:34:43,210 Значи излегува дека секое време ќе одат во CVS или било погодност продавница 800 00:34:43,210 --> 00:34:47,810 и некој ви на сметки или монети, како промена на благајната, 801 00:34:47,810 --> 00:34:50,620 излегува дека тие, луѓето, дали или не се свесни за тоа или не, 802 00:34:50,620 --> 00:34:53,300 најверојатно го користат она што е нарекува алчни алгоритми, 803 00:34:53,300 --> 00:34:58,170 при што доколку сте се должи, да речеме, 21 $ во промена бидејќи поради некоја причина 804 00:34:58,170 --> 00:35:01,580 сте купиле нешто многу евтини со многу голема сметка на CVS, 805 00:35:01,580 --> 00:35:05,910 тоа ќе биде навистина досадни, ако Касиерката ти дал 21 синглови или, уште полошо 806 00:35:05,910 --> 00:35:07,629 сепак, во целина многу монети. 807 00:35:07,629 --> 00:35:10,670 Напротив, она што разумно лице е веројатно, ќе сака да направите е да тие се случува 808 00:35:10,670 --> 00:35:14,224 да се дофати со $ 20, а потоа и $ 1-законот, а ви рака само две сметки во тој случај. 809 00:35:14,224 --> 00:35:17,390 МАРИЈА: Па тие се бараат за да се минимизира промената дека тие даваат назад кон вас. 810 00:35:17,390 --> 00:35:17,850 Дејвид MALAN: Токму така. 811 00:35:17,850 --> 00:35:19,540 И истиот договор со монети, како и. 812 00:35:19,540 --> 00:35:23,040 Ако сте се должат, да речеме, $ 0,50, се надевам дека вие не сакате 50 пени. 813 00:35:23,040 --> 00:35:25,500 Ти наместо да сакате две квартали, на пример. 814 00:35:25,500 --> 00:35:27,540 Сега, ова не се претпостави дека во касата има 815 00:35:27,540 --> 00:35:29,940 доволно на секоја деноминација што тој или таа можеби ќе сакате да ви даде. 816 00:35:29,940 --> 00:35:32,148 Но, ние ќе ви овозможи да се претпостави колку во проблемот. 817 00:35:32,148 --> 00:35:35,590 А целта, во крајна линија, е да се имплементираат во C код алчен алгоритам. 818 00:35:35,590 --> 00:35:37,344 Па на корисникот му е дозволено да напишеш во колку 819 00:35:37,344 --> 00:35:40,510 промените што тој или таа се должи на долари и центи, некој вид на подвижна запирка 820 00:35:40,510 --> 00:35:41,590 вредноста веројатно. 821 00:35:41,590 --> 00:35:45,530 А потоа ќе мора да го направите математика и дознаам алгоритамски, добро, 822 00:35:45,530 --> 00:35:49,020 колку пари можам да им даде вие минимално да ви даде 823 00:35:49,020 --> 00:35:50,270 токму таа сума на промена. 824 00:35:50,270 --> 00:35:53,470 Но таму се случува да биде малку незгодно делови тука, нели? 825 00:35:53,470 --> 00:35:56,236 Како таму е целата непрецизност прашање. 826 00:35:56,236 --> 00:35:56,860 МАРИЈА: Токму така. 827 00:35:56,860 --> 00:35:59,114 Па со подвижна запирка вредности имаат непрецизност. 828 00:35:59,114 --> 00:36:00,780 Дали ќе се зборува за ова во предавање денес? 829 00:36:00,780 --> 00:36:02,340 >> Дејвид MALAN: Ние не последен пат во предавање. 830 00:36:02,340 --> 00:36:03,506 Ние разговаравме за непрецизност. 831 00:36:03,506 --> 00:36:08,840 И не сакаат да мамат на корисникот за тоа колку тој или таа промена се должи. 832 00:36:08,840 --> 00:36:11,290 И така можи, во проблемот поставени спецификација, 833 00:36:11,290 --> 00:36:15,990 даде некои мисли, во крајна линија, како да како може да се ублажат овие непрецизност 834 00:36:15,990 --> 00:36:17,280 грешки, потенцијално. 835 00:36:17,280 --> 00:36:21,050 Тоа може да се избегне, се разбира, за инпутите што ние зборуваме за. 836 00:36:21,050 --> 00:36:23,590 И дека, всушност, pennies-- можеби и ќе се одложи на Zamyla, 837 00:36:23,590 --> 00:36:25,136 Мислам дека, за трикови таму. 838 00:36:25,136 --> 00:36:27,760 Па на крајот, ќе најдете прогресија на проблемите на оваа недела, 839 00:36:27,760 --> 00:36:30,700 од кои првиот е прилично мал, тогаш медиум, а потоа малку поголеми. 840 00:36:30,700 --> 00:36:33,200 Но сите од нив ги користат за градење блокови од минатата недела, 841 00:36:33,200 --> 00:36:35,280 од овој supersection, проблем во собата спецификација 842 00:36:35,280 --> 00:36:36,710 ве става во безброј ресурси. 843 00:36:36,710 --> 00:36:41,000 Но, сепак, ако воопшто се борат, особено меѓу оние помалку удобно 844 00:36:41,000 --> 00:36:42,917 без претходна позадина, дојде до работното време 845 00:36:42,917 --> 00:36:44,958 во понеделникот и вторникот и Среда и четврток. 846 00:36:44,958 --> 00:36:46,950 Оди на CS50 Разговараат преку веб-страница на курсот, 847 00:36:46,950 --> 00:36:49,080 преку кои можете да разговарате со вработените и соучениците. 848 00:36:49,080 --> 00:36:51,670 >> Но на крајот, мислам дека Најдобриот совет е само да се започне рано. 849 00:36:51,670 --> 00:36:54,711 Тоа не е вид на класа што ќе треба да биде почетна psets во средата 850 00:36:54,711 --> 00:36:56,640 ноќ, или уште полошо четвртокот навечер. 851 00:36:56,640 --> 00:36:59,067 >> МАРИЈА: Мојот најдобар совет е дека започна од понеделникот. 852 00:36:59,067 --> 00:36:59,900 Дејвид MALAN: понеделник. 853 00:36:59,900 --> 00:37:02,490 Значи, ако не сте почнати already-- бр. 854 00:37:02,490 --> 00:37:04,732 Но, дури и ако не е во понеделникот, а потоа во вторник. 855 00:37:04,732 --> 00:37:05,690 Порано толку подобро. 856 00:37:05,690 --> 00:37:08,605 И тоа е причината на Курсот има толку многу доцна дена е 857 00:37:08,605 --> 00:37:10,535 да ви даде малку на психолошки притисок 858 00:37:10,535 --> 00:37:13,684 да се започне порано, но сепак нека работите се лизга кога работите ќе трае подолго 859 00:37:13,684 --> 00:37:14,350 отколку што очекувате. 860 00:37:14,350 --> 00:37:17,950 >> МАРИЈА: И сакате да се направи употреба на работното време, колку што може да се, исто така. 861 00:37:17,950 --> 00:37:20,291 >> Дејвид MALAN: Било какви прашања? 862 00:37:20,291 --> 00:37:20,790 Во ред. 863 00:37:20,790 --> 00:37:22,930 Па, зошто да не можеме да ја прекине оваа ситуација? 864 00:37:22,930 --> 00:37:23,487