1 00:00:00,000 --> 00:00:03,353 >> [MUZIKO Ludante] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVID Malan: Saluton, ĉiuj. 4 00:00:06,050 --> 00:00:07,777 Jen CS50 supersection. 5 00:00:07,777 --> 00:00:09,860 Atribuita Sekcioj ne faros komenci alian semajnon. 6 00:00:09,860 --> 00:00:11,580 Kaj tiel hodiaŭ, mi estas ĉi tie with-- 7 00:00:11,580 --> 00:00:12,122 >> MARIA: Maria. 8 00:00:12,122 --> 00:00:14,163 DAVID Malan: --to reale rigardu problemo 9 00:00:14,163 --> 00:00:16,110 fiksita, la kurso unuaj semajnoj de materialo, 10 00:00:16,110 --> 00:00:19,780 akiri vin orientita kun CS50 IDE, iom de Linukso, la mastruma sistemo kiu estas 11 00:00:19,780 --> 00:00:22,290 kurante sur IDE, tiel kiel rigardu kelkajn el la transiro 12 00:00:22,290 --> 00:00:25,730 de Scratch al C gvida ĝis problemo starigis unu. 13 00:00:25,730 --> 00:00:28,340 >> Do sen pli enkonduko, en problemo starigis unu, 14 00:00:28,340 --> 00:00:30,520 vi tuj estos enkondukitaj al CS50 IDE, kiu 15 00:00:30,520 --> 00:00:33,230 estas tiu ttt-bazita programado medio kiun ni uzas por 16 00:00:33,230 --> 00:00:34,280 skribi programojn. 17 00:00:34,280 --> 00:00:37,280 Ĝi estis desegnita por rigardi tre rememoriga de tipa komputilo 18 00:00:37,280 --> 00:00:39,430 sistemo kurante mastruma sistemo nomita Linukso. 19 00:00:39,430 --> 00:00:42,440 Sed estas en la tn nubo, kio signifas ĉiuj en la klaso 20 00:00:42,440 --> 00:00:45,100 povas fakte havi lia aŭ ŝia propra konto kaj uzi ĝin, ankaŭ. 21 00:00:45,100 --> 00:00:48,950 >> Do plejparto de vi probable neniam uzis Linuksa medio antaŭ aŭ eble 22 00:00:48,950 --> 00:00:50,447 eĉ komandlinio medio. 23 00:00:50,447 --> 00:00:52,280 Kaj komandlinio medio estas malsama. 24 00:00:52,280 --> 00:00:53,200 Estas ĉio teksta. 25 00:00:53,200 --> 00:00:54,730 Estas ĉio klavaraj komandoj. 26 00:00:54,730 --> 00:00:59,480 Kaj ĝi estas neniu mousing, neniu ikonoj, neniu dialogo fenestroj, neniu menuoj. 27 00:00:59,480 --> 00:01:00,212 Ĝi estas pure tekston. 28 00:01:00,212 --> 00:01:01,920 Do unue, ĝi speco de sentas kiel paŝo 29 00:01:01,920 --> 00:01:04,434 Malantaŭen en terminoj de sofisticación. 30 00:01:04,434 --> 00:01:06,600 Sed finas estante multe pli potenca, certe, 31 00:01:06,600 --> 00:01:08,510 por komputila sciencisto, finfine. 32 00:01:08,510 --> 00:01:09,540 >> Do ni rigardu. 33 00:01:09,540 --> 00:01:13,850 Jen mi estas ĉe CS50.io, tra kiu vi povas ensaluti en CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 Kaj multe kiel en Scratch, ekzistas tri primaraj areoj al tiu ekrano. 35 00:01:17,414 --> 00:01:20,080 Do sur la maldekstra flanko, ni havas kio estos la dosieron retumilo. 36 00:01:20,080 --> 00:01:22,413 Kaj ekzistas tiu dosierujo ĉe supro, kiu estas nun malplena 37 00:01:22,413 --> 00:01:24,690 ekde mi forigis ĉiujn miajn dosierojn antaŭ supersection. 38 00:01:24,690 --> 00:01:27,599 Kaj jen kie ni savi C dosierojn kiujn ni skribos. 39 00:01:27,599 --> 00:01:30,890 Ĉe la supra dekstra, ni havas lokon kie ĉiuj niaj kodon tuj akiri skribita. 40 00:01:30,890 --> 00:01:34,610 Kaj efektive, se mi klakas ĉi plus, ĉi tuj lasu min elekti novan dosiertipon. 41 00:01:34,610 --> 00:01:38,310 Kaj tie mi povas komenci skribi C-kodo aŭ, vere, ajna nombro da aliaj lingvoj. 42 00:01:38,310 --> 00:01:42,670 >> Kaj tiam ĉe la fundo kie ĝi diras jharvard @ ide50-- kaj via volo 43 00:01:42,670 --> 00:01:45,080 diru ion iom different-- kio tiu vokis? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Terminalfenestro. 46 00:01:49,310 --> 00:01:49,570 Yeah. 47 00:01:49,570 --> 00:01:51,810 Do la fina fenestro estas la tn komandlinio 48 00:01:51,810 --> 00:01:55,540 Interfaco per kiu vi povas interagi kun la suba operaciumo. 49 00:01:55,540 --> 00:01:58,220 Kaj nun, ni tuj fari tre malmulta uzo de this-- 50 00:01:58,220 --> 00:02:01,170 nur kompili, rigardi erarmesaĝojn kiuj ni vidas, 51 00:02:01,170 --> 00:02:02,347 kaj kuri niaj programoj. 52 00:02:02,347 --> 00:02:04,680 Sed finfine, ni tuj fari tiom pli, ankaŭ. 53 00:02:04,680 --> 00:02:07,490 Kaj vi eĉ povas instali softvaron kaj administri via laborspaca 54 00:02:07,490 --> 00:02:09,066 ene CS50 IDE, ankaŭ. 55 00:02:09,066 --> 00:02:10,440 Sed pli en kiuj alifoje. 56 00:02:10,440 --> 00:02:12,689 >> Do ni iru antaŭen kaj skribi tre simpla programo nur 57 00:02:12,689 --> 00:02:15,064 iri tra varmigo de hello.c, kiu estas eble 58 00:02:15,064 --> 00:02:16,480 la plej simpla programo ni povas skribi. 59 00:02:16,480 --> 00:02:18,330 Mi jam malfermis novan langeton. 60 00:02:18,330 --> 00:02:24,310 Mi tuj iros antaŭen kaj diru inkludas normon io.h. 61 00:02:24,310 --> 00:02:25,325 Tiam int main (void). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 Kaj tiam printf ("Saluton, mondo" backslash n, proksime citaĵo, 64 00:02:35,200 --> 00:02:39,480 Fermi krampoj, kaj punktokomo. 65 00:02:39,480 --> 00:02:39,990 >> Bone. 66 00:02:39,990 --> 00:02:41,700 Do nun rimarkas mia fenestro estas sen titolo. 67 00:02:41,700 --> 00:02:44,840 Do mi tre rapide iranta por iri al Dosiero: Konservi. 68 00:02:44,840 --> 00:02:46,910 Kaj gravas ke Mi nomas ĉi ne "saluton." 69 00:02:46,910 --> 00:02:49,243 Do tre komuna eraro, speciale en problemo starigis unu, 70 00:02:49,243 --> 00:02:52,530 estas akcidente simple nomas via programo "akvo" aŭ "avida" aŭ "Mario" 71 00:02:52,530 --> 00:02:53,890 aŭ "kredito" aŭ simile. 72 00:02:53,890 --> 00:02:55,970 Sed vi efektive deziras fari ke vi havas la dosiersufikso 73 00:02:55,970 --> 00:02:58,928 ĉar tio estas la nura maniero kiu la tradukilo kaj ankaŭ la kodo redaktoro 74 00:02:58,928 --> 00:03:00,710 scias ke vi estas fakte skribi C-kodo. 75 00:03:00,710 --> 00:03:02,280 Do lasu min antaŭeniri kaj klaku Save. 76 00:03:02,280 --> 00:03:05,710 >> Kaj nun, ankaŭ, kion CS50 IDE faris por ni estas ĝi estas ankaŭ 77 00:03:05,710 --> 00:03:07,120 sintakso elstarigita ĉion. 78 00:03:07,120 --> 00:03:08,822 Do gxi konsistas ĉion tre bunta. 79 00:03:08,822 --> 00:03:10,780 Kaj la tuta celo de kiu ne estas funkcia. 80 00:03:10,780 --> 00:03:14,290 Estas nur por desegni okulojn al la koncepte malsamaj pecoj 81 00:03:14,290 --> 00:03:15,310 de tiu programo. 82 00:03:15,310 --> 00:03:17,570 Do ni iru antaŭen kaj kompili tiun. 83 00:03:17,570 --> 00:03:19,490 Kaj mi povas kompili ĉi en kelkaj manieroj. 84 00:03:19,490 --> 00:03:22,010 Kaj en semajno unu, la malnova lernejo vojo ni faris 85 00:03:22,010 --> 00:03:26,250 ĝi estis laŭlitere ĉe la komando line-- "tin hello.c." 86 00:03:26,250 --> 00:03:27,596 Kaj tiam mi batis Enter. 87 00:03:27,596 --> 00:03:29,720 Kaj nenio ŝajnas okazi en la fina fenestro. 88 00:03:29,720 --> 00:03:32,654 Sed kion faris ŝanĝon en la IDE? 89 00:03:32,654 --> 00:03:35,320 Kie, denove, IDE nur signifas Integrita medio de disvolviĝo. 90 00:03:35,320 --> 00:03:38,360 Estas fantazio maniero diri tiu disvolviĝo integrita 91 00:03:38,360 --> 00:03:40,620 medion por disvolvi programaron. 92 00:03:40,620 --> 00:03:42,477 Do kion ŝanĝi en la UI? 93 00:03:42,477 --> 00:03:44,310 Kion vi rimarkas ke io alia, Maria? 94 00:03:44,310 --> 00:03:47,100 >> MARIA: Mi rimarkis ion sub la IDE50 leterujo tien. 95 00:03:47,100 --> 00:03:47,850 >> DAVID Malan: Yeah. 96 00:03:47,850 --> 00:03:50,230 Do tien, ne nur do ni havos "hello.c." 97 00:03:50,230 --> 00:03:53,120 Ni havas ankaŭ "a.out", kiu estas speco de mutaj nomon por programo. 98 00:03:53,120 --> 00:03:56,430 Sed ja ĝi estas la defaŭlta nomo por programo kiam vi simple kompili vian kodon 99 00:03:56,430 --> 00:03:59,110 kaj ne diras la tradukilo kio dosiero por eligo. 100 00:03:59,110 --> 00:04:01,790 Do se mi volas kuri ĉi, Mi bezonas diri la compiler-- 101 00:04:01,790 --> 00:04:05,340 aŭ prefere, mi devas diru la laborspaca ke mi 102 00:04:05,340 --> 00:04:09,780 volas kuri la programon nomata "a.out." 103 00:04:09,780 --> 00:04:10,550 Enter. 104 00:04:10,550 --> 00:04:12,474 Kaj estas "saluton, mondo. "Nun la" ./ ". 105 00:04:12,474 --> 00:04:13,390 Estas vere grava. 106 00:04:13,390 --> 00:04:16,050 Kvankam kutime ni nur skribi la nomojn de komandoj, 107 00:04:16,050 --> 00:04:19,060 kiam ĝi estas programo vi havas skribita, vi volas diri "./" 108 00:04:19,060 --> 00:04:22,460 ĉar tio eksplicite diras Linukso ke vi volas kuri programon nomata 109 00:04:22,460 --> 00:04:26,930 "a.out" jen en tiu, kie pentras signifas tiu dosierujo kiu mi aktuale 110 00:04:26,930 --> 00:04:31,600 en, kiu hazarde estas nomata laborspaca, "a.out. 111 00:04:31,600 --> 00:04:35,410 Ĉar se mi simple diris "a.out" Enter, Mi tuj get "a.out komando ne 112 00:04:35,410 --> 00:04:38,035 fondi "ĉar la computer-- ĉar mi inventis "a.out;" 113 00:04:38,035 --> 00:04:40,910 ĝi ne venis kun la computer-- ne scias kie serĉi ŝin, 114 00:04:40,910 --> 00:04:43,590 kvankam pravas sub mia nazo, por tiel diri. 115 00:04:43,590 --> 00:04:44,090 BONE. 116 00:04:44,090 --> 00:04:49,910 Do ni povus ŝanĝi tion al esti "tin -o saluton hello.c." 117 00:04:49,910 --> 00:04:53,030 Kaj se mi batis Enter, kio programo estas tiu iranta eligo por mi? 118 00:04:53,030 --> 00:04:55,710 Kio estas la nomo de la dosiero? 119 00:04:55,710 --> 00:04:57,500 Jes, en dorso. 120 00:04:57,500 --> 00:04:58,479 Tio ĝustas. "Saluton." 121 00:04:58,479 --> 00:05:00,520 Do "saluton" tuj estos la nomo de la programo 122 00:05:00,520 --> 00:05:04,610 ĉar ni uzis tn komandlinio argumento, kiu estas nur 123 00:05:04,610 --> 00:05:08,120 maniero de ŝanĝi la konduton de la tradukilo fakte eligo 124 00:05:08,120 --> 00:05:09,450 specifa dosiernomo. 125 00:05:09,450 --> 00:05:12,400 Kaj efektive, se mi zomi eksteren kaj rigardu tien, 126 00:05:12,400 --> 00:05:17,430 nun mi havas ne nur "a.out" kaj "hello.c" sed ankaŭ "saluton", ankaŭ. 127 00:05:17,430 --> 00:05:22,410 Do nun mi povas fari "./hello," Enter. 128 00:05:22,410 --> 00:05:23,640 Kaj estas "saluton, mondo." 129 00:05:23,640 --> 00:05:25,640 Sed lastly-- kaj ĉi nun estos la konvencio 130 00:05:25,640 --> 00:05:27,590 ni uzas por la tuta semestro, typically-- 131 00:05:27,590 --> 00:05:30,070 Estas vi ankaŭ povas simple diri "fari saluton." 132 00:05:30,070 --> 00:05:33,370 Kaj ja, ĝi estas jene lin tuŝas dati ĉar ĝi jam ekzistas. 133 00:05:33,370 --> 00:05:37,860 Lasu min antaŭeniri kaj eltiri, kun la rm komando, ambaŭ "a.out" - 134 00:05:37,860 --> 00:05:39,644 kaj diri "forigi regula dosiero a.out?" 135 00:05:39,644 --> 00:05:41,810 Tio nur signifas, estas vi certas ke vi volas forigi ĝin? 136 00:05:41,810 --> 00:05:42,880 Mi tuj diru jes. 137 00:05:42,880 --> 00:05:46,690 Kaj tiam mi tuj forigu "saluton" sed ne "hello.c." 138 00:05:46,690 --> 00:05:49,920 Mi tuj diros "jes" eksplicite, sed "y" estas sufiĉa, ankaŭ. 139 00:05:49,920 --> 00:05:52,140 >> Kaj nun rimarkas se mi tajpu ls-- kiu, memoru, 140 00:05:52,140 --> 00:05:55,540 signifas list-- ĝi listigas ĉiujn de la dosieroj en mia dosierujo. 141 00:05:55,540 --> 00:05:57,850 Kaj efektive, se mi zomi eksteren kaj rigardu supre maldekstre, 142 00:05:57,850 --> 00:05:59,730 ĝi konfirmas ke kio estas en tiu leterujo, eĉ 143 00:05:59,730 --> 00:06:04,990 kvankam ĝi estas etikedita kiel IDE50 tien kaj ne laborspaca, estas nur "hello.c." 144 00:06:04,990 --> 00:06:09,152 Do nun cxi tie, se mi ĉu "fari saluton," Enter, 145 00:06:09,152 --> 00:06:12,360 nun mi vidas multe pli longa komando sed pli malnaiva komando kiu tuj 146 00:06:12,360 --> 00:06:13,940 esti utila en la semajnoj veni. 147 00:06:13,940 --> 00:06:16,720 Kaj nun mi povas diri "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Do ni prenu rapidan turneo iuj aliaj Linukso ordonas. 149 00:06:19,257 --> 00:06:21,840 Do kial ni ne prenas paŝon reen kaj reale rigardi C pli 150 00:06:21,840 --> 00:06:25,020 ĝenerale, transitioning de Scratch al C, kaj tiam konkludas kun rigardo 151 00:06:25,020 --> 00:06:27,305 ĉe la unua problemo starigis en C. Bone. 152 00:06:27,305 --> 00:06:30,430 Do mi tuj iros antaŭen kaj nur pura mian laborspaca kun Kontrolo-L nur 153 00:06:30,430 --> 00:06:31,429 teni la ekranon neta. 154 00:06:31,429 --> 00:06:33,520 Sed tio havas neniun funkcian efiki alie. 155 00:06:33,520 --> 00:06:35,820 >> Memoru ke ni jam vidis kelkaj komandoj nun. 156 00:06:35,820 --> 00:06:39,900 Do ni vidis tin, kiu ĝenerale vi ne devos ekzekuti permane anymore. 157 00:06:39,900 --> 00:06:41,650 Ni anstataŭe uzas konsiston. 158 00:06:41,650 --> 00:06:45,290 Sed ni ankaŭ vidis ls, kiu montras liston de la dosieroj en mia dosierujo. 159 00:06:45,290 --> 00:06:48,750 Kaj nun kial estas there-- ekzistas du dosieroj nun, "saluton" kaj "hello.c." 160 00:06:48,750 --> 00:06:52,240 Kial estas stelo aŭ asterisko post "saluton"? 161 00:06:52,240 --> 00:06:54,900 Kion tio signifas, bazita sur kion ni vidis en la semajno unu? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Kion vi pensas? 164 00:07:00,400 --> 00:07:02,742 Kion faras la stelo signifas? 165 00:07:02,742 --> 00:07:04,614 >> MARIA: For-- la programo "saluton"? 166 00:07:04,614 --> 00:07:05,530 DAVID Malan: "Saluton *". 167 00:07:05,530 --> 00:07:06,330 Yeah. 168 00:07:06,330 --> 00:07:07,760 Ho, jes? 169 00:07:07,760 --> 00:07:08,639 Ho, plenumebla. 170 00:07:08,639 --> 00:07:09,180 Tio ĝustas. 171 00:07:09,180 --> 00:07:10,890 Do tio signifas ke "saluton" estas plenumebla. 172 00:07:10,890 --> 00:07:13,430 Do efektive, jen kial Mi povas fari "./hello." 173 00:07:13,430 --> 00:07:13,930 Bone. 174 00:07:13,930 --> 00:07:15,179 Do kion alian mi povas fari tie ĉi? 175 00:07:15,179 --> 00:07:17,290 Nu, Ĝi rezultas mi povas ankaŭ krei dosierujojn. 176 00:07:17,290 --> 00:07:20,924 Do lasu min antaŭeniri kaj krei, ekzemple iun "pset1" dosierujo. 177 00:07:20,924 --> 00:07:23,590 Kaj la problemo aro specifo devos vin fari ĝuste tion, 178 00:07:23,590 --> 00:07:25,260 tial vi ne devas memori hodiaŭ. 179 00:07:25,260 --> 00:07:27,340 Sed "mkdir pset1" ŝajnas havi neniun efikon. 180 00:07:27,340 --> 00:07:30,540 Sed denove, neniu erarmesaĝo estas ĝenerale bona afero. 181 00:07:30,540 --> 00:07:34,060 Do se mi tajpas "ls" now-- ah, nun Mi havas plenumeblan dosieron nomatan 182 00:07:34,060 --> 00:07:36,570 "saluton," C dosiero nomata "hello.c". 183 00:07:36,570 --> 00:07:40,860 Kaj tiam la malantaŭa oblikvo, do al paroli, signifas ke tiu estas dosierujo. 184 00:07:40,860 --> 00:07:42,510 >> Do ja, nun mi volas malfermi ĝin. 185 00:07:42,510 --> 00:07:45,730 Kaj mi ne duobligi alklaku ĝin kiel en GUI, grafika medio. 186 00:07:45,730 --> 00:07:48,550 Mi anstataŭe diri "lumdisko pset1." 187 00:07:48,550 --> 00:07:49,640 Enter. 188 00:07:49,640 --> 00:07:53,100 Nenio interesa ŝajnas havi okazis krom mia eta prompto 189 00:07:53,100 --> 00:07:57,300 here-- ĉi estas Linukso la maniero de memorante mi tie, do kion dosierujo estas malfermitaj. 190 00:07:57,300 --> 00:08:00,080 Ĝi simple diras al mi eksplicite kontraste al grafike. 191 00:08:00,080 --> 00:08:05,100 Kaj se mi tajpas "ls," kial do Mi vidas alian suflori tuj, ĉu vi pensas, 192 00:08:05,100 --> 00:08:07,269 kiam mi printi la enhavo de pset1? 193 00:08:07,269 --> 00:08:09,310 MARIA: Vi probable ne havi ion en tie. 194 00:08:09,310 --> 00:08:09,630 DAVID Malan: Yeah. 195 00:08:09,630 --> 00:08:11,510 Tial do ni havas ne evidente kreis ion tien 196 00:08:11,510 --> 00:08:13,150 ĉar mi ĵus kreis la dosierujon. 197 00:08:13,150 --> 00:08:17,690 Nun, se mi volis krei file-- por Ekzemple, mi povus krei novan dosieron. 198 00:08:17,690 --> 00:08:20,190 Kaj poste mi povis iri al Konservi kaj konservi ĝin kiel, 199 00:08:20,190 --> 00:08:23,090 kiel, "mario.c" se vi faras la normo eldono de pset unu. 200 00:08:23,090 --> 00:08:27,610 Kaj tiam, kiel ajna Mac aŭ PC, nur elektu la dosierujon "pset1, Savi. 201 00:08:27,610 --> 00:08:28,740 Kaj nun la dosiero estas malplena. 202 00:08:28,740 --> 00:08:31,160 Sed ni zomi denove dum sekundo. 203 00:08:31,160 --> 00:08:32,470 Ni faru ls tie. 204 00:08:32,470 --> 00:08:34,470 Nun ni vidas "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Do ekzistas kelkaj aliaj komandoj kiuj valoras konservanta en menso super time-- 206 00:08:37,850 --> 00:08:41,200 klara, aŭ Kontrolo-L estas kion mi havas estis frapanta; mkdir ni vidis; 207 00:08:41,200 --> 00:08:45,240 rm ni vidis, tiel, kiu estas por forigo aŭ viŝante dosiero. 208 00:08:45,240 --> 00:08:49,310 Beware vi povas also-- kaj se vi rigardas ĉe enretaj seminarioj, vi rm -rf 209 00:08:49,310 --> 00:08:52,630 Estas tre komuna maniero diri forviŝi dosierujon kiu havas aferojn en ĝi. 210 00:08:52,630 --> 00:08:54,280 Nur esti súper, súper zorgema. 211 00:08:54,280 --> 00:08:58,780 -rf signifas rikure forviŝi ajn ĝi estas 212 00:08:58,780 --> 00:09:01,150 vi provas forigi kaj perforte forigi ĝin. 213 00:09:01,150 --> 00:09:04,630 Do rekursia rimedoj se ĝi estas dosierujo kun dosierujo kun dosierujon per dosierujon, 214 00:09:04,630 --> 00:09:05,690 forigi ĉiujn el ili. 215 00:09:05,690 --> 00:09:08,680 Kaj perforte signifas eĉ ne demandi min jes aŭ ne, mi estas certa? 216 00:09:08,680 --> 00:09:11,960 Do estas súper danĝera vojo de viŝante multaj aĵoj rapide. 217 00:09:11,960 --> 00:09:17,210 Sed beware-- tro ofte faras kuraĝa studento hazarde forviŝi, diri, pset 218 00:09:17,210 --> 00:09:18,000 unu, ekz. 219 00:09:18,000 --> 00:09:19,833 >> MARIA Kaj se ili nur fari -r, ili tuj 220 00:09:19,833 --> 00:09:21,870 demandi ilin pri ĉiu unuopa dosiero. 221 00:09:21,870 --> 00:09:22,790 >> DAVID Malan: Kio estas pli modere ĝena. 222 00:09:22,790 --> 00:09:23,480 >> MARIA: Yeah. 223 00:09:23,480 --> 00:09:25,813 >> DAVID Malan: Do jen kial tiel multaj el ni, mem inkluzivita, 224 00:09:25,813 --> 00:09:27,070 am en la kutimon uzi -rf. 225 00:09:27,070 --> 00:09:27,861 Sed ĝi estas danĝera. 226 00:09:27,861 --> 00:09:29,010 Do aĉetanto beware. 227 00:09:29,010 --> 00:09:31,050 Kaj tiam mv afablas interese nomita. 228 00:09:31,050 --> 00:09:33,600 Do tiu estas la movado komando, kiu sentas iom stranga 229 00:09:33,600 --> 00:09:37,260 ĉar vi povas ja uzi ĝin movi dosierojn de loko al alia. 230 00:09:37,260 --> 00:09:39,970 Ekzemple, supozu ke mi paneas. 231 00:09:39,970 --> 00:09:43,660 Supozi ke mi kreis nova dosiero por la pset. 232 00:09:43,660 --> 00:09:46,320 Kaj Mi savis ĝin kiel "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Sed supozu mi hazarde savi ĝin en IDE50-- tiel en mia laborspaca mem 234 00:09:49,970 --> 00:09:51,580 kaj ne en pset1. 235 00:09:51,580 --> 00:09:53,960 >> Vi povas vidi kiel multe ĉe pinto maldekstra. 236 00:09:53,960 --> 00:09:55,284 Ekzistas "greedy.c." 237 00:09:55,284 --> 00:09:56,450 Kaj estas kelkaj solvoj. 238 00:09:56,450 --> 00:09:58,324 Do, mi povas uzi la súper uzantamika maniero 239 00:09:58,324 --> 00:09:59,740 de simple trenante kaj delasante ĝin. 240 00:09:59,740 --> 00:10:01,910 Kaj tio estus reale korekti tiun problemon. 241 00:10:01,910 --> 00:10:04,967 Sed hodiaŭ, ni provas rigardi la pli arkanaj sed potencaj manieroj 242 00:10:04,967 --> 00:10:05,550 fari tion. 243 00:10:05,550 --> 00:10:07,880 Do mi prenas "ls" en pset1. 244 00:10:07,880 --> 00:10:09,690 Mi nur vidas "mario.c." 245 00:10:09,690 --> 00:10:13,450 Lasu min antaŭeniri kaj ne "cd ..". 246 00:10:13,450 --> 00:10:15,320 Do KD denove estas ŝanĝo dosierujo. 247 00:10:15,320 --> 00:10:18,130 ".." Signifas kio, kvankam? 248 00:10:18,130 --> 00:10:21,100 Lasta tempo mi diris "cd pset1 "iri en pset1. 249 00:10:21,100 --> 00:10:24,360 Do kiam mi diras "cd ..", kion mi faras? 250 00:10:24,360 --> 00:10:24,910 Malantaŭen. 251 00:10:24,910 --> 00:10:25,150 Yeah. 252 00:10:25,150 --> 00:10:26,750 >> Do ĝi estas tuj la tn gepatro. 253 00:10:26,750 --> 00:10:29,730 Iri unu nivelon supren, kiel eliranta el dosierujo. 254 00:10:29,730 --> 00:10:30,500 Do Enter. 255 00:10:30,500 --> 00:10:31,900 Kaj efektive, rigardu kion ĝi faris. 256 00:10:31,900 --> 00:10:37,070 Ĝi movis min nur en laborspaca anstataŭe de en pset1, kiu estas en laborspaca. 257 00:10:37,070 --> 00:10:39,710 Kaj nun se mi tajpas "ls", ekzistas tuta aro da aĵoj. 258 00:10:39,710 --> 00:10:41,650 En ekzistas "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Do nun mi uzas mv laŭvorte movi "greedy.c" en pset1. 260 00:10:48,720 --> 00:10:51,120 Kaj tiel multajn Linukso komandoj labori ĝuste kiel ĉi. 261 00:10:51,120 --> 00:10:54,470 Ili prenas neniun argumentoj aŭ ili prenas unu argumento aŭ ili prenas du komandlinio 262 00:10:54,470 --> 00:10:55,449 argumentojn kaj tiel antaŭen. 263 00:10:55,449 --> 00:10:57,240 Kaj en ĉi tiu kazo, ĝi estas laŭvorte fari kion 264 00:10:57,240 --> 00:11:01,670 diras, kvankam succinctly-- movi greedy.c en pset1. 265 00:11:01,670 --> 00:11:02,310 Enter. 266 00:11:02,310 --> 00:11:03,310 Nenio ŝajnas okazi. 267 00:11:03,310 --> 00:11:06,180 Sed se mi faras ls denove, avida forestas. 268 00:11:06,180 --> 00:11:12,437 Kaj se mi faras "cd pset1", Enter, kaj tiam ls denove, nun ĝi estas en la ĝusta loko. 269 00:11:12,437 --> 00:11:14,270 Kiel flanken, se por iuj reason-- speciale 270 00:11:14,270 --> 00:11:16,194 se vi havas intermitan reto konektebleco 271 00:11:16,194 --> 00:11:18,360 aŭ vi marsxante kampuso kun via tekkomputilo kovrilo 272 00:11:18,360 --> 00:11:20,180 fermita kaj poste malfermu ĝin denove kaj via laborspaca 273 00:11:20,180 --> 00:11:21,730 similas iun el sync, ne granda interkonsento. 274 00:11:21,730 --> 00:11:23,646 Nur reŝarĝi vian retumilon fenestro, kaj ĝi devus 275 00:11:23,646 --> 00:11:26,339 resync tiel ke la maldekstra dosiero retumilo aspektas ekzakte 276 00:11:26,339 --> 00:11:27,380 kiel la fina fenestro. 277 00:11:27,380 --> 00:11:27,921 Ne maltrankvili. 278 00:11:27,921 --> 00:11:31,460 Kiam en dubo, reŝarĝi la paĝon, do longe kiel vi savis la dosierojn jam. 279 00:11:31,460 --> 00:11:31,960 BONE. 280 00:11:31,960 --> 00:11:34,710 Do mv povas ankaŭ esti uzita por renomi dosierojn. 281 00:11:34,710 --> 00:11:36,760 Kaj ni rigardu tiun finan komandon tie. 282 00:11:36,760 --> 00:11:39,950 Do suppose-- kaj tiu estas súper komuna ankaŭ frue. 283 00:11:39,950 --> 00:11:46,400 Iuj studentoj foje krei dosieron nomitaj, ni say-- kio estas alia? 284 00:11:46,400 --> 00:11:47,730 Kiel "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Do mi nur krii, por neniu kialo, en ĉiuj ĉapoj. 286 00:11:51,080 --> 00:11:53,190 Sed tio ne estas la korekta nomo por la dosiero 287 00:11:53,190 --> 00:11:56,660 se nur ĉar nia problemo aro specifo ne diris al vi 288 00:11:56,660 --> 00:11:59,430 savi la dosieron kiel ĉiuj kaskedoj "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Anstataŭe, ni atendas "water.c" en minuskla. 290 00:12:01,320 --> 00:12:03,140 Kaj, fakte, tiu estas problema ĉar check50, 291 00:12:03,140 --> 00:12:04,370 programon vi tuj renkonti en problemo 292 00:12:04,370 --> 00:12:07,350 fiksita kiu aŭtomate testoj la praveco de via kodo 293 00:12:07,350 --> 00:12:11,615 tuj krias al vi se ĝi ne povas trovi "water.c" en ĉiuj minuskla. 294 00:12:11,615 --> 00:12:12,712 >> Do mi bezonas korekti tiun. 295 00:12:12,712 --> 00:12:14,920 Do multaj malsamaj manieroj fari tiun, la unuan el kiuj 296 00:12:14,920 --> 00:12:18,330 estus Kontrolo-click aŭ dekstra-klako la dosiernomo kaj nur ŝanĝi Renomi. 297 00:12:18,330 --> 00:12:19,740 Tute bone fari tion. 298 00:12:19,740 --> 00:12:21,820 Sed denove, hodiaŭ, ni faras ĝin iom amatoro. 299 00:12:21,820 --> 00:12:26,680 Ni uzu mv ŝanĝi "WATER.C" al "water.c." 300 00:12:26,680 --> 00:12:30,690 Do vi povas uzi ankaŭ la unua argumento renomi ĝin al la dua argumento 301 00:12:30,690 --> 00:12:34,455 se la dua argumento ne estas, Fakte, dosierujo aŭ dosierujo nomon. 302 00:12:34,455 --> 00:12:35,120 >> Bone. 303 00:12:35,120 --> 00:12:39,560 Kaj fine, iom trick-- do mi estas en miaj laborspaca dosierujo nuntempe. 304 00:12:39,560 --> 00:12:43,660 Se mi volas akiri en pset unu, Mi certe povas tajpi "cd pset1." 305 00:12:43,660 --> 00:12:47,260 Sed ĝi estas tiel teda por tajpi "pset1" aŭ plu dosiero nomoj aŭ dosierujo nomoj 306 00:12:47,260 --> 00:12:47,980 ankoraŭ. 307 00:12:47,980 --> 00:12:51,960 Do tre ofte en Linukso, kio vi povas fari estas ektajpu "PSE" 308 00:12:51,960 --> 00:12:56,100 kaj simple akiri enuan, batis Tab, kaj lasu la komputilo elpensi por vi. 309 00:12:56,100 --> 00:12:58,190 Super helpema akiri en tiu kutimo. 310 00:12:58,190 --> 00:13:01,079 La nura ruzo estas se vi havas multnombraj dosieroj aŭ dosierujoj startanta 311 00:13:01,079 --> 00:13:02,870 kun la litero "p" aŭ "ps" vi havu 312 00:13:02,870 --> 00:13:05,525 tajpi kelkajn pli antaŭ la komputila scias kion fari. 313 00:13:05,525 --> 00:13:06,820 >> MARIA: Ni ŝatas ŝparvojoj. 314 00:13:06,820 --> 00:13:08,695 >> DAVID Malan: Ĉi volo savu vin tiom da tempo. 315 00:13:08,695 --> 00:13:11,930 Kaj ankaŭ, kiel ni diris en prelego, vi povas rulumi supren en historio, supren kaj malsupren, 316 00:13:11,930 --> 00:13:15,461 trovi ĵus ekzekutita komandoj, tiel. 317 00:13:15,461 --> 00:13:15,960 Bone. 318 00:13:15,960 --> 00:13:20,904 Do nun, ni turnu nian atenton reen por simpla programo, saluton mondo. 319 00:13:20,904 --> 00:13:22,195 Do ni kompilis ĉi ĝuste. 320 00:13:22,195 --> 00:13:24,050 Kaj nun kial ni ne prenu Rigardu la datumtipoj 321 00:13:24,050 --> 00:13:26,776 kaj tiam transiro de iuj responda Scratch blokoj al C. 322 00:13:26,776 --> 00:13:27,400 MARIA: Imponega. 323 00:13:27,400 --> 00:13:30,031 Do nun ke vi jam komencis skribi programojn en C, 324 00:13:30,031 --> 00:13:32,530 ni tuj komencis paroli pri datumtipoj kaj variabloj. 325 00:13:32,530 --> 00:13:37,570 Do iuj datumtipoj ke vi volus scii ekde nun 326 00:13:37,570 --> 00:13:39,400 estas kiuj estas elstarigitaj en blua. 327 00:13:39,400 --> 00:13:42,420 Do ni havas int unua, kiu staras por entjero. 328 00:13:42,420 --> 00:13:46,075 Kaj kiu tenas entjeroj, kiel vi havu guessed-- do 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 kaj iu alia entjeroj ke vi povas pensi. 330 00:13:47,950 --> 00:13:48,730 >> DAVID Malan: Kaj ankaŭ negativaj. 331 00:13:48,730 --> 00:13:50,220 >> MARIA Kaj ankaŭ negativaj aĵoj, Yep. 332 00:13:50,220 --> 00:13:51,450 Kaj 0. 333 00:13:51,450 --> 00:13:54,250 Tiam ni havas kaleŝegoj, kiu estas glitpunktaj nombroj. 334 00:13:54,250 --> 00:13:58,360 Do jen ĉio la reelaj nombroj kiuj havas dekuman punktoj. 335 00:13:58,360 --> 00:14:03,960 Do 5.0, 5.2, kaj eĉ pli ciferoj post la dekuma punkto, 336 00:14:03,960 --> 00:14:05,620 tiel, kaj ankaŭ negativaj aĵoj. 337 00:14:05,620 --> 00:14:07,530 Tiam ni havas char kiu estas karaktero. 338 00:14:07,530 --> 00:14:10,240 Do mi opinias ke ni parolis pri tiu en prelego hodiaŭ. 339 00:14:10,240 --> 00:14:15,682 Sed ni havas leterojn, por example-- A, B, C-- kiu povas esti stokita kiel char. 340 00:14:15,682 --> 00:14:18,390 Sed tiam ni havos multe pli simboloj kiu povas esti stokita kiel char. 341 00:14:18,390 --> 00:14:22,380 Kaj tiuj estas stokitaj kiel ASCII. 342 00:14:22,380 --> 00:14:25,280 >> Kaj tiam ni havas bool, kiuj estas Booleans. 343 00:14:25,280 --> 00:14:29,067 Kaj tiuj taksi al Vera aŭ Falsa aŭ 1 kaj 0, respektive. 344 00:14:29,067 --> 00:14:31,650 DAVID Malan: Sed memoru ke bool devenas la CS50 biblioteko. 345 00:14:31,650 --> 00:14:33,300 Do ĝi ne estas konstruita en C, sed ĝi estas super utila 346 00:14:33,300 --> 00:14:34,850 havi la nocio de vera kaj falsa. 347 00:14:34,850 --> 00:14:36,990 Kaj eĉ se vi povus think-- amuza fakto. 348 00:14:36,990 --> 00:14:43,700 Bool teknike bezonas kiom da bitoj, vere, reprezenti Vera kontre Falsa? 349 00:14:43,700 --> 00:14:47,910 Kiom da bitoj vi opinias vi bezonus, maksimume? 350 00:14:47,910 --> 00:14:48,790 Jes, ĝuste tiu. 351 00:14:48,790 --> 00:14:52,077 Do rezultas ke C ne povas doni al vi nur unu bito. 352 00:14:52,077 --> 00:14:54,160 La plej malgranda unuo de mezuro vi povas akiri estas ok. 353 00:14:54,160 --> 00:14:57,090 Do estas iom malŝparema ili vi uzante tutan bajto aŭ ok bitoj, 354 00:14:57,090 --> 00:14:58,340 reprezenti Vera aŭ Falsa. 355 00:14:58,340 --> 00:15:01,807 Sed tio estas nur la vojo ĝi estas implementado en C por la CS50 biblioteko. 356 00:15:01,807 --> 00:15:04,890 MARIA Kaj tiam tiuj kiuj ni estas Ne tuj parolos pri kiel vaste 357 00:15:04,890 --> 00:15:08,060 dekstra now-- duobla, jen por pli grandaj flosoj. 358 00:15:08,060 --> 00:15:09,811 Longaj longaj kaj mallongaj ankaŭ por entjeroj. 359 00:15:09,811 --> 00:15:10,643 DAVID Malan: Efektive. 360 00:15:10,643 --> 00:15:13,190 En hacker eldono de pset unu, ni fakte uzi longajn longa. 361 00:15:13,190 --> 00:15:15,801 Sed por la normeldono, ĝi ne devus esti necesa. 362 00:15:15,801 --> 00:15:16,300 MARIA: Cool. 363 00:15:16,300 --> 00:15:17,361 BONE. 364 00:15:17,361 --> 00:15:20,110 Do operators-- vi devus esti verŝajne konata kun la plej multaj el tiuj. 365 00:15:20,110 --> 00:15:22,620 Krome, +; subtraho, -. 366 00:15:22,620 --> 00:15:24,070 Por multipliko, ni havas la *. 367 00:15:24,070 --> 00:15:25,900 Do ne la ikso, ke ni kutimas uzi. 368 00:15:25,900 --> 00:15:27,840 Divido, ni havas la backslash. 369 00:15:27,840 --> 00:15:31,380 Kaj module estas nia lasta operatoro ke ni intencas paroli pri aktuale. 370 00:15:31,380 --> 00:15:35,610 Estas operatoro kiu nin permesas preni la reston de malkonsento. 371 00:15:35,610 --> 00:15:40,630 Do se ni havas 4% 2, 4 dividitaj per 2 estas 2 kun restaĵo de 0. 372 00:15:40,630 --> 00:15:41,740 Do 4% 2 estas 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 estas 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 estas 4, kiel vi povus diveni. 375 00:15:44,870 --> 00:15:48,860 Kaj memoru uzinte ĉiuj tiuj operatoroj uzi la PEMDAS reguloj. 376 00:15:48,860 --> 00:15:54,060 >> DAVID Malan: Do esti klara, se vi do 4% 2, kial tiu 0, ĝuste? 377 00:15:54,060 --> 00:15:57,480 >> MARIA: Pro 4 dividite per 2 estas 2 kun restaĵo de 0. 378 00:15:57,480 --> 00:16:00,752 Do module donas nin ke reston kiel kontraste al la rezulto de la divido. 379 00:16:00,752 --> 00:16:02,960 DAVID Malan: Kaj efektive, kion ni trovos helpema 380 00:16:02,960 --> 00:16:05,640 cxar estas ke en iuj problemoj tio ne nepre unu, 381 00:16:05,640 --> 00:16:08,040 se vi volas havi la efekto de restriktanta vin 382 00:16:08,040 --> 00:16:10,720 al gamo de nombroj kiel 0 tra ion, 383 00:16:10,720 --> 00:16:13,904 vi povas uzi module envolvi ĉirkaŭe pli frue ol kiel la 2 miliardoj 384 00:16:13,904 --> 00:16:16,320 aŭ la 4 miliardoj valoro kiu ni raportis en prelego. 385 00:16:16,320 --> 00:16:16,870 >> MARIA: Yeah. 386 00:16:16,870 --> 00:16:19,429 Kaj eĉ en "avida" ni eble. 387 00:16:19,429 --> 00:16:21,345 DAVID Malan: Jes, en problemo starigis unu, ankaŭ. 388 00:16:21,345 --> 00:16:22,520 MARIA: Jes, bela. 389 00:16:22,520 --> 00:16:24,340 DAVID Malan: Bona sugesto. 390 00:16:24,340 --> 00:16:25,750 MARIA: Pardonu. 391 00:16:25,750 --> 00:16:28,590 Buleaj expressions-- tiel por Buleaj operatoroj, 392 00:16:28,590 --> 00:16:31,770 ni iras por paroli pri ĉiuj de tiuj kiujn vi vidas ĉi tie. 393 00:16:31,770 --> 00:16:35,310 Do nun, ni havas du egala signoj listigita por egalaj. 394 00:16:35,310 --> 00:16:38,650 Do tiuj estas por komparo. 395 00:16:38,650 --> 00:16:40,830 Ĝis nun, ni nur vidis unu egala signo. 396 00:16:40,830 --> 00:16:44,870 Tio estas kiam ni asigni valoron al variablo. 397 00:16:44,870 --> 00:16:50,160 Do se ni vidis int n = 5, tiam ni atribuita 5 al la variablo n. 398 00:16:50,160 --> 00:16:55,600 Sed se ni volas uzi == por Kompare, ni povas kontroli se n == 5. 399 00:16:55,600 --> 00:16:58,310 Kaj se n == 5, tiam tio estas vera. 400 00:16:58,310 --> 00:17:01,950 >> Do Bulea operatoroj permesos, esence, 401 00:17:01,950 --> 00:17:04,670 taksi Buleaj esprimojn al Vera aŭ Falsa. 402 00:17:04,670 --> 00:17:07,819 Do ne equals-- ni havas la ekkrion markon kaj egaluloj. 403 00:17:07,819 --> 00:17:14,240 Do ni povus ankaŭ kontroli se n ne egala 5-- tiom n! = 5. 404 00:17:14,240 --> 00:17:17,640 Malpli ol, malpli ol aŭ egala al, granda ol, pli granda ol aŭ egala al, 405 00:17:17,640 --> 00:17:20,720 kaj tiam ni havas la logikan KAJ kaj la logika AŬ. 406 00:17:20,720 --> 00:17:24,060 Kaj tiuj nin permesas taksi multoblaj Buleaj esprimoj kune 407 00:17:24,060 --> 00:17:27,930 esence kunvenos kiel unu tuta Bulea esprimo. 408 00:17:27,930 --> 00:17:34,970 Do se ni volas trovi numeron, diru, kiu estas pli granda ol 5 sed malpli ol 15 409 00:17:34,970 --> 00:17:39,810 samtempe, ni uzus la logika KAJ operatoro vidi se n estas 410 00:17:39,810 --> 00:17:42,937 pli granda ol 5 && n malpli ol 15. 411 00:17:42,937 --> 00:17:44,770 DAVID Malan: Sed ĉi tie, tro, ĝi estas vere facila 412 00:17:44,770 --> 00:17:47,290 frue al hazarde uzi nur ununuran ampersand 413 00:17:47,290 --> 00:17:48,572 aŭ ununura vertikala stango. 414 00:17:48,572 --> 00:17:51,280 Kaj espereble la tradukilo krias al vi ĉar ili efektive 415 00:17:51,280 --> 00:17:52,530 havas tre malsamajn signifojn. 416 00:17:52,530 --> 00:17:55,660 Por tiuj scivolaj, ili estas uzita por bitlarĝa operacioj, 417 00:17:55,660 --> 00:17:57,197 funkcianta sur individua bitoj. 418 00:17:57,197 --> 00:17:58,780 Sed vi do volas la paro de ili tie. 419 00:17:58,780 --> 00:18:01,560 Kaj super grava estas ke unua, la egalsigno, 420 00:18:01,560 --> 00:18:05,270 kiu estas la egaleco operatoro kiel kontraste al la asigno operatoro. 421 00:18:05,270 --> 00:18:08,552 >> MARIA Kaj la vertikala baro estas lokita inter Forigi kaj Return. 422 00:18:08,552 --> 00:18:09,260 DAVID Malan: Jes. 423 00:18:09,260 --> 00:18:11,420 Sur tipa usona klavaro. 424 00:18:11,420 --> 00:18:13,190 >> MARIA: Yep. 425 00:18:13,190 --> 00:18:15,890 Do ni saltas rekte en kondiĉa deklaroj. 426 00:18:15,890 --> 00:18:18,300 En Scratch, vi havas jam vidis, probable, 427 00:18:18,300 --> 00:18:22,730 se deklaroj kiuj permesas vin kontroli ĉu io estas vera, tiam 428 00:18:22,730 --> 00:18:23,660 fari ion alian. 429 00:18:23,660 --> 00:18:28,410 Do vi eble volis kontroli se via sprite estas 430 00:18:28,410 --> 00:18:31,410 tuŝi alian sprite aŭ la limo de via ekrano. 431 00:18:31,410 --> 00:18:35,520 Kaj tiam vi eble volis fini la ludon aŭ fari ion alian. 432 00:18:35,520 --> 00:18:40,000 Do la sintakson por ke estas "se (kondiĉo)." 433 00:18:40,000 --> 00:18:46,820 Do se via sprite tusxas ion, do estas ene la frizita krampoj. 434 00:18:46,820 --> 00:18:48,980 >> Tiam ni havas se-alia deklaroj. 435 00:18:48,980 --> 00:18:54,080 Else nin permesas fari ion se la kondiĉo, ke ni 436 00:18:54,080 --> 00:18:55,870 kontrolu en la komenco ne estas vera. 437 00:18:55,870 --> 00:19:01,530 Do se la sprite tusxas la limo fari tion, alie fari ion alian. 438 00:19:01,530 --> 00:19:04,030 Do alie fari ion alian. 439 00:19:04,030 --> 00:19:07,530 Sekvas mallonga ekzemplo por tio. 440 00:19:07,530 --> 00:19:11,551 Do se (military_time <12), ni volas printf "Bonan matenon!" 441 00:19:11,551 --> 00:19:13,300 Alie ni tuj printf "Bonan vesperon!" 442 00:19:13,300 --> 00:19:14,860 Baza ekzemplo. 443 00:19:14,860 --> 00:19:15,680 >> DAVID Malan: Bonan. 444 00:19:15,680 --> 00:19:16,760 >> MARIA: Cool. 445 00:19:16,760 --> 00:19:18,560 Do nun ni havas ŝaltilon deklaroj. 446 00:19:18,560 --> 00:19:21,960 Ŝaltilo deklaroj ĝenerale ladskatolon permesi nin fari multa la sama afero 447 00:19:21,960 --> 00:19:25,070 ke ni ĵus parolis cxirkauxita se deklaroj. 448 00:19:25,070 --> 00:19:29,440 Ekzemple, nun ni havas la ĝenerala formo de la ŝaltilo deklaro 449 00:19:29,440 --> 00:19:33,870 kiu permesas preni variablo nomis n 450 00:19:33,870 --> 00:19:37,670 kaj kompari ĝin al multajn malsamajn valorojn, kiujn ĉi tie ni 451 00:19:37,670 --> 00:19:40,010 vokis constant1, constant2. 452 00:19:40,010 --> 00:19:41,150 Ni povas havi multe pli. 453 00:19:41,150 --> 00:19:42,930 Kaj tiuj estas nomitaj kazoj. 454 00:19:42,930 --> 00:19:46,280 >> Do se ni havas ŝaltilon statement-- kaj ĉi verkoj 455 00:19:46,280 --> 00:19:50,580 nur por integers-- ni havas ŝanĝiĝema tiukaze tio n. 456 00:19:50,580 --> 00:19:53,840 Se la variablo n estas egala al constant1, ni 457 00:19:53,840 --> 00:19:59,720 ekzekutos iu fragmento de kodo aŭ io kiun ni volas fari. 458 00:19:59,720 --> 00:20:01,280 Kaj tiam ni rompus. 459 00:20:01,280 --> 00:20:04,820 Do la paŭzo signifas ke la ŝaltilo deklaro 460 00:20:04,820 --> 00:20:08,120 ĉesos ekzekuti se n estas egala al constant1, 461 00:20:08,120 --> 00:20:09,752 kaj tiam via programo daŭros. 462 00:20:09,752 --> 00:20:11,835 Ĝi eliras el la ŝaltilo deklaron kaj ĝi malebligos 463 00:20:11,835 --> 00:20:13,520 plu faros ion alian. 464 00:20:13,520 --> 00:20:17,204 >> Se, tamen, n ne egala constant1 do kazo por constant2 465 00:20:17,204 --> 00:20:17,870 estos kontrolita. 466 00:20:17,870 --> 00:20:21,750 Do se n egalas constant2, ke aliaj fragmento de kodo estos ekzekutita. 467 00:20:21,750 --> 00:20:23,850 Kaj tiam ĝi rompos se tio estas egala al ĝi. 468 00:20:23,850 --> 00:20:27,580 Kaj tiam ni povas havi also-- ne nepre, though-- defaŭlta kazo, 469 00:20:27,580 --> 00:20:32,290 kio okazos se n ne egala ajna de la kazoj kiujn vi listigis. 470 00:20:32,290 --> 00:20:35,400 Kaj en la defaŭlta kazo, ni ankaŭ ne bezonas ripozon nepre 471 00:20:35,400 --> 00:20:39,271 ĉar la ŝaltilo deklaro scios ke bezonas fini post la defaŭlta 472 00:20:39,271 --> 00:20:40,270 kazo se tio estas la kazo. 473 00:20:40,270 --> 00:20:42,140 >> DAVID Malan: Sed stile, ni ĉiam metis ĝin tien. 474 00:20:42,140 --> 00:20:42,540 >> MARIA: Yeah. 475 00:20:42,540 --> 00:20:42,710 >> DAVID Malan: Yeah. 476 00:20:42,710 --> 00:20:44,750 Do speciale kiam elkomencanta, speciale se inter tiuj malpli 477 00:20:44,750 --> 00:20:47,458 komforta, mi volus persone nur rekomendas bastono kun la oj 478 00:20:47,458 --> 00:20:51,564 kaj oj-elses kaj se-alia-se-elses kaj tiel antaŭen se nur 479 00:20:51,564 --> 00:20:53,480 ĉar ili estas iom pli simpla. 480 00:20:53,480 --> 00:20:56,142 Tiu estas bela optimumigo, aŭ kelkfoje eĉ estetike ĝi 481 00:20:56,142 --> 00:20:57,350 faras la kodon pli legebla. 482 00:20:57,350 --> 00:20:59,599 Kaj fakte, probable mez-semestre ni vidos problemo 483 00:20:59,599 --> 00:21:02,504 fiksita kie nur aspektas bone kaj pli facile legebla por la homoj 484 00:21:02,504 --> 00:21:03,670 uzante ŝaltilon deklaro. 485 00:21:03,670 --> 00:21:05,460 Sed ne maltrankviliĝu pri kroĉiĝis al tiu tro frua. 486 00:21:05,460 --> 00:21:05,680 >> MARIA: Yeah. 487 00:21:05,680 --> 00:21:08,840 Se vi havas multe de se deklaroj, ĝi nur povus esti tre legebla. 488 00:21:08,840 --> 00:21:10,965 Ĝi eble ne estas tre rapida vi iru tra gxi. 489 00:21:10,965 --> 00:21:13,230 Do ŝanĝi deklaroj povas tre utila, ankaŭ. 490 00:21:13,230 --> 00:21:17,900 Kaj ankaŭ, ne remember-- ne forgesas meti la paŭzoj en tie. 491 00:21:17,900 --> 00:21:20,330 >> DAVID Malan: Ne rememoru tion. 492 00:21:20,330 --> 00:21:24,890 >> MARIA: Ĉar tiam vi falu tra de unu kazo al alia. 493 00:21:24,890 --> 00:21:27,930 Do diru ke kazo constant1 ne havas ripozon komunikaĵo en ĝi. 494 00:21:27,930 --> 00:21:31,920 Tiam ni falu per interne kazo constant2. 495 00:21:31,920 --> 00:21:35,070 Kaj ni ne volas fari tion, se ni jam atingis kazo constant1 496 00:21:35,070 --> 00:21:37,830 kaj ĝi estas egala al n. 497 00:21:37,830 --> 00:21:45,100 >> Do, ekzemple, se ni havas variablo n kiu enhavas klaso numeron, 498 00:21:45,100 --> 00:21:48,990 kaj ni volas vidi kion tio klaso is-- se n egalas 50, 499 00:21:48,990 --> 00:21:51,957 ni tuj presi "CS50 estas Enkonduko al Komputila Scienco I. " 500 00:21:51,957 --> 00:21:53,040 Tiam ni iras por rompi. 501 00:21:53,040 --> 00:21:53,920 Kaj tio estas ĝi. 502 00:21:53,920 --> 00:21:55,950 Se, tamen, n estas egalaj al 51, ni tuj 503 00:21:55,950 --> 00:21:58,494 presi "CS51 estas Enkonduko Computer Science II. " 504 00:21:58,494 --> 00:21:59,910 Tiam, denove, ni tuj rompos. 505 00:21:59,910 --> 00:22:05,080 Tamen, se ni metis 124, 61, ajna alia nombro kiu vi povus pensi, 506 00:22:05,080 --> 00:22:06,890 aŭ programo ne tuj rekoni tion. 507 00:22:06,890 --> 00:22:09,010 Do ĝi estas tuj diri, "Pardonon, mi estas ne familiara kun tiu klaso. " 508 00:22:09,010 --> 00:22:10,009 Kaj ĝi tuj rompos. 509 00:22:10,009 --> 00:22:12,847 DAVID Malan: Do vi povas vere vidi la se, alie se, alie ideo tie. 510 00:22:12,847 --> 00:22:15,430 Estas nur malsamaj sintakso por esprimanta la ĝusta sama ideo. 511 00:22:15,430 --> 00:22:17,690 >> MARIA: Ekzakte. 512 00:22:17,690 --> 00:22:19,480 Nun ni havas nia triargumenta operatoroj. 513 00:22:19,480 --> 00:22:24,900 Do triargumenta operatoroj havas tri parts-- kondiĉo, 514 00:22:24,900 --> 00:22:27,220 ion fari se tiu kondiĉo estas vera, 515 00:22:27,220 --> 00:22:29,730 kaj tiam ion fari se tiu kondiĉo estas falsa. 516 00:22:29,730 --> 00:22:33,400 Do vi vidas, esence, la sintakso de tiu ĉi. 517 00:22:33,400 --> 00:22:37,792 Ni havas la demandosigno, kaj tiam the-- kion ni nomas tio? 518 00:22:37,792 --> 00:22:38,750 DAVID Malan: La dupunkto. 519 00:22:38,750 --> 00:22:39,100 MARIA: Colon. 520 00:22:39,100 --> 00:22:39,599 Dankon. 521 00:22:39,599 --> 00:22:41,880 Pardonon. 522 00:22:41,880 --> 00:22:45,800 Do ni rigardu ekzemplon al nia vidu se ni povas fari senton de this-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Do jen ni vidas nian Bulea operatoro == kiu komparas la variablo class_num 525 00:22:52,580 --> 00:22:53,100 al 50. 526 00:22:53,100 --> 00:22:55,150 Do class_num tendencas entjero. 527 00:22:55,150 --> 00:22:58,180 Kaj se tiu entjero egalas 50, do ni estas 528 00:22:58,180 --> 00:23:02,810 tuj stoki "Davido Malan" ene la kordo profesoro. 529 00:23:02,810 --> 00:23:05,912 Se klaso numero ne egali 50, "David Malan" 530 00:23:05,912 --> 00:23:07,120 tuj estos la profesoro. 531 00:23:07,120 --> 00:23:08,630 >> DAVID Malan: Dankon. 532 00:23:08,630 --> 00:23:12,110 Kaj do tio ŝajnas ekvivalentaj al kio, vi dirus, unuavide? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> MARIA: Al mi ŝajnas kiel se-alia deklaroj. 535 00:23:19,960 --> 00:23:20,709 >> DAVID Malan: Yeah. 536 00:23:20,709 --> 00:23:24,020 Kaj fakte, tiu estas speco de belulino Liner, 537 00:23:24,020 --> 00:23:27,520 por tiel diri, por efektivigado ĝuste la logika se-alia 538 00:23:27,520 --> 00:23:29,010 sed farante ĉiu en unu paŝo. 539 00:23:29,010 --> 00:23:29,860 >> MARIA: Ekzakte. 540 00:23:29,860 --> 00:23:30,360 Yeah. 541 00:23:30,360 --> 00:23:33,520 Do se-alia deklaroj eble levu multan spacon. 542 00:23:33,520 --> 00:23:36,283 Ili povus esti tro longa por iu tiel simpla kiel tiu. 543 00:23:36,283 --> 00:23:38,350 Do tiu povas esti tre konciza kaj tre bela. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Do nun ni iras en rigardanta ekzekutinte io denove kaj denove, 546 00:23:46,820 --> 00:23:50,060 do kontrolanta por kondiĉi plurfoje 547 00:23:50,060 --> 00:23:53,510 kaj tiam daŭrante fari ion dum tiu kondiĉo estas vera. 548 00:23:53,510 --> 00:23:56,740 Do ĉi alportas nin bele en dum cikloj. 549 00:23:56,740 --> 00:23:59,270 >> Al la maldekstra, ni havas nia unua dum ciklo. 550 00:23:59,270 --> 00:24:03,840 Do dum io estas vera, fari ion denove kaj denove. 551 00:24:03,840 --> 00:24:08,850 Do certigu rimarki ke nia kondiĉo tie validigita ĉe la supro. 552 00:24:08,850 --> 00:24:14,150 Dum kiu kun nia dua loop-- ni nomas ke do-dum loop-- ni faru ion, 553 00:24:14,150 --> 00:24:15,890 tiam ni kontrolu por kondiĉo. 554 00:24:15,890 --> 00:24:17,980 Kaj se tiu kondiĉo daŭras esti vera, 555 00:24:17,980 --> 00:24:20,150 Ni reiru kaj fari la aferon denove. 556 00:24:20,150 --> 00:24:23,360 Do la ĉefa diferenco estas kie la kondiĉo estas kontrolita por. 557 00:24:23,360 --> 00:24:29,260 Kaj la kodo neniam eble ekzekutita se la kondiĉo estas ne 558 00:24:29,260 --> 00:24:30,430 vera kun la dum ciklo. 559 00:24:30,430 --> 00:24:33,050 Dum kiu kun la do-dum buklo, ni havas la kodon 560 00:24:33,050 --> 00:24:35,380 kiu ĉiam ekzekutita almenaŭ unufoje. 561 00:24:35,380 --> 00:24:37,470 Kaj poste dum la kondiĉo daŭras esti vera, 562 00:24:37,470 --> 00:24:39,960 Ni povas reiri kaj persisti denove ene. 563 00:24:39,960 --> 00:24:43,625 Do kial vi pensas ke ni uzus do-dum buklo super tempo buklo? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Dekstra. 566 00:24:48,720 --> 00:24:52,600 Do se ni volas instigi la uzanto por ia enigo, 567 00:24:52,600 --> 00:24:55,400 se ni volas demandi ilin eniri ilian nomon, 568 00:24:55,400 --> 00:24:57,342 ni volas almenaŭ demandi ilin unufoje. 569 00:24:57,342 --> 00:24:59,050 Kaj se ili eniras tiun nomon, ni ne estas 570 00:24:59,050 --> 00:25:00,740 petos tion denove ĉar ni jam scias tion. 571 00:25:00,740 --> 00:25:02,656 Sed se ili ne eniras ilian nomon, aŭ se ili 572 00:25:02,656 --> 00:25:05,787 eniri ion ke estas evidente ne estas nomo, 573 00:25:05,787 --> 00:25:08,120 ni ankoraŭ volas daŭrigi demandante ilin sur ilia nomo. 574 00:25:08,120 --> 00:25:10,710 >> DAVID Malan: Kaj en prelego ni havis unu kiel tiu kun la akiri pozitivajn int 575 00:25:10,710 --> 00:25:13,550 Ekzemple, kie estas tute nenio kontrolu unue ĉar vi ne havas eĉ 576 00:25:13,550 --> 00:25:14,190 akiris int. 577 00:25:14,190 --> 00:25:16,680 Do ni volas fari this-- ricevas int de la user-- 578 00:25:16,680 --> 00:25:18,860 tiam kontrolu ĝin, eble, denove kaj denove kaj denove. 579 00:25:18,860 --> 00:25:21,030 >> MARIA: Ekzakte. 580 00:25:21,030 --> 00:25:22,060 Por loops-- OK. 581 00:25:22,060 --> 00:25:25,842 Por cikloj povas permesi nin fari preskaŭ la ĝusta sama afero, ankaŭ. 582 00:25:25,842 --> 00:25:27,300 Ĝi estas fakte la ĝusta sama afero. 583 00:25:27,300 --> 00:25:30,190 Do ekzistas nenio ke vi povas fari kun por bukloj 584 00:25:30,190 --> 00:25:32,840 ke vi ne povos fari kun dum cikloj. 585 00:25:32,840 --> 00:25:36,900 Sed por bukloj povas ŝajni iom iom pli komplikita sintakse 586 00:25:36,900 --> 00:25:39,730 ĉar ili havas tri partoj interne kion 587 00:25:39,730 --> 00:25:42,990 estis antaŭ nur la kondiĉo kun dum cikloj. 588 00:25:42,990 --> 00:25:48,260 Do la unua parto kiu vi maro, La maldekstruloj plej, ni havas "int enanos = 0." 589 00:25:48,260 --> 00:25:51,490 Do tiu estas kie ni pravalorizi niaj variablo. 590 00:25:51,490 --> 00:25:55,210 >> Tiam ni havas punktokomo kaj "enanos <7." 591 00:25:55,210 --> 00:25:57,100 Do tiu estas kie eliras kondiĉo reale estas. 592 00:25:57,100 --> 00:26:00,170 Do jen kion ni devus metis ĝuste en la tempo loop-- 593 00:26:00,170 --> 00:26:01,880 "dum enanos <7." 594 00:26:01,880 --> 00:26:05,380 Tie, kiu iras en la mezo de nia por buklo. 595 00:26:05,380 --> 00:26:07,190 Do "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 Kaj tiam nia lasta parto estas "enanos ++" kio estas kie ni ĝisdatigi nian variablo. 597 00:26:11,350 --> 00:26:15,470 Do la grava afero realigi estas ke tiu 598 00:26:15,470 --> 00:26:22,010 tuj trairu ĉi por buklo sepfoje kaj ekzekuti sep fojojn. 599 00:26:22,010 --> 00:26:24,020 Do ni havas sep enanos, kaj ili ĉiuj estas 600 00:26:24,020 --> 00:26:26,020 intencas diri, "Mi estas ĉi tie por helpi vin, Blancanieves " 601 00:26:26,020 --> 00:26:28,860 ĉar ili estas pretaj helpi Blancanieves. 602 00:26:28,860 --> 00:26:33,600 >> Kun dum cikloj, ni estus farinta la inicialización kaj la ĝisdatigo 603 00:26:33,600 --> 00:26:37,490 Ne ene la kondiĉo, denove, sed antaŭ aŭ ene la dum buklo 604 00:26:37,490 --> 00:26:40,210 por certiĝi, ke we-- ĉar ni ĉiam bezonas tiujn partojn. 605 00:26:40,210 --> 00:26:42,835 Do certigi ke ni havas ilin, ni havas ankoraŭ aldonis ilin 606 00:26:42,835 --> 00:26:44,580 sur, simple ne ene la parantezoj. 607 00:26:44,580 --> 00:26:47,288 >> DAVID Malan: Do ĝi aspektas like-- en la prelego, ekzemple, 608 00:26:47,288 --> 00:26:50,250 Mi preskaŭ ĉiam uzas, kiel mi kaj n kaj bele enuiga variabloj. 609 00:26:50,250 --> 00:26:53,050 Aspektas kiel vi povas uzi pli lerte nomita variabloj, tro. 610 00:26:53,050 --> 00:26:56,300 >> MARIA: Jes, ĝi estas fakte tre bela uzi iom pli priskriba variabloj 611 00:26:56,300 --> 00:26:59,400 ĉar speciale se iu alia estas legante vian code-- eble vi lernojarano 612 00:26:59,400 --> 00:27:00,940 aŭ se vi kunlabori kun somebody-- 613 00:27:00,940 --> 00:27:03,481 Vi volas certigi ke ili kompreni kion vi faras. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> BONE. 616 00:27:06,400 --> 00:27:11,435 Do ĉi tio estas iu tre funky-- por buklo ene por ciklo. 617 00:27:11,435 --> 00:27:13,060 Mi ne scias se ni vidis tion antaŭe. 618 00:27:13,060 --> 00:27:13,830 Probable ne. 619 00:27:13,830 --> 00:27:17,750 Sed ni povas efektive havas this-- tiel masxojn anstataŭ cikloj. 620 00:27:17,750 --> 00:27:25,130 Do ĉu iu volas eble piediri mi pro kio okazas ĉi tie? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVID Malan: mi prenos ponardopiko. 623 00:27:29,490 --> 00:27:29,970 MARIA: Cool. 624 00:27:29,970 --> 00:27:30,636 DAVID Malan: Bone. 625 00:27:30,636 --> 00:27:34,690 Do, spoiler-- ni volas presi la havajxoj jen en la malsupra dekstra angulo 626 00:27:34,690 --> 00:27:35,190 tie. 627 00:27:35,190 --> 00:27:35,450 >> MARIA: Dekstra. 628 00:27:35,450 --> 00:27:35,710 Jes Jes. 629 00:27:35,710 --> 00:27:38,043 >> DAVID Malan: Do ni ĵus enkalkulu specimeno eligo tie. 630 00:27:38,043 --> 00:27:42,590 Do mi povas konkludi el la plejsupra buklo ke vi estas 631 00:27:42,590 --> 00:27:45,680 ripetanta super vicoj la plej ekstera buklo, tiel diri. 632 00:27:45,680 --> 00:27:48,107 Kaj vi ripetanta super kolumnoj kun la plej interna iteracio. 633 00:27:48,107 --> 00:27:50,190 Kaj intuicie, tio devus espereble havas sencon 634 00:27:50,190 --> 00:27:52,070 ĉar nature de ĉiu programo ni vidis 635 00:27:52,070 --> 00:27:55,570 antaŭe, printf, kiu estas la funkcio ni uzas, finfine, 636 00:27:55,570 --> 00:27:58,190 havas la kapablon por presi aĵoj eksteren esence linion por linio. 637 00:27:58,190 --> 00:27:59,960 Kiel, iam vi outputted nova linio, ekzistas 638 00:27:59,960 --> 00:28:02,876 neniu duobliganta reen kaj presi ion alta en la ekrano, almenaŭ 639 00:28:02,876 --> 00:28:04,530 Ne uzante printf tiel. 640 00:28:04,530 --> 00:28:07,750 >> Kaj tiel en tiu rilato, ĝi faras senco ke la plej ekstera buklo 641 00:28:07,750 --> 00:28:10,930 devus esti raportante al la vicoj ĉar por ĉiu donita vico, 642 00:28:10,930 --> 00:28:13,650 vi tuj volas elprinti XXXXX, kaj tiam 643 00:28:13,650 --> 00:28:15,520 pluiri al la sekva vico, XXXXX. 644 00:28:15,520 --> 00:28:17,317 Do vicoj venas unue. 645 00:28:17,317 --> 00:28:19,150 Kaj tiam ene de ĉiu vico, vi presi kolumnoj. 646 00:28:19,150 --> 00:28:21,160 Se vi provis fari ĝin la male, ĝi probable ne 647 00:28:21,160 --> 00:28:21,690 elvenis kvazaux vi intencas. 648 00:28:21,690 --> 00:28:22,190 >> MARIA: Yeah. 649 00:28:22,190 --> 00:28:24,950 Ni nur povis reiri al la antaŭa vico kun printf. 650 00:28:24,950 --> 00:28:27,658 >> DAVID Malan: Sed kio estas interesa po hodiaŭa babilado pri amplekso, 651 00:28:27,658 --> 00:28:31,600 fakte, estas ke vico estas int kiu estas deklarita en la plejsupra buklo. 652 00:28:31,600 --> 00:28:34,030 Sed rimarki ke ĝi estas ankoraŭ ene de, tiel diri, 653 00:28:34,030 --> 00:28:35,982 la krispa krampoj, ke tuj sekvos, 654 00:28:35,982 --> 00:28:38,440 kvankam ĝi ne estas teknike ene de tiuj buklaj krampoj. 655 00:28:38,440 --> 00:28:41,750 Do vico estas en amplekso por la tuteco de la fragmento de kodo, 656 00:28:41,750 --> 00:28:44,690 ambaŭ ene de la ekstera por buklo kaj ene de la interna por ciklo. 657 00:28:44,690 --> 00:28:48,050 Sed kompare, kie estas kolumna amplekso? 658 00:28:48,050 --> 00:28:49,810 La variablo kolumno? 659 00:28:49,810 --> 00:28:51,310 Jes, nur en la interna ciklo. 660 00:28:51,310 --> 00:28:54,280 Kaj tio estas bone ĉar ni ne aliras ĝin ekstere de lia krispa krampoj. 661 00:28:54,280 --> 00:28:57,280 Ĉiuj ni faras estas presi nova linio je la fino mem tie. 662 00:28:57,280 --> 00:28:58,670 Do kiu fakte estas okej. 663 00:28:58,670 --> 00:29:03,740 >> Do tiu havas la efikon, ĝi aspektas kiel, fari tri vicoj kaj kvar kolumnoj. 664 00:29:03,740 --> 00:29:04,370 >> MARIA: Dekstra. 665 00:29:04,370 --> 00:29:06,270 Do unue ni iras tra nia unua vico. 666 00:29:06,270 --> 00:29:10,520 Kaj ĝuste en nia unua vico, ni faros la kvar kolumnojn ene la unua vico. 667 00:29:10,520 --> 00:29:11,980 Do ni presi kvar iksoj. 668 00:29:11,980 --> 00:29:15,800 Kaj tiam ni povas eliri la por ciklo, ekde ni jam presita el kvar iksoj. 669 00:29:15,800 --> 00:29:17,100 Kaj ni presi novan linion. 670 00:29:17,100 --> 00:29:19,920 Kaj tiam ni iros tra la saman procezon por du pli vicoj 671 00:29:19,920 --> 00:29:21,170 al fari tuta de tri. 672 00:29:21,170 --> 00:29:23,530 >> DAVID Malan: Kaj estas notinde, ke estas nur artefakto de la tiparo, la fakto 673 00:29:23,530 --> 00:29:25,680 ke la specimeno eligo similas tiel multe pli alta, 674 00:29:25,680 --> 00:29:27,520 kvazaŭ ekzistas pli vicoj da kolonoj. 675 00:29:27,520 --> 00:29:29,824 Sed estas nur ĉar la ikso estas pli alta ol ĝi estas larĝa. 676 00:29:29,824 --> 00:29:32,740 Tio estas ĉio ke okazas tie, plus la blanka spaco inter linioj. 677 00:29:32,740 --> 00:29:33,281 >> MARIA: Dekstra. 678 00:29:33,281 --> 00:29:34,792 Malvarmeta. 679 00:29:34,792 --> 00:29:35,750 DAVID Malan: Bone. 680 00:29:35,750 --> 00:29:39,830 Do rapide rigardi problemo starigis unu, preni demandojn, kaj tiam adjourn? 681 00:29:39,830 --> 00:29:40,330 Bone. 682 00:29:40,330 --> 00:29:43,164 Do en problemo starigis unu, ekzistas tri primaraj defioj, finfine. 683 00:29:43,164 --> 00:29:44,955 Sed unue, Vi trovos ke la problemo aro 684 00:29:44,955 --> 00:29:47,900 specifo, kiel kun multaj la psets tiu falo, tuj marŝi vin 685 00:29:47,900 --> 00:29:50,691 tra kelkaj varmigo ekzercoj, atentigi vin el kelkaj rimedoj 686 00:29:50,691 --> 00:29:52,440 ke vi povas aŭ ne vidis jam. 687 00:29:52,440 --> 00:29:54,440 Ekzemple, CS50 havas suite de cortometrajes, 688 00:29:54,440 --> 00:29:56,481 kio estas mallongaj filmetoj, Ne malkiel tiu, sed ke 689 00:29:56,481 --> 00:29:58,460 estas tre topiko specific-- eble kvin minutoj, 690 00:29:58,460 --> 00:30:02,360 10 minutoj en longo sur bukloj aŭ sur kondiĉoj aŭ sur algoritmoj 691 00:30:02,360 --> 00:30:04,125 aŭ poste sur pli altnivelaj temoj, ankaŭ. 692 00:30:04,125 --> 00:30:06,000 Kaj ni ĝenerale enkorpigi tiuj en la problemo 693 00:30:06,000 --> 00:30:07,950 aroj por ke studentoj havi rimedon, per kiu 694 00:30:07,950 --> 00:30:10,840 recenzi materialon kiu havu jam venis kun prelego aŭ sekcio. 695 00:30:10,840 --> 00:30:13,220 Sed tiu maniero estas pli centrita kaj pli ĉe ilia fingertips. 696 00:30:13,220 --> 00:30:15,928 >> Ni ankaŭ emas enkorpigi en problemo prende aĵoj nomata walkthroughs. 697 00:30:15,928 --> 00:30:20,790 Do preskaŭ ĉiuj ekzemploj mi faras en prelego, sur scenejo ĉi tie, ni ankaŭ 698 00:30:20,790 --> 00:30:24,565 faligis sur fotilo en antaŭi pli malrapida, 699 00:30:24,565 --> 00:30:28,760 pli intima walkthrough apud mi sur mia tekkomputilo de tiu kodo, linio por linio 700 00:30:28,760 --> 00:30:31,427 tiel ke en klaso, ni ofte senkremigi tra io aŭ iu 701 00:30:31,427 --> 00:30:33,260 estos interject kun respondi al demando. 702 00:30:33,260 --> 00:30:35,820 Sed tio ne nepre enprofundigi en por ĉiuj en la spektantaro. 703 00:30:35,820 --> 00:30:38,230 Do vi trovos kodon walkthroughs dum la plejparto de la ekzemploj 704 00:30:38,230 --> 00:30:40,950 kion ni faras cxi tie en prelego por ke vi povas promeni tra ĝi ĉe via propra ritmo 705 00:30:40,950 --> 00:30:43,580 kaj malantaŭenigi aŭ rapida antaŭen aŭ skip entute, se vi ŝatus. 706 00:30:43,580 --> 00:30:45,356 >> Ekzistas ofte kelkaj varmigo demandoj kiuj 707 00:30:45,356 --> 00:30:47,105 demandos vin ordigi el plifortigi tiun materialon 708 00:30:47,105 --> 00:30:50,250 kaj certiĝu ke vi estas comfy antaŭ vi procedi kun la resto de la pset. 709 00:30:50,250 --> 00:30:51,700 Kaj tiam, kompreneble, Tie estas la pset mem. 710 00:30:51,700 --> 00:30:53,450 Kaj unu el la aĵoj ni tre konscie 711 00:30:53,450 --> 00:30:57,202 fari en CS50 estas preskaŭ ĉiun neinteresa aŭ intelekte seninteresa 712 00:30:57,202 --> 00:30:58,910 mekanika paŝo kiu vi eble devas fari 713 00:30:58,910 --> 00:31:00,519 estas preskaŭ ĉiam tre bone dokumentita. 714 00:31:00,519 --> 00:31:03,560 Dum de la termino, ni komenci demandi pli retorika demandoj 715 00:31:03,560 --> 00:31:06,187 kiel memori kiel fari tion aux tion? 716 00:31:06,187 --> 00:31:08,520 Sed ĝenerale, vi trovos ke la problemo aroj ekiru 717 00:31:08,520 --> 00:31:10,269 tra la mekaniko de io por ke 718 00:31:10,269 --> 00:31:14,160 la interesa, intelekta defioj estas finfine lasita al vi la studento. 719 00:31:14,160 --> 00:31:17,390 >> Kun kiu diris, Zamyla, al kiu ni konservis raportante hodiaŭ en prelego, 720 00:31:17,390 --> 00:31:20,190 estas unu el niaj delongaj kunlaborantaro membro kiu ankaŭ tenas walkthroughs 721 00:31:20,190 --> 00:31:24,520 sur specifaj pset problemoj kiel Mario kaj avida, kvankam ne trinkigos tiu jaro. 722 00:31:24,520 --> 00:31:26,540 Kaj ĝi estas en tiuj walkthroughs ke ŝi ofte 723 00:31:26,540 --> 00:31:29,450 proponas iujn konsilojn kaj lertaĵoj por kiel procedi, neniam diranta vin 724 00:31:29,450 --> 00:31:31,810 precize kion fari, sed rather-- kiel kondiĉo, 725 00:31:31,810 --> 00:31:35,200 se vi will-- donante vi almenaŭ kelkaj ideoj por ke ĝi estas supren al vi, 726 00:31:35,200 --> 00:31:37,830 finfine, por decidi kiel alproksimigi ilin. 727 00:31:37,830 --> 00:31:41,200 >> MARIA: ia kiel alta nivelo kompreno de la logiko de kio 728 00:31:41,200 --> 00:31:42,220 ni petas vin fari. 729 00:31:42,220 --> 00:31:42,485 >> DAVID Malan: Ĝuste. 730 00:31:42,485 --> 00:31:44,190 Kaj, fakte, la Zamyla walkthroughs estas intencitaj 731 00:31:44,190 --> 00:31:46,190 respondi la ofte demandis demandon de kie 732 00:31:46,190 --> 00:31:48,610 mi komencis, speciale kiam tiuj longaj specifoj estas 733 00:31:48,610 --> 00:31:51,960 iom senkuraĝiganta donitaj ĉiuj teksto kaj figuraĵo kiu havas en ili. 734 00:31:51,960 --> 00:31:54,890 >> Do water.c, vi trovos post vi kompletigis ĝin, 735 00:31:54,890 --> 00:31:56,920 estas fakte relative simpla. 736 00:31:56,920 --> 00:31:58,882 Absolute estas aro vi tuj bang 737 00:31:58,882 --> 00:32:01,840 viajn kapojn kontraŭ la muron provas ekkompreni kial ĝi ne estas kompilanta 738 00:32:01,840 --> 00:32:03,450 aŭ kial ĝi ne kuras ĝuste. 739 00:32:03,450 --> 00:32:05,040 Sed unufoje vi faris per ĝi kaj iam vi 740 00:32:05,040 --> 00:32:07,620 Pasis iom da tempo luktado kun ajna de la bugs kiu vi povus havi, 741 00:32:07,620 --> 00:32:09,490 vi trovos ke ĝi estas tre mallonga programo. 742 00:32:09,490 --> 00:32:11,770 Ĝi povas esti farita en nur kelkaj linioj de kodo, la plimulto de kiuj 743 00:32:11,770 --> 00:32:15,030 ni vidis tie en prelego jam, se vi invitu la dekstra konstruelementoj. 744 00:32:15,030 --> 00:32:16,810 >> Kaj kiel ni sugestas tie, ĝi tuj demandas 745 00:32:16,810 --> 00:32:22,250 vi specifi kiom da minutoj iu duŝante sur kampuso. 746 00:32:22,250 --> 00:32:24,779 Ni specifi en la problemo agordi la frekvencon de fluo de akvo 747 00:32:24,779 --> 00:32:27,320 en, kiel, malalta fluo duŝo kapo, tre kiel la Seinfeld clip 748 00:32:27,320 --> 00:32:29,180 ni hieraŭ vidis aŭ la malon de tio. 749 00:32:29,180 --> 00:32:30,971 Kaj tiam vi simple devos fari iom de math, 750 00:32:30,971 --> 00:32:34,710 really-- aritmetiko uzanta C diri ni kiom, malglate, boteloj de akvo 751 00:32:34,710 --> 00:32:37,720 estas ke ekvivalenta al se ni estas prenante n-minuta duŝo. 752 00:32:37,720 --> 00:32:41,389 >> Nun, en mario.c, ĉi tiu tuj esti iomete pli longa programo. 753 00:32:41,389 --> 00:32:42,930 Oni ankoraŭ ne tuj estos tiu longa. 754 00:32:42,930 --> 00:32:45,130 Nur kelkaj linioj plu ol water.c. 755 00:32:45,130 --> 00:32:48,230 Sed tuj estos ŝanco amuzi la malnova lernejo Mario 756 00:32:48,230 --> 00:32:50,670 piramido de Super Mario Fratoj aŭ iu sekvi-sur. 757 00:32:50,670 --> 00:32:53,510 Oni ne tuj aspekti pli bela aŭ kiel bunta kiel tiu tie. 758 00:32:53,510 --> 00:32:56,468 Ni nur tuj uzos iom hashtags kiel ni havas ĉi tie sur la ekrano 759 00:32:56,468 --> 00:32:58,120 uzante ASCII teksto. 760 00:32:58,120 --> 00:33:00,362 Sed ĝi proksimigas la sama ideo. 761 00:33:00,362 --> 00:33:02,570 Kaj ĝi tuj estu ekzerci ke unuavide 762 00:33:02,570 --> 00:33:04,720 ŝajnas bela simple-- nur presi simplan piramido. 763 00:33:04,720 --> 00:33:07,345 Sed estas paro karakterizaĵoj tie ke estas interesa. 764 00:33:07,345 --> 00:33:12,400 Rimarku ke la plej dekstra rando de la piramido reale havas larĝo du. 765 00:33:12,400 --> 00:33:14,570 Do ekzistas du egalaj alteco kolumnoj, kiuj 766 00:33:14,570 --> 00:33:16,804 faras postulas iom bita de penso fari 767 00:33:16,804 --> 00:33:19,720 certe vin akiras ke ĝuste konvena, kontraste al nur perfekte angled 768 00:33:19,720 --> 00:33:20,220 linio. 769 00:33:20,220 --> 00:33:23,340 Do jen peco de angulo kazo sed egalas la fakta ludo. 770 00:33:23,340 --> 00:33:27,610 >> Kaj ĝi estas ankaŭ ne-evidenta unue rigardo kiel presi la blanka spaco. 771 00:33:27,610 --> 00:33:29,430 Do kiam mi rigardas la specimeno eligo here-- 772 00:33:29,430 --> 00:33:32,440 Kaj ĝi estas ankaŭ en la spec-- ĝi ia aspektas kiel rektangulo, 773 00:33:32,440 --> 00:33:35,120 sed diagonalo de la rektangulo estis forhakis, 774 00:33:35,120 --> 00:33:37,320 kaj ĝi estas nur blankaj spacoj, tiel diri. 775 00:33:37,320 --> 00:33:40,100 Kaj tial oni ofte demandis demando ĉi tie estas ĉiam, nu, 776 00:33:40,100 --> 00:33:43,302 kiel mi movas la hashtags super la dekstra? 777 00:33:43,302 --> 00:33:44,760 Aŭ kiel mi presi la malplenan spacoj? 778 00:33:44,760 --> 00:33:46,860 Kaj estas vere facila ol plej studentoj pensas. 779 00:33:46,860 --> 00:33:47,360 Dekstra? 780 00:33:47,360 --> 00:33:51,620 Vi povas proksimigi gxin vide per nur trafante la spaco trinkejo foyi 781 00:33:51,620 --> 00:33:52,700 aŭ tri fojojn. 782 00:33:52,700 --> 00:33:56,260 >> Kaj tial, kvankam kun printf ni preskaŭ ĉiam presi ĉenon aŭ int 783 00:33:56,260 --> 00:33:59,950 aŭ vorto kiel "saluton, mondo "aŭ serio de vortoj, 784 00:33:59,950 --> 00:34:03,560 vi ankaŭ povas simple printi citaĵo, spaco, unquote. 785 00:34:03,560 --> 00:34:06,320 Kaj tio efektive donas vi blankan spacon tie. 786 00:34:06,320 --> 00:34:08,330 Observu do, ke en menso kaj ne overthink ĉi. 787 00:34:08,330 --> 00:34:10,570 Vi vere devas decidi linion post linio post linio, 788 00:34:10,570 --> 00:34:14,280 Ne kontraste vian ekzemple Antaŭ momento, kio de tiuj 789 00:34:14,280 --> 00:34:18,420 kolumnoj devus esti blankaj spacoj kaj kiom da de ili estos la hashtags. 790 00:34:18,420 --> 00:34:21,560 Ĝi prenos iom da tempo, sed ĝi estas finfine logika enigmo de specoj. 791 00:34:21,560 --> 00:34:22,060 >> MARIA: Yeah. 792 00:34:22,060 --> 00:34:25,060 Sed la logiko de iranta linion post linio tuj estos tre utila ĉi tie. 793 00:34:25,060 --> 00:34:25,810 DAVID Malan: Yeah. 794 00:34:25,810 --> 00:34:28,976 Mi kredas ke la specimeno kodo vi gave-- eĉ kvankam ne estis kompleta programo. 795 00:34:28,976 --> 00:34:34,247 Vi ankoraŭ bezonas int kaj ĉefa kaj dezerta kaj #include stdio.h, 796 00:34:34,247 --> 00:34:35,580 multa la ŝtofo el prelego. 797 00:34:35,580 --> 00:34:37,629 Sed la konstruelementoj ŝajnas esti tie. 798 00:34:37,629 --> 00:34:39,920 Kaj poste persiste estas io iom pli algoritma. 799 00:34:39,920 --> 00:34:43,210 Do rezultas ke ajna momento vi iri en CVS aŭ ajna facilbutiko 800 00:34:43,210 --> 00:34:47,810 kaj iu vizagxo vi ĉe la kasisto bekojn aŭ moneroj kiel ŝanĝon, 801 00:34:47,810 --> 00:34:50,620 ĝi rezultas ke ili, la homoj, ĉu ili scias ĝin aŭ ne, 802 00:34:50,620 --> 00:34:53,300 verŝajne uzante kio estas nomata avida algoritmo, 803 00:34:53,300 --> 00:34:58,170 per kio se vi ŝuldis, diru, $ 21 ŝanĝmono ĉar ial 804 00:34:58,170 --> 00:35:01,580 vi aĉetis ion tre malmultekosta kun tre granda beko ĉe CVS, 805 00:35:01,580 --> 00:35:05,910 estus vere ĝena se la kasisto donis al vi 21 singles aŭ, plej malbona 806 00:35:05,910 --> 00:35:07,629 tamen, tuta multo de moneroj. 807 00:35:07,629 --> 00:35:10,670 Prefere, kion racia persono estas probable tuj faros estas ili tuj 808 00:35:10,670 --> 00:35:14,224 ekpreni $ 20- kaj tiam $ 1-kalkulon, kaj transdonos vin nur du kalkuloj en tiu kazo. 809 00:35:14,224 --> 00:35:17,390 MARIA: Do ili strebas minimumigi la ŝanĝo kiun ili redonas al vi. 810 00:35:17,390 --> 00:35:17,850 DAVID Malan: Ĝuste. 811 00:35:17,850 --> 00:35:19,540 Kaj sama interkonsento kun moneroj, ankaŭ. 812 00:35:19,540 --> 00:35:23,040 Se vi ŝuldas, diru, $ 0.50, espereble vi ne volas 50 pencoj. 813 00:35:23,040 --> 00:35:25,500 Vi anstataŭe volas du kvartaloj, ekz. 814 00:35:25,500 --> 00:35:27,540 Nun, tiu faras supozi ke la kasisto havas 815 00:35:27,540 --> 00:35:29,940 sufiĉe de ĉiu nomado kiu Li aŭ ŝi povus voli doni vin. 816 00:35:29,940 --> 00:35:32,148 Sed ni permesas supozi tiel en la problemo. 817 00:35:32,148 --> 00:35:35,590 Kaj la celo, finfine, estas implementar en C-kodo avida algoritmo. 818 00:35:35,590 --> 00:35:37,344 Do la uzanto estas permesita tajpi en kiom 819 00:35:37,344 --> 00:35:40,510 ŝanĝi li aŭ ŝi estas ŝuldis kun dolaroj kaj centonoj, ia glitpunktaj 820 00:35:40,510 --> 00:35:41,590 valoro verŝajne. 821 00:35:41,590 --> 00:35:45,530 Kaj tiam vi devas fari la math kaj elkompreni algorítmicamente, nu, 822 00:35:45,530 --> 00:35:49,020 kiom da moneroj Mi agu vi minimume doni al vi 823 00:35:49,020 --> 00:35:50,270 ĝuste tiu kvanto de ŝanĝiĝo. 824 00:35:50,270 --> 00:35:53,470 Sed tuj esti kelkaj delikataj partoj tie, ĉu ne? 825 00:35:53,470 --> 00:35:56,236 Kiel ekzistas la tuta imprecision afero. 826 00:35:56,236 --> 00:35:56,860 MARIA: Ekzakte. 827 00:35:56,860 --> 00:35:59,114 Do Flosanta punkto valoroj havas imprecision. 828 00:35:59,114 --> 00:36:00,780 Ĉu ni parolas pri tio en prelego hodiaŭ? 829 00:36:00,780 --> 00:36:02,340 >> DAVID Malan: Ni faris la lastfoje en prelego. 830 00:36:02,340 --> 00:36:03,506 Ni parolis pri imprecision. 831 00:36:03,506 --> 00:36:08,840 Kaj vi ne volas trompi la uzanto kiom ŝanĝo li aŭ ŝi estas ŝuldis. 832 00:36:08,840 --> 00:36:11,290 Kaj tial la walkthrough, en la problemo aro specifo, 833 00:36:11,290 --> 00:36:15,990 doni iun penson, finfine, kiel al kiel vi povas mildigi tiujn imprecision 834 00:36:15,990 --> 00:36:17,280 eraroj, potenciale. 835 00:36:17,280 --> 00:36:21,050 Ĝi estas evitebla, certe, por la enigoj ni parolas. 836 00:36:21,050 --> 00:36:23,590 Kaj, fakte, pennies-- eble ni prokrastu Zamyla, 837 00:36:23,590 --> 00:36:25,136 Mi pensas, pro la ruzoj tie. 838 00:36:25,136 --> 00:36:27,760 Do finfine, vi trovos progresio de problemoj ĉi tiu semajno, 839 00:36:27,760 --> 00:36:30,700 la unua de kiuj estas sufiĉe malgrandaj, tiam meza, tiam iom pli granda. 840 00:36:30,700 --> 00:36:33,200 Sed ĉiuj ili uzas la konstruaĵo blokojn de ĉi tiu pasinta semajno, 841 00:36:33,200 --> 00:36:35,280 de tiu supersection, problemo aro specifo 842 00:36:35,280 --> 00:36:36,710 metas vin ĉe sennombraj rimedoj. 843 00:36:36,710 --> 00:36:41,000 Sed ankoraŭ, se entute baraktante, Precipe inter tiuj malpli komfortaj 844 00:36:41,000 --> 00:36:42,917 kun neniun antaŭan fonon, venu al oficejo horoj 845 00:36:42,917 --> 00:36:44,958 lunde kaj marde kaj Merkredo kaj ĵaŭdo. 846 00:36:44,958 --> 00:36:46,950 Iru al CS50 Diskutu tra la kurson de afiŝinto, 847 00:36:46,950 --> 00:36:49,080 per kiu vi povas babili kun kunlaborantaro kaj samklasanoj. 848 00:36:49,080 --> 00:36:51,670 >> Sed finfine, mi kredas ke la bona konsilo estas nur starti frue. 849 00:36:51,670 --> 00:36:54,711 Ĝi ne estas la speco de klaso kiu vi devus esti komencante psets merkrede 850 00:36:54,711 --> 00:36:56,640 nokto, aŭ malbona ĵaŭdo nokte. 851 00:36:56,640 --> 00:36:59,067 >> MARIA: Mia plej bona konsilo estas esti komencita de la lundoj. 852 00:36:59,067 --> 00:36:59,900 DAVID Malan: lundo. 853 00:36:59,900 --> 00:37:02,490 Do se vi ne komencis already-- ne. 854 00:37:02,490 --> 00:37:04,732 Sed eĉ se ne lundo, tiam mardo. 855 00:37:04,732 --> 00:37:05,690 La pli frua la bona. 856 00:37:05,690 --> 00:37:08,605 Kaj tio estas la kialo la Kompreneble ĝi havas tiom da malfruaj tagoj estas 857 00:37:08,605 --> 00:37:10,535 doni al vi iom de psikologia premo 858 00:37:10,535 --> 00:37:13,684 komenci pli frue sed ankoraŭ lasu aferojn gliti kiam aferoj preni plu 859 00:37:13,684 --> 00:37:14,350 ol vi atendas. 860 00:37:14,350 --> 00:37:17,950 >> MARIA: Kaj vi volas uzi oficejo horoj tiel kiel vi povas, ankaŭ. 861 00:37:17,950 --> 00:37:20,291 >> DAVID Malan: Demandojn? 862 00:37:20,291 --> 00:37:20,790 Bone. 863 00:37:20,790 --> 00:37:22,930 Nu, kial ni ne adjourn tie? 864 00:37:22,930 --> 00:37:23,487