1 00:00:00,000 --> 00:00:03,353 >> [MUSIC nagpe-play] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 David MALAN: Hello, lahat. 4 00:00:06,050 --> 00:00:07,777 Ito ang supersection CS50. 5 00:00:07,777 --> 00:00:09,860 Nakatalagang Seksyon ay hindi simulan para sa isa pang linggo. 6 00:00:09,860 --> 00:00:11,580 At kaya ngayon, ako dito with-- 7 00:00:11,580 --> 00:00:12,122 >> MARIA: Maria. 8 00:00:12,122 --> 00:00:14,163 David MALAN: --to talaga tingnan ang problema 9 00:00:14,163 --> 00:00:16,110 itakda ang isa, ang kurso na iyon unang linggo ng materyal, 10 00:00:16,110 --> 00:00:19,780 maging pamilyar ka sa CS50 IDE, isang bit ng Linux, sa operating system na 11 00:00:19,780 --> 00:00:22,290 tumatakbo sa IDE, pati na rin ang Tingnan natin ang ilan sa mga transition 12 00:00:22,290 --> 00:00:25,730 mula sa simula sa C nangungunang hanggang sa hanay ng problema ng isa. 13 00:00:25,730 --> 00:00:28,340 >> Kaya nang walang karagdagang linggal, sa hanay ng problema sa isa, 14 00:00:28,340 --> 00:00:30,520 ikaw ay pagpunta sa maging ipinakilala sa CS50 IDE, na kung saan 15 00:00:30,520 --> 00:00:33,230 ay ang web-based programming environment na ginagamit namin upang 16 00:00:33,230 --> 00:00:34,280 sumulat ng mga programa. 17 00:00:34,280 --> 00:00:37,280 Ito ay idinisenyo upang tumingin napaka nakapagpapaalaala ng isang tipikal na computer 18 00:00:37,280 --> 00:00:39,430 sistema ng pagpapatakbo ng isang operating sistema na tinatawag na Linux. 19 00:00:39,430 --> 00:00:42,440 Ngunit ito ay sa mga tinatawag na ulap, na nangangahulugan na lahat ng tao sa klase 20 00:00:42,440 --> 00:00:45,100 ay maaaring aktwal na magkaroon ng kanyang sariling account at gamitin ito, pati na rin. 21 00:00:45,100 --> 00:00:48,950 >> Kaya ang karamihan ng sa iyo marahil ay hindi kailanman ginamit isang Linux na kapaligiran bago o di kaya 22 00:00:48,950 --> 00:00:50,447 kahit na isang command line na kapaligiran. 23 00:00:50,447 --> 00:00:52,280 At isang command line kapaligiran ay naiiba. 24 00:00:52,280 --> 00:00:53,200 Lahat ng ito ay sa texto. 25 00:00:53,200 --> 00:00:54,730 Lahat ng ito ay keyboard command. 26 00:00:54,730 --> 00:00:59,480 At ito ay walang mousing, walang mga icon, walang dialogue bintana, walang mga menu. 27 00:00:59,480 --> 00:01:00,212 Ito ay panay text. 28 00:01:00,212 --> 00:01:01,920 Kaya sa una, ito uri ng pakiramdam ng tulad ng isang hakbang 29 00:01:01,920 --> 00:01:04,434 paurong sa mga tuntunin ng kabutihang-asal. 30 00:01:04,434 --> 00:01:06,600 Ngunit ito ay nagtatapos up pagiging isang pulutong mas malakas na, tiyak, 31 00:01:06,600 --> 00:01:08,510 para sa isang computer scientist, sa huli. 32 00:01:08,510 --> 00:01:09,540 >> Kaya sabihin tumagal ng isang pagtingin. 33 00:01:09,540 --> 00:01:13,850 Narito ako sa CS50.io, sa pamamagitan ng kung saan maaari kang mag-log sa CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 At tulad ng sa simula, may tatlong pangunahing mga lugar sa screen na ito. 35 00:01:17,414 --> 00:01:20,080 Kaya sa kaliwang gilid, kami ay may kung ano ang magiging file browser. 36 00:01:20,080 --> 00:01:22,413 At may folder na ito sa top, na kung saan ay sa ngayon walang laman 37 00:01:22,413 --> 00:01:24,690 dahil ako got alisan ng lahat ng aking mga file bago supersection. 38 00:01:24,690 --> 00:01:27,599 At na kung saan ipapakita namin i-save ang C file na namin magsulat. 39 00:01:27,599 --> 00:01:30,890 Sa kanang tuktok, mayroon kaming isang lugar kung saan lahat ng aming mga code ay pagpunta upang makakuha ng nakasulat. 40 00:01:30,890 --> 00:01:34,610 At sa katunayan, kung nag-click ako na ito kasama ang, ito ay pagpunta sa hayaan mo akong pumili New File. 41 00:01:34,610 --> 00:01:38,310 At dito ko simulan ang pagsusulat ng C code o, talaga, ang anumang bilang ng iba pang mga wika. 42 00:01:38,310 --> 00:01:42,670 >> At pagkatapos ay sa ilalim kung saan ito sabi jharvard @ ide50-- at kalooban sa iyo 43 00:01:42,670 --> 00:01:45,080 sabihin ng isang bagay ng isang maliit na different-- kung ano ang tinatawag na ito? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Terminal window. 46 00:01:49,310 --> 00:01:49,570 Oo. 47 00:01:49,570 --> 00:01:51,810 Kaya ang terminal na window ay ang tinatawag na command line 48 00:01:51,810 --> 00:01:55,540 interface sa pamamagitan ng kung saan maaari kang makipag-ugnayan may pinagbabatayan operating system. 49 00:01:55,540 --> 00:01:58,220 At sa ngayon, kami ay pagpunta sa gumawa ng masyadong maliit na paggamit ng this-- 50 00:01:58,220 --> 00:02:01,170 lamang na sumulat ng libro, upang tumingin sa mensahe ng error na nakikita natin, 51 00:02:01,170 --> 00:02:02,347 at upang patakbuhin ang aming programa. 52 00:02:02,347 --> 00:02:04,680 Ngunit sa huli, kami ay pagpunta upang gawin ito sa marami pang iba, pati na rin. 53 00:02:04,680 --> 00:02:07,490 At maaari ka ring i-install ang software at mamahala ng iyong workspace 54 00:02:07,490 --> 00:02:09,066 sa loob ng CS50 IDE, pati na rin. 55 00:02:09,066 --> 00:02:10,440 Ngunit higit pa sa na sa ibang panahon. 56 00:02:10,440 --> 00:02:12,689 >> Kaya sabihin sige at isulat isang napaka-simpleng programa lamang 57 00:02:12,689 --> 00:02:15,064 pumunta sa pamamagitan ng isang mainit-init-up ng hello.c, na kung saan ay marahil 58 00:02:15,064 --> 00:02:16,480 ang pinakasimpleng programa maaari naming magsulat. 59 00:02:16,480 --> 00:02:18,330 Na iyong binuksan ko ang isang bagong tab. 60 00:02:18,330 --> 00:02:24,310 Pupunta ako sa sige at sabihin ng pamantayang io.h. 61 00:02:24,310 --> 00:02:25,325 Pagkatapos int pangunahing (walang bisa). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 At pagkatapos ay printf ("hello, world" backslash n, malapit quote, 64 00:02:35,200 --> 00:02:39,480 malapit panaklong, at tuldok-kuwit. 65 00:02:39,480 --> 00:02:39,990 >> Lahat tama. 66 00:02:39,990 --> 00:02:41,700 Paunawa Kaya ngayon ang aking window ay walang pamagat. 67 00:02:41,700 --> 00:02:44,840 Kaya ako masyadong mabilis ang pagpunta upang pumunta up sa File, I-save. 68 00:02:44,840 --> 00:02:46,910 At ito ay mahalaga na ang Ako tawag na ito ay hindi "hello." 69 00:02:46,910 --> 00:02:49,243 Kaya isang napaka-pangkaraniwang pagkakamali, lalo na sa mga hanay ng problema sa isa, 70 00:02:49,243 --> 00:02:52,530 ay ang tawag sinasadyang lamang ang iyong "tubig" o "sakim" o "Mario" program 71 00:02:52,530 --> 00:02:53,890 o "credit" o mga katulad. 72 00:02:53,890 --> 00:02:55,970 Ngunit ang tunay na nais na gumawa ng Siguraduhin na mayroon kang mga extension ng file 73 00:02:55,970 --> 00:02:58,928 dahil ito ay ang tanging paraan na ang ang tagatala at din ang code editor 74 00:02:58,928 --> 00:03:00,710 alam na ikaw ay aktwal na pagsusulat C code. 75 00:03:00,710 --> 00:03:02,280 Kaya hayaan mo akong magpatuloy at i-click ang I-save. 76 00:03:02,280 --> 00:03:05,710 >> At ngayon, masyadong, kung ano ang CS50 IDE ginawa para sa atin ay ito ay din ng 77 00:03:05,710 --> 00:03:07,120 syntax-highlight ang lahat ng bagay. 78 00:03:07,120 --> 00:03:08,822 Kaya ito ay ginawa ang lahat ng bagay napaka makulay. 79 00:03:08,822 --> 00:03:10,780 At ang buong layunin ng na ito ay hindi na umaandar. 80 00:03:10,780 --> 00:03:14,290 Ito ay lamang upang gumuhit ang aking mata sa conceptually iba't ibang mga piraso 81 00:03:14,290 --> 00:03:15,310 ng programang ito. 82 00:03:15,310 --> 00:03:17,570 Kaya sabihin sige at makatipon ito. 83 00:03:17,570 --> 00:03:19,490 At maaari kong sumulat ng libro na ito sa loob ng ilang mga paraan. 84 00:03:19,490 --> 00:03:22,010 At sa isang linggo, ang old-school na paraan na aming ginawa 85 00:03:22,010 --> 00:03:26,250 ito ay literal sa utos line-- "clang hello.c." 86 00:03:26,250 --> 00:03:27,596 At pagkatapos ay ako pindutin ang Enter. 87 00:03:27,596 --> 00:03:29,720 At tila walang mangyari sa terminal na window. 88 00:03:29,720 --> 00:03:32,654 Ngunit kung ano ang ginawa ang pagbabago sa mga IDE? 89 00:03:32,654 --> 00:03:35,320 Saan, muli, ay nangangahulugan lamang IDE Integrated Development Environment. 90 00:03:35,320 --> 00:03:38,360 Ito ay isang magarbong paraan ng sinasabi ito integrated development 91 00:03:38,360 --> 00:03:40,620 kapaligiran para sa pagbuo ng software. 92 00:03:40,620 --> 00:03:42,477 Kaya kung ano ang magbabago sa UI? 93 00:03:42,477 --> 00:03:44,310 Ano paunawa ninyo na iba, Maria? 94 00:03:44,310 --> 00:03:47,100 >> MARIA: Napansin ko ng isang bagay sa ilalim ng IDE50 folder up dito. 95 00:03:47,100 --> 00:03:47,850 >> David MALAN: Oo. 96 00:03:47,850 --> 00:03:50,230 Kaya hanggang dito, hindi lamang ang mayroon tayo "hello.c." 97 00:03:50,230 --> 00:03:53,120 Mayroon din kaming "a.out," na siyang uri ng isang pipi na pangalan para sa isang programa. 98 00:03:53,120 --> 00:03:56,430 Ngunit sa katunayan, ito ay ang default na pangalan para sa isang program kapag compile mo lang ang iyong code 99 00:03:56,430 --> 00:03:59,110 at huwag sabihin sa mga compiler kung ano ang file na output. 100 00:03:59,110 --> 00:04:01,790 Kaya kung nais kong patakbuhin ito, ako kailangan na sabihin ang compiler-- 101 00:04:01,790 --> 00:04:05,340 o sa halip, kailangan ko na sabihin ang workspace na ako 102 00:04:05,340 --> 00:04:09,780 nais na patakbuhin ang program na tinatawag na "a.out." 103 00:04:09,780 --> 00:04:10,550 Enter. 104 00:04:10,550 --> 00:04:12,474 At may "hello, mundo. "ngayon ang" ./ ". 105 00:04:12,474 --> 00:04:13,390 ay talagang mahalaga. 106 00:04:13,390 --> 00:04:16,050 Kahit na ang aming normal lamang isulat ang mga pangalan ng mga utos, 107 00:04:16,050 --> 00:04:19,060 kapag ito ay isang program na sa iyo nakasulat, mo nais na sabihin ang "./" 108 00:04:19,060 --> 00:04:22,460 dahil na tahasang nagsasabi sa Linux na nais mong magpatakbo ng isang programa na tinatawag na 109 00:04:22,460 --> 00:04:26,930 "a.out" na ito sa, kung saan dot nangangahulugan direktoryong ito na kasalukuyang ako 110 00:04:26,930 --> 00:04:31,600 in, na ang mangyayari sa tinatawag na workspace, "a.out. 111 00:04:31,600 --> 00:04:35,410 Dahil kung ang sinabi ko lang "a.out," Ipasok, Pupunta ako upang makakuha ng "a.out command hindi 112 00:04:35,410 --> 00:04:38,035 natagpuan "dahil ang computer-- dahil imbento ko "a.out;" 113 00:04:38,035 --> 00:04:40,910 hindi ito nanggaling sa mga computer-- ay hindi alam kung saan upang tumingin para sa mga ito, 114 00:04:40,910 --> 00:04:43,590 kahit na ito ay karapatan sa ilalim ng aking ilong, kaya na magsalita. 115 00:04:43,590 --> 00:04:44,090 SIGE. 116 00:04:44,090 --> 00:04:49,910 Kaya maaari naming baguhin ito sa maging "clang -o kumusta hello.c." 117 00:04:49,910 --> 00:04:53,030 At kung ako pindutin ang Enter, ano ang programa ito po ba ay output para sa akin? 118 00:04:53,030 --> 00:04:55,710 Ano ang pangalan ng file? 119 00:04:55,710 --> 00:04:57,500 Oo, sa likod. 120 00:04:57,500 --> 00:04:58,479 Tama iyan. "Kamusta." 121 00:04:58,479 --> 00:05:00,520 Kaya "hello" ay magiging ang pangalan ng programa 122 00:05:00,520 --> 00:05:04,610 dahil kami ay ginagamit ng isang tinatawag na argument ng linya ng command, na lamang 123 00:05:04,610 --> 00:05:08,120 isang paraan ng pagbabago ng pag-uugali ng ang compiler sa aktwal na output 124 00:05:08,120 --> 00:05:09,450 isang tiyak na pangalan ng file. 125 00:05:09,450 --> 00:05:12,400 At sa katunayan, kung ako mag-zoom out at tumingin dito, 126 00:05:12,400 --> 00:05:17,430 ngayon ay mayroon akong hindi lamang "a.out" at "hello.c" ngunit din "hello," pati na rin. 127 00:05:17,430 --> 00:05:22,410 Kaya ngayon maaari kong gawin "./hello," Enter. 128 00:05:22,410 --> 00:05:23,640 At may "hello, world." 129 00:05:23,640 --> 00:05:25,640 Ngunit lastly-- at ito ay ngayon ay ang convention 130 00:05:25,640 --> 00:05:27,590 ginagamit namin ang buong semestre, typically-- 131 00:05:27,590 --> 00:05:30,070 ay maaari mo ring sabihin lamang ang "gumawa ng halo." 132 00:05:30,070 --> 00:05:33,370 At sa katunayan, ito ay nagsasabi na ito ay up to date dahil ito ay umiiral na. 133 00:05:33,370 --> 00:05:37,860 Hayaan akong sige at mag-alis, na may ang rm utos, parehong "a.out" - 134 00:05:37,860 --> 00:05:39,644 at sabihin ang "alisin regular file a.out?" 135 00:05:39,644 --> 00:05:41,810 Ito ay nangangahulugan lamang, ikaw ay bang gusto mong tanggalin ito? 136 00:05:41,810 --> 00:05:42,880 Pupunta ako sa oo. 137 00:05:42,880 --> 00:05:46,690 At pagkatapos ay ako pagpunta sa alisin "hello" ngunit hindi "hello.c." 138 00:05:46,690 --> 00:05:49,920 Pupunta ako sa sabihin ang "yes" tahasan, ngunit "y" ay sapat na, pati na rin. 139 00:05:49,920 --> 00:05:52,140 >> At ngayon mapansin kung ako type ls-- saan, pagpapabalik, 140 00:05:52,140 --> 00:05:55,540 nangangahulugan list-- inililista nito ang lahat ng mga file sa aking folder. 141 00:05:55,540 --> 00:05:57,850 At sa katunayan, kung ako mag-zoom out at tumingin sa kaliwang tuktok, 142 00:05:57,850 --> 00:05:59,730 Kinukumpirma nito na kung ano ang sa folder na ito, kahit na 143 00:05:59,730 --> 00:06:04,990 kahit na ito ay may label na bilang IDE50 up dito at hindi workspace, ito ay "hello.c." lamang 144 00:06:04,990 --> 00:06:09,152 Kaya ngayon down dito, kung ako huwag "gumawa ng hello," Ipasok, 145 00:06:09,152 --> 00:06:12,360 ngayon ay nakikita ko ng isang mas matagal na utos kundi isang mas sopistikadong utos na pupuntahan 146 00:06:12,360 --> 00:06:13,940 upang maging kapaki-pakinabang sa mga darating na linggo. 147 00:06:13,940 --> 00:06:16,720 At ngayon maaari kong sabihin "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Kaya sabihin kumuha ng isang mabilis na tour utos ng ilang mga iba pang mga Linux. 149 00:06:19,257 --> 00:06:21,840 Pagkatapos ay kung bakit hindi namin kumuha ng isang hakbang bumalik at talagang tumingin sa C pa 150 00:06:21,840 --> 00:06:25,020 sa pangkalahatan, paglipat mula sa scratch sa C, at pagkatapos ay tapusin na may hitsura 151 00:06:25,020 --> 00:06:27,305 sa unang problema itakda sa C. Lahat ng karapatan. 152 00:06:27,305 --> 00:06:30,430 Kaya ako pagpunta sa sige lang at malinis ang aking workspace sa Control-L lang 153 00:06:30,430 --> 00:06:31,429 upang panatilihin ang malinis at maayos ang screen. 154 00:06:31,429 --> 00:06:33,520 Ngunit na ay walang functional epekto sa ibang paraan. 155 00:06:33,520 --> 00:06:35,820 >> Pagpapabalik na nasaksihan namin ng ilang mga utos na ngayon. 156 00:06:35,820 --> 00:06:39,900 Kaya nakita namin na ang kumalatong, na sa pangkalahatan ay sa iyo hindi magkakaroon ng sa mano-mano-execute anymore. 157 00:06:39,900 --> 00:06:41,650 Sa halip Gagamitin namin make. 158 00:06:41,650 --> 00:06:45,290 Subalit nakita din namin ls, na nagpapakita ng isang listahan ng mga file sa aking directory. 159 00:06:45,290 --> 00:06:48,750 At ngayon there-- ang dahilan kung bakit mayroong dalawang file ngayon, "hello" at "hello.c." 160 00:06:48,750 --> 00:06:52,240 Bakit mayroong isang star o isang asterisk pagkatapos ng "hello"? 161 00:06:52,240 --> 00:06:54,900 Ano ang ginawa na maging tanda, batay sa kung ano ang nakita natin sa isang linggo? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Ano sa palagay mo? 164 00:07:00,400 --> 00:07:02,742 Ano ang ginagawa ng star magpakilala? 165 00:07:02,742 --> 00:07:04,614 >> MARIA: For-- programa ng "hello"? 166 00:07:04,614 --> 00:07:05,530 David MALAN: "Hello *". 167 00:07:05,530 --> 00:07:06,330 Oo. 168 00:07:06,330 --> 00:07:07,760 Oh, oo? 169 00:07:07,760 --> 00:07:08,639 Oh, executable. 170 00:07:08,639 --> 00:07:09,180 Tama iyan. 171 00:07:09,180 --> 00:07:10,890 Kaya na nangangahulugan na "hello" ay executable. 172 00:07:10,890 --> 00:07:13,430 Kaya sa katunayan, iyon ang dahilan kung bakit Ang maaari kong gawin "./hello." 173 00:07:13,430 --> 00:07:13,930 Lahat tama. 174 00:07:13,930 --> 00:07:15,179 Kaya ano pa ang maaari kong gawin dito? 175 00:07:15,179 --> 00:07:17,290 Well, ito ay lumiliko out na ko ring lumikha ng mga direktoryo. 176 00:07:17,290 --> 00:07:20,924 Kaya hayaan mo akong magpatuloy at lumikha, halimbawa, ang isang "pset1" direktoryo. 177 00:07:20,924 --> 00:07:23,590 At ang mga detalye ng problema set ay magkakaroon ng sa iyo nang eksakto na ito, 178 00:07:23,590 --> 00:07:25,260 kaya hindi mo na kailangang tandaan ang araw na ito. 179 00:07:25,260 --> 00:07:27,340 Ngunit "mkdir pset1" Mukhang na magkaroon ng walang epekto. 180 00:07:27,340 --> 00:07:30,540 Ngunit muli, walang mensahe ng error ay karaniwang isang magandang bagay. 181 00:07:30,540 --> 00:07:34,060 Kaya kung type ko "ls" now-- ah, ngayon Mayroon akong isang executable file na tinatawag na 182 00:07:34,060 --> 00:07:36,570 "hello," isang C file na tinatawag na "hello.c." 183 00:07:36,570 --> 00:07:40,860 At pagkatapos ay ang trailing slash, para sa magsalita, ay nangangahulugan na ito ay isang directory. 184 00:07:40,860 --> 00:07:42,510 >> Kaya sa katunayan, ngayon ay nais ko upang buksan ito. 185 00:07:42,510 --> 00:07:45,730 At hindi ko double click sa mga ito tulad ng sa isang GUI, isang graphical na kapaligiran. 186 00:07:45,730 --> 00:07:48,550 Sa halip kong sabihin "cd pset1." 187 00:07:48,550 --> 00:07:49,640 Enter. 188 00:07:49,640 --> 00:07:53,100 Walang mga kagiliw-giliw parang may nangyari maliban sa aking maliit na prompt 189 00:07:53,100 --> 00:07:57,300 here-- ito ay Linux ng paraan ng pagpapaalala sa akin kung saan ako, kaya kung ano ang folder ay bukas. 190 00:07:57,300 --> 00:08:00,080 Lang ang nagsasabi sa akin tahasan bilang laban sa graphically. 191 00:08:00,080 --> 00:08:05,100 At kung ako type "ls," bakit ako nakakakita ng iba pang prompt agad, sa tingin ninyo, 192 00:08:05,100 --> 00:08:07,269 kapag ang listahan ko ang mga nilalaman ng pset1? 193 00:08:07,269 --> 00:08:09,310 MARIA: Ikaw ay malamang na hindi magkaroon ng anumang bagay sa doon. 194 00:08:09,310 --> 00:08:09,630 David MALAN: Oo. 195 00:08:09,630 --> 00:08:11,510 Kaya pagkatapos kami ay may hindi malinaw naman nilikha ng anumang bagay sa doon 196 00:08:11,510 --> 00:08:13,150 dahil ako lamang nilikha sa direktoryo. 197 00:08:13,150 --> 00:08:17,690 Ngayon, kung Nais kong lumikha ng isang file para sa Halimbawa, maaari ba akong lumikha ng isang bagong file. 198 00:08:17,690 --> 00:08:20,190 At pagkatapos ay ako ay pumunta sa I-save at i-save ito bilang, 199 00:08:20,190 --> 00:08:23,090 tulad ng, "mario.c" kung gumagawa ka ng ang standard na edisyon ng pset isa. 200 00:08:23,090 --> 00:08:27,610 At pagkatapos, tulad ng anumang Mac o PC, lamang piliin ang folder na "pset1, I-save. 201 00:08:27,610 --> 00:08:28,740 At ngayon, ang file ay walang laman. 202 00:08:28,740 --> 00:08:31,160 Ngunit sabihin mag-zoom in muli para sa isang ikalawang ipaalam. 203 00:08:31,160 --> 00:08:32,470 Ni gawin ls dito. 204 00:08:32,470 --> 00:08:34,470 Ngayon tingnan natin ang "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Kaya may ilang mga iba pang mga utos na ay nagkakahalaga ng pagsunod sa isip ng higit sa time-- 206 00:08:37,850 --> 00:08:41,200 malinaw, o Control-L ay kung ano na ko naging pagpindot; mkdir nakakita kami; 207 00:08:41,200 --> 00:08:45,240 rm nasaksihan namin, pati na rin, na kung saan ay para sa pag-alis o pagtanggal ng isang file. 208 00:08:45,240 --> 00:08:49,310 Mag-ingat sa maaari mong also-- at kung titingnan mo sa online na tutorial, makikita mo ang rm-RF 209 00:08:49,310 --> 00:08:52,630 ay isang karaniwang paraan ng pagsasabi tanggalin ang isang folder na may mga bagay-bagay sa loob nito. 210 00:08:52,630 --> 00:08:54,280 Basta super, sobrang maingat. 211 00:08:54,280 --> 00:08:58,780 RF ay nangangahulugan recursively tanggalin ang anumang mga ito ay 212 00:08:58,780 --> 00:09:01,150 sinusubukan mong tanggalin ang at pwersahang tanggalin ito. 213 00:09:01,150 --> 00:09:04,630 Kaya recursive na paraan kung ito ay isang folder na may isang folder na may isang folder na may isang folder, 214 00:09:04,630 --> 00:09:05,690 tanggalin ang lahat ng mga ito. 215 00:09:05,690 --> 00:09:08,680 At pwersahang nangangahulugan hindi kahit hilingin sa akin ng oo o hindi, ako ba? 216 00:09:08,680 --> 00:09:11,960 Kaya ito ay isang super mapanganib na paraan ng mabilis na pagtanggal ng maraming mga bagay-bagay. 217 00:09:11,960 --> 00:09:17,210 Ngunit beware-- masyadong madalas ay isang matapang ang mag-aaral sinasadyang tanggalin, sabihin nating, pset 218 00:09:17,210 --> 00:09:18,000 isa, halimbawa. 219 00:09:18,000 --> 00:09:19,833 >> MARIA: At kung sila lamang gawin r, sila ay pagpunta 220 00:09:19,833 --> 00:09:21,870 upang hilingin sa kanila tungkol sa bawat solong file. 221 00:09:21,870 --> 00:09:22,790 >> David MALAN: Alin ang Katamtamang nakakainis. 222 00:09:22,790 --> 00:09:23,480 >> MARIA: Oo. 223 00:09:23,480 --> 00:09:25,813 >> David MALAN: Kaya na ang dahilan kung bakit kaya marami sa amin, sa sarili kasama, 224 00:09:25,813 --> 00:09:27,070 Ako sa ugali ng mga gamit-RF. 225 00:09:27,070 --> 00:09:27,861 Ngunit ito ay mapanganib. 226 00:09:27,861 --> 00:09:29,010 Kaya mag-ingat bumibili. 227 00:09:29,010 --> 00:09:31,050 At pagkatapos mv ay uri ng kawili-wili pinangalanan. 228 00:09:31,050 --> 00:09:33,600 Kaya ito ay ang utos na ilipat, na pakiramdam ng isang maliit na kakaiba 229 00:09:33,600 --> 00:09:37,260 dahil maaari mong talagang gamitin ito upang ilipat ang mga file mula sa isang lugar patungo sa isa pa. 230 00:09:37,260 --> 00:09:39,970 Halimbawa, ipagpalagay na ako messed up. 231 00:09:39,970 --> 00:09:43,660 Ipagpalagay na nilikha ko isang bagong file para sa pset. 232 00:09:43,660 --> 00:09:46,320 At save ito bilang "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Ngunit ipagpalagay ko sinasadyang i-save ito sa IDE50-- kaya sa aking mismo workspace 234 00:09:49,970 --> 00:09:51,580 at hindi sa pset1. 235 00:09:51,580 --> 00:09:53,960 >> Maaari mong makita ang bilang marami sa kaliwang tuktok. 236 00:09:53,960 --> 00:09:55,284 May "greedy.c." 237 00:09:55,284 --> 00:09:56,450 At may ilang mga solusyon. 238 00:09:56,450 --> 00:09:58,324 Kaya isa, maaari ko bang gamitin ang super paraan user-friendly 239 00:09:58,324 --> 00:09:59,740 na lamang ng pag-drag at pag-drop sa mga ito. 240 00:09:59,740 --> 00:10:01,910 At iyon ay aktwal na ayusin ang problemang ito. 241 00:10:01,910 --> 00:10:04,967 Ngunit ngayon, ang aming sinusubukan na tingnan ang mga ang mas arcane ngunit malakas na paraan 242 00:10:04,967 --> 00:10:05,550 ng paggawa nito. 243 00:10:05,550 --> 00:10:07,880 Kaya hayaan mo akong kumuha ng "ls" sa pset1. 244 00:10:07,880 --> 00:10:09,690 At lamang ko makita "mario.c." 245 00:10:09,690 --> 00:10:13,450 Hayaan akong magpatuloy at gawin ang "cd ..". 246 00:10:13,450 --> 00:10:15,320 Kaya CD muli ay palitan ang directory. 247 00:10:15,320 --> 00:10:18,130 ".." Ay nangangahulugan na ano, kahit na? 248 00:10:18,130 --> 00:10:21,100 Huling oras na sinabi ko "cd pset1 "upang pumunta sa pset1. 249 00:10:21,100 --> 00:10:24,360 Kaya kapag sinabi ko "cd ..", kung ano ang aking ginagawa? 250 00:10:24,360 --> 00:10:24,910 Paurong. 251 00:10:24,910 --> 00:10:25,150 Oo. 252 00:10:25,150 --> 00:10:26,750 >> Kaya ito ay pagpunta sa mga tinatawag na magulang. 253 00:10:26,750 --> 00:10:29,730 Pumunta sa isang antas up, tulad ng paglabas mula sa isang folder. 254 00:10:29,730 --> 00:10:30,500 Kaya ang Enter. 255 00:10:30,500 --> 00:10:31,900 At sa katunayan, tumingin kung ano ang ginawa ito. 256 00:10:31,900 --> 00:10:37,070 Sa halip ay inilipat ito sa akin sa lamang workspace ng sa pset1, na nasa workspace. 257 00:10:37,070 --> 00:10:39,710 At ngayon, kung nagta-type ako "ls", may isang buong grupo ng mga bagay-bagay. 258 00:10:39,710 --> 00:10:41,650 Sa may "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Kaya ngayon hayaan mo akong gamitin mv sa literal ilipat "greedy.c" sa pset1. 260 00:10:48,720 --> 00:10:51,120 At kaya ng isang pulutong ng Linux command gumana nang eksakto tulad nito. 261 00:10:51,120 --> 00:10:54,470 Nagsasagawa sila ng walang argumento o kumuha sila ng isa argument o kumuha sila ng dalawang command line 262 00:10:54,470 --> 00:10:55,449 argumento at iba pa. 263 00:10:55,449 --> 00:10:57,240 At sa kasong ito, ito ay literal ginagawa kung ano 264 00:10:57,240 --> 00:11:01,670 sinasabi nito, kahit succinctly-- ilipat greedy.c sa pset1. 265 00:11:01,670 --> 00:11:02,310 Enter. 266 00:11:02,310 --> 00:11:03,310 Walang tila sa mangyayari. 267 00:11:03,310 --> 00:11:06,180 Ngunit kung gagawin ko muli ng isang ls, sakim ay wala na. 268 00:11:06,180 --> 00:11:12,437 At kung gagawin ko "cd pset1", Ipasok, at pagkatapos ay ls muli, na ngayon ay nasa tamang lugar. 269 00:11:12,437 --> 00:11:14,270 Bilang isang tabi, kung para sa ilang reason-- lalo 270 00:11:14,270 --> 00:11:16,194 kung mayroon kang mga paulit-ulit pagkakakonekta ng network 271 00:11:16,194 --> 00:11:18,360 o ikaw ay paglalakad sa paligid campus sa iyong laptop talukap ng mata 272 00:11:18,360 --> 00:11:20,180 sarado at pagkatapos ay buksan ito muli at ang iyong workspace 273 00:11:20,180 --> 00:11:21,730 tila medyo out of sync, hindi sang-ayon. 274 00:11:21,730 --> 00:11:23,646 I-reload lang ang iyong browser window, at ito ay dapat na 275 00:11:23,646 --> 00:11:26,339 resync upang ang kaliwang mukhang eksakto file browser 276 00:11:26,339 --> 00:11:27,380 tulad ng mga terminal na window. 277 00:11:27,380 --> 00:11:27,921 Hindi mag-alala. 278 00:11:27,921 --> 00:11:31,460 Kapag may pagdududa, i-reload ang pahina, kaya hangga't iyong na-save ang mga file na. 279 00:11:31,460 --> 00:11:31,960 SIGE. 280 00:11:31,960 --> 00:11:34,710 Kaya mv ay maaari ring gamitin upang palitan ang pangalan ng mga file. 281 00:11:34,710 --> 00:11:36,760 At tumagal ng isang pagtingin sa ipaalam ito huling utos dito. 282 00:11:36,760 --> 00:11:39,950 Kaya suppose-- at ito ay super karaniwan, masyadong, sa maagang bahagi. 283 00:11:39,950 --> 00:11:46,400 Ang ilang mga mag-aaral lumikha ng paminsan-minsan ang isang file tinatawag, ni say-- ano ang isa pa hayaan? 284 00:11:46,400 --> 00:11:47,730 Gusto "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Kaya kukunin ko na lang sumigaw, para walang dahilan, sa lahat ng takip. 286 00:11:51,080 --> 00:11:53,190 Ngunit ito ay hindi ang tamang pangalan para sa file 287 00:11:53,190 --> 00:11:56,660 kung lamang dahil naka-set ang aming mga problema specification ay hindi magsasabi sa iyo 288 00:11:56,660 --> 00:11:59,430 upang i-save ang file bilang ang lahat ng caps "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Sa halip, inaasahan namin "water.c" sa lowercase. 290 00:12:01,320 --> 00:12:03,140 At, sa katunayan, ito ay may problema dahil check50, 291 00:12:03,140 --> 00:12:04,370 isang programa na iyong pupuntahan makipagtagpo sa problema 292 00:12:04,370 --> 00:12:07,350 itakda ang isa na awtomatikong sumusubok ang kawastuhan ng iyong code 293 00:12:07,350 --> 00:12:11,615 ay pagpunta sa sumigaw sa iyo kung hindi ito maaari mahanap ang "water.c" sa lahat ng maliit na. 294 00:12:11,615 --> 00:12:12,712 >> Kaya kailangan ko upang ayusin ito. 295 00:12:12,712 --> 00:12:14,920 Kaya maraming iba't ibang paraan upang gawin ito, ang unang na kung saan 296 00:12:14,920 --> 00:12:18,330 ay magiging sa Control-click o i-right-click ang pangalan ng file at baguhin lamang Rename. 297 00:12:18,330 --> 00:12:19,740 Ganap fine upang gawin iyon. 298 00:12:19,740 --> 00:12:21,820 Subalit muli, ngayon, sabihin gawin ito ng isang maliit na may interes. 299 00:12:21,820 --> 00:12:26,680 Gamitin natin mv upang baguhin Ipaalam "WATER.C" sa "water.c." 300 00:12:26,680 --> 00:12:30,690 Kaya maaari mo ring gamitin ang unang argumento upang palitan ang pangalan nito sa ikalawang argument 301 00:12:30,690 --> 00:12:34,455 kung ang pangalawang argumento ay hindi, sa katunayan, ang isang folder o isang pangalan ng direktoryo. 302 00:12:34,455 --> 00:12:35,120 >> Lahat tama. 303 00:12:35,120 --> 00:12:39,560 At sa wakas, ang isang maliit na trick-- kaya ako sa aking direktoryo workspace sa sandaling ito. 304 00:12:39,560 --> 00:12:43,660 Kung gusto ko upang makakuha ng sa pset isa, Ako tiyak na nagta-type "cd pset1." 305 00:12:43,660 --> 00:12:47,260 Ngunit ito ay kaya nakakapagod mag-type "pset1" o mas mahabang pangalan ng file o mga pangalan ng direktoryo 306 00:12:47,260 --> 00:12:47,980 pa rin. 307 00:12:47,980 --> 00:12:51,960 Kaya napakadalas sa Linux, kung ano maaari mong gawin ay simulan ang pag-type ng "pse" 308 00:12:51,960 --> 00:12:56,100 at makakuha lamang nababato, pindutin ang Tab, at hayaan ang computer tayahin ito para sa iyo. 309 00:12:56,100 --> 00:12:58,190 Super helpful upang makakuha ng sa na ugali. 310 00:12:58,190 --> 00:13:01,079 Ang tanging catch ay kung mayroon kang maramihang mga file o folder na nagsisimula 311 00:13:01,079 --> 00:13:02,870 may titik "p" o "PS," na maaaring mayroon ka 312 00:13:02,870 --> 00:13:05,525 mag-type ng ilang mga mas bago ang alam computer kung ano ang gagawin. 313 00:13:05,525 --> 00:13:06,820 >> MARIA: Gusto naming shortcut. 314 00:13:06,820 --> 00:13:08,695 >> David MALAN: kalooban Ito i-save mo kaya maraming oras. 315 00:13:08,695 --> 00:13:11,930 At din, tulad ng sinabi namin sa panayam, mo maaaring mag-scroll up sa kasaysayan, pataas at pababa, 316 00:13:11,930 --> 00:13:15,461 upang maghanap ng mga kamakailan-lamang na pinaandar utos, pati na rin. 317 00:13:15,461 --> 00:13:15,960 Lahat tama. 318 00:13:15,960 --> 00:13:20,904 Kaya ngayon, ni i-alaman pabalik ipaalam sa isang simpleng programa, hello mundo. 319 00:13:20,904 --> 00:13:22,195 Kaya inipon namin ang mga ito nang eksakto. 320 00:13:22,195 --> 00:13:24,050 At ngayon kung bakit hindi natin isang pagtingin sa mga uri ng data 321 00:13:24,050 --> 00:13:26,776 at pagkatapos ay lumipat mula sa ilang kaukulang bloke scratch sa C. 322 00:13:26,776 --> 00:13:27,400 MARIA: Kahanga-hanga. 323 00:13:27,400 --> 00:13:30,031 Kaya ngayon na ikaw ay nagsimula pagsulat ng mga programa sa C, 324 00:13:30,031 --> 00:13:32,530 kami ay pagpunta sa simulan ang pakikipag tungkol sa mga uri at mga variable data. 325 00:13:32,530 --> 00:13:37,570 Kaya ang ilang mga uri ng data na iyong ay nais na malaman simula ngayon 326 00:13:37,570 --> 00:13:39,400 ay ang mga na naka-highlight sa asul. 327 00:13:39,400 --> 00:13:42,420 Kaya mayroon kaming int una, na ang ibig sabihin integer. 328 00:13:42,420 --> 00:13:46,075 At na humahawak integers, tulad ng sa iyo maaaring mayroon guessed-- kaya 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 at ang anumang iba pang mga integers na maaari mong isipin. 330 00:13:47,950 --> 00:13:48,730 >> David MALAN: At negatibong din. 331 00:13:48,730 --> 00:13:50,220 >> MARIA: At din negatibong mga bago, yep. 332 00:13:50,220 --> 00:13:51,450 And 0. 333 00:13:51,450 --> 00:13:54,250 Pagkatapos kami ay may sa kamay, na kung saan ay lumulutang point numero. 334 00:13:54,250 --> 00:13:58,360 Kaya na ang lahat ng mga tunay na mga numero na mayroon ang mga decimal point. 335 00:13:58,360 --> 00:14:03,960 So 5.0, 5.2, at kahit pa digit pagkatapos ng decimal point, 336 00:14:03,960 --> 00:14:05,620 pati na rin, at din negatibong iyan. 337 00:14:05,620 --> 00:14:07,530 Pagkatapos kami ay may char kung saan ay isang character. 338 00:14:07,530 --> 00:14:10,240 Kaya sa tingin ko usapan natin ang tungkol ito sa lecture ngayon. 339 00:14:10,240 --> 00:14:15,682 Ngunit kami ay may mga titik, para example-- A, B, C-- na maaaring ma-imbak bilang isang pansamantalang trabaho. 340 00:14:15,682 --> 00:14:18,390 Ngunit pagkatapos ay mayroon kami ng maraming higit pang mga simbolo na maaaring ma-imbak bilang isang pansamantalang trabaho. 341 00:14:18,390 --> 00:14:22,380 At ang mga ito ay naka-imbak na ASCII. 342 00:14:22,380 --> 00:14:25,280 >> At pagkatapos kami ay may bool, na kung saan ay Booleans. 343 00:14:25,280 --> 00:14:29,067 At yaong suriin sa True o False o 1 at 0, ayon sa pagkakabanggit. 344 00:14:29,067 --> 00:14:31,650 David MALAN: At pagpapabalik na bool ay mula sa CS50 library. 345 00:14:31,650 --> 00:14:33,300 Kaya ito ay hindi nakapaloob sa C, ngunit ito ay sobrang kapaki-pakinabang 346 00:14:33,300 --> 00:14:34,850 na magkaroon ng mga kuru-kuro ng mga tunay at huwad. 347 00:14:34,850 --> 00:14:36,990 At kahit na sa iyo Maaaring think-- masaya katotohanan. 348 00:14:36,990 --> 00:14:43,700 Technically pangangailangan kung gaano karaming mga bits A bool, tunay, na kumakatawan sa True laban False? 349 00:14:43,700 --> 00:14:47,910 Gaano karaming mga bits sa tingin ninyo ikaw ay kailangan, maximally? 350 00:14:47,910 --> 00:14:48,790 Oo, isa lang. 351 00:14:48,790 --> 00:14:52,077 Kaya ito ay lumiliko out na ang C hindi maaaring magbigay ka lamang ng isang bit. 352 00:14:52,077 --> 00:14:54,160 Ang pinakamaliit na yunit ng pagsukat maaari kang makakuha ay walong. 353 00:14:54,160 --> 00:14:57,090 Kaya ito ay isang maliit na bulagsak nila ikaw ay gamit ang isang buong byte, o walong bits, 354 00:14:57,090 --> 00:14:58,340 upang kumatawan sa true o false. 355 00:14:58,340 --> 00:15:01,807 Ngunit ito lamang ang paraan na ito ay ipinatupad sa C sa pamamagitan ng CS50 library. 356 00:15:01,807 --> 00:15:04,890 MARIA: At pagkatapos ay ang mga na hindi namin hindi pagpunta sa makipag-usap tungkol sa bilang ng husto 357 00:15:04,890 --> 00:15:08,060 karapatan now-- double, iyan ay para sa mas malaking kamay. 358 00:15:08,060 --> 00:15:09,811 Long mahaba at maikling ay din para sa integer. 359 00:15:09,811 --> 00:15:10,643 David MALAN: Sa katunayan. 360 00:15:10,643 --> 00:15:13,190 Sa Hacker edisyon ng pset isa, talaga naming gamitin ang haba haba. 361 00:15:13,190 --> 00:15:15,801 Ngunit para sa mga standard edition, hindi ito dapat na kinakailangan. 362 00:15:15,801 --> 00:15:16,300 MARIA: Cool. 363 00:15:16,300 --> 00:15:17,361 SIGE. 364 00:15:17,361 --> 00:15:20,110 Kaya operators-- dapat ay malamang na pamilyar sa karamihan ng mga ito. 365 00:15:20,110 --> 00:15:22,620 Addition, +; pagbabawas, -. 366 00:15:22,620 --> 00:15:24,070 Para sa pagpaparami, kami ay ang *. 367 00:15:24,070 --> 00:15:25,900 Kaya hindi ang X na namin ay karaniwang gamitin. 368 00:15:25,900 --> 00:15:27,840 Division, mayroon kaming ang backslash. 369 00:15:27,840 --> 00:15:31,380 At modulo ay ang aming huling operator na kami ay pagpunta sa makipag-usap tungkol sa ngayon. 370 00:15:31,380 --> 00:15:35,610 Ito ay isang operator na nagbibigay-daan sa amin upang kunin ang mga natitira sa isang dibisyon. 371 00:15:35,610 --> 00:15:40,630 Kaya kung kami ay may 4% 2, 4 na hinati sa pamamagitan ng 2 ay 2 na may natitira sa 0. 372 00:15:40,630 --> 00:15:41,740 Kaya 4% 2 ay 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 ay 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 ay 4, tulad ng maaari mong nahulaan. 375 00:15:44,870 --> 00:15:48,860 At tandaan na kapag gumagamit ng lahat ng mga operator na gamitin ang mga patakaran PEMDAS. 376 00:15:48,860 --> 00:15:54,060 >> David MALAN: Kaya upang maging malinaw, kung ikaw gawin 4% 2, kung bakit ay na 0, eksakto? 377 00:15:54,060 --> 00:15:57,480 >> MARIA: Dahil 4 na hinati sa 2 ay 2 na may isang natitira sa 0. 378 00:15:57,480 --> 00:16:00,752 Kaya modulo ay nagbibigay sa amin na naiwan na laban sa mga resulta ng paghahati. 379 00:16:00,752 --> 00:16:02,960 David MALAN: At sa katunayan, ano ang makikita namin ito nakatulong sa iyo 380 00:16:02,960 --> 00:16:05,640 para sa ay na sa ilang mga problema iyan ay hindi kinakailangan ng isa, 381 00:16:05,640 --> 00:16:08,040 kung nais mong magkaroon ng mga epekto ng paghihigpit sa iyong sarili 382 00:16:08,040 --> 00:16:10,720 sa isang hanay ng mga numero tulad ng 0 hanggang ang isang bagay, 383 00:16:10,720 --> 00:16:13,904 maaari mong gamitin ang modulo sa wrapper sa paligid mas maaga kaysa tulad ng 2 bilyong 384 00:16:13,904 --> 00:16:16,320 o ang halaga 4 na bilyon na Na-usapan natin ang tungkol sa panayam. 385 00:16:16,320 --> 00:16:16,870 >> MARIA: Oo. 386 00:16:16,870 --> 00:16:19,429 At kahit na sa "sakim" baka namin. 387 00:16:19,429 --> 00:16:21,345 David MALAN: Oo, sa hanay ng problema sa isa, pati na rin. 388 00:16:21,345 --> 00:16:22,520 MARIA: Oo, nice. 389 00:16:22,520 --> 00:16:24,340 David MALAN: Magandang hint. 390 00:16:24,340 --> 00:16:25,750 MARIA: Sorry. 391 00:16:25,750 --> 00:16:28,590 Boolean expressions-- kaya para sa Boolean operator, 392 00:16:28,590 --> 00:16:31,770 kami ay pagpunta sa makipag-usap tungkol sa lahat ng sa mga ito na makikita mo dito. 393 00:16:31,770 --> 00:16:35,310 Kaya ngayon, kami ay may dalawang pantay na mga palatandaan na nakalista para sa katumbas. 394 00:16:35,310 --> 00:16:38,650 Kaya ang mga ay para sa paghahambing. 395 00:16:38,650 --> 00:16:40,830 Sa ngayon, na lamang namin nakita isa ay katumbas sign. 396 00:16:40,830 --> 00:16:44,870 Na kapag magtalaga namin isang halaga sa isang variable. 397 00:16:44,870 --> 00:16:50,160 Kaya kung nasaksihan namin int n = 5, pagkatapos nagtalaga kami ng 5 sa mga variable n. 398 00:16:50,160 --> 00:16:55,600 Ngunit kung gusto naming gamitin == para paghahambing, maaari naming suriin kung n == 5. 399 00:16:55,600 --> 00:16:58,310 At kung n == 5, pagkatapos na ang totoo. 400 00:16:58,310 --> 00:17:01,950 >> Kaya Boolean operator daan sa amin, talaga, 401 00:17:01,950 --> 00:17:04,670 upang suriin Boolean expression upang true o false. 402 00:17:04,670 --> 00:17:07,819 Kaya hindi equals-- na namin ang mga exclamation mark at equals. 403 00:17:07,819 --> 00:17:14,240 Kaya maaari naming ring suriin kung n ay hindi katumbas 5-- kaya n! = 5. 404 00:17:14,240 --> 00:17:17,640 Mas mababa kaysa sa, mas mababa sa o katumbas ng, mas malaki kaysa sa, mas malaki kaysa sa o katumbas ng, 405 00:17:17,640 --> 00:17:20,720 at pagkatapos ay mayroon kaming ang mga lohikal na AT at ang mga lohikal na OR. 406 00:17:20,720 --> 00:17:24,060 At ang mga daan sa amin upang suriin maramihang Boolean expression magkasama 407 00:17:24,060 --> 00:17:27,930 sa talaga magtagpo bilang isang buong Boolean expression. 408 00:17:27,930 --> 00:17:34,970 Kaya kung nais namin upang mahanap ang isang numero, sabihin, iyon ay mas malaki kaysa 5 ngunit mas mababa sa 15 409 00:17:34,970 --> 00:17:39,810 sa parehong oras, gusto naming gamitin ang mga lohikal AND operator upang makita kung n ay 410 00:17:39,810 --> 00:17:42,937 mas malaki kaysa 5 && n mas mababa sa 15. 411 00:17:42,937 --> 00:17:44,770 David MALAN: At dito, masyadong, ito ay tunay madali 412 00:17:44,770 --> 00:17:47,290 maaga upang sinasadyang gamitin lamang ang isang solong ampersand 413 00:17:47,290 --> 00:17:48,572 o ng isang solong vertical bar. 414 00:17:48,572 --> 00:17:51,280 At sana ang tagatala ay sumigaw sa iyo dahil sila ay talagang 415 00:17:51,280 --> 00:17:52,530 magkaroon ng isang napaka iba't ibang kahulugan. 416 00:17:52,530 --> 00:17:55,660 Para sa mga curious, ang mga ito ginagamit para sa mga operasyon bitwise, 417 00:17:55,660 --> 00:17:57,197 operating sa mga indibidwal na mga bits. 418 00:17:57,197 --> 00:17:58,780 Subalit hindi mo nais ang mga pares ng mga ito dito. 419 00:17:58,780 --> 00:18:01,560 At sobrang mahalaga ay na unang isa, ang equal sign, 420 00:18:01,560 --> 00:18:05,270 kung saan ay ang operator na pagkakapantay-pantay ng kasang-ayon ang assignment operator. 421 00:18:05,270 --> 00:18:08,552 >> MARIA: At ang mga vertical na bar ay matatagpuan sa pagitan ng Delete at Return. 422 00:18:08,552 --> 00:18:09,260 David MALAN: Oo. 423 00:18:09,260 --> 00:18:11,420 Sa isang tipikal na US keyboard. 424 00:18:11,420 --> 00:18:13,190 >> MARIA: Yep. 425 00:18:13,190 --> 00:18:15,890 Kaya sabihin tumalon karapatan sa kondisyon na pahayag. 426 00:18:15,890 --> 00:18:18,300 Sa simula, na sa iyo na nakita, marahil, 427 00:18:18,300 --> 00:18:22,730 kung ang mga pahayag na nagbibigay-daan sa iyo upang suriin kung ang isang bagay ay totoo, pagkatapos 428 00:18:22,730 --> 00:18:23,660 gawin ang iba pa. 429 00:18:23,660 --> 00:18:28,410 Kaya maaaring may gusto sa iyo upang suriin kung ang iyong mga engkanto ay 430 00:18:28,410 --> 00:18:31,410 hawakan ng ilang mga iba pang mga engkanto o ang border ng iyong screen. 431 00:18:31,410 --> 00:18:35,520 At pagkatapos ay maaaring may gusto sa inyo na tapusin ang laro o gawin ang iba pa. 432 00:18:35,520 --> 00:18:40,000 Kaya ang syntax para sa na ay "kung (kalagayan)." 433 00:18:40,000 --> 00:18:46,820 Kaya kung ang iyong mga engkanto ay pagpindot sa isang bagay, pagkatapos ay ang sa loob ng kulot tirante. 434 00:18:46,820 --> 00:18:48,980 >> Pagkatapos kami ay may kung-ibang mga pahayag. 435 00:18:48,980 --> 00:18:54,080 Iba Pa ay nagbibigay-daan sa amin upang gawin ang isang bagay kung ang mga kondisyon na namin 436 00:18:54,080 --> 00:18:55,870 suriin para sa simula ay hindi totoo. 437 00:18:55,870 --> 00:19:01,530 Kaya kung ang mga engkanto ay pagpindot sa border, gawin ito ng ibang tao gawin ang iba pa. 438 00:19:01,530 --> 00:19:04,030 Kaya kung hindi man gawin ang iba pa. 439 00:19:04,030 --> 00:19:07,530 Pagkatapos kami ay may isang maikling halimbawa para sa mga ito. 440 00:19:07,530 --> 00:19:11,551 Kaya kung ang (military_time <12), kami ay nais na printf "Magandang umaga!" 441 00:19:11,551 --> 00:19:13,300 Iba Pa kami ng pagpunta sa printf "Magandang gabi!" 442 00:19:13,300 --> 00:19:14,860 Basic na halimbawa. 443 00:19:14,860 --> 00:19:15,680 >> David MALAN: Magandang. 444 00:19:15,680 --> 00:19:16,760 >> MARIA: Cool. 445 00:19:16,760 --> 00:19:18,560 Kaya ngayon kami ay lumipat na pahayag. 446 00:19:18,560 --> 00:19:21,960 Lumipat pahayag sa pangkalahatang maaari daan sa amin upang gawin ang isang pulutong ng mga parehong bagay 447 00:19:21,960 --> 00:19:25,070 na usapan natin lamang tungkol sa kung ang mga pahayag. 448 00:19:25,070 --> 00:19:29,440 Halimbawa, sa ngayon kami ay may mga pangkalahatang form ng switch statement 449 00:19:29,440 --> 00:19:33,870 na nagbibigay-daan sa amin upang kunin variable na tinatawag na n a 450 00:19:33,870 --> 00:19:37,670 at ihambing ito sa isang pulutong ng mga iba't ibang mga halaga, na kung saan namin dito 451 00:19:37,670 --> 00:19:40,010 may tinatawag constant1, constant2. 452 00:19:40,010 --> 00:19:41,150 Maaari naming magkaroon ng isang mas marami. 453 00:19:41,150 --> 00:19:42,930 At ang mga ito ay tinatawag na mga kaso. 454 00:19:42,930 --> 00:19:46,280 >> Kaya kung kami ay may isang lumipat statement-- at ito gumagana 455 00:19:46,280 --> 00:19:50,580 para lamang sa integers-- kami ay may isang variable sa kasong ito na ang n. 456 00:19:50,580 --> 00:19:53,840 Kung ang variable n ay katumbas ng constant1, kami 457 00:19:53,840 --> 00:19:59,720 ay magsagawa ng ilang mga snippet ng code o isang bagay na gusto naming gawin. 458 00:19:59,720 --> 00:20:01,280 At pagkatapos ay namin masira. 459 00:20:01,280 --> 00:20:04,820 Kaya ang break ay nangangahulugan na ang switch statement 460 00:20:04,820 --> 00:20:08,120 titigil Isinasagawa kung n ay katumbas ng constant1, 461 00:20:08,120 --> 00:20:09,752 at pagkatapos ang iyong programa ay magpapatuloy. 462 00:20:09,752 --> 00:20:11,835 Ito ay lumabas sa labas ng lumipat statement at makikita ito 463 00:20:11,835 --> 00:20:13,520 patuloy na gawin ang iba pa. 464 00:20:13,520 --> 00:20:17,204 >> Kung, gayunpaman, n ay hindi katumbas ng constant1, pagkatapos kaso para constant2 465 00:20:17,204 --> 00:20:17,870 ay naka-check. 466 00:20:17,870 --> 00:20:21,750 Kaya kung n ay katumbas constant2, na ang ibang snippet ng code ay pinaandar. 467 00:20:21,750 --> 00:20:23,850 At pagkatapos ay makikita ito ng break kung iyon ay katumbas ng mga ito. 468 00:20:23,850 --> 00:20:27,580 At pagkatapos ay maaari kaming magkaroon ng also-- hindi kinakailangan, though-- isang default na kaso, 469 00:20:27,580 --> 00:20:32,290 na kung saan ang mangyayari kung n ay hindi katumbas ng alinman sa mga kaso na iyong inilista. 470 00:20:32,290 --> 00:20:35,400 At sa default kaso, kami din hindi na kailangan ng pahinga talaga 471 00:20:35,400 --> 00:20:39,271 dahil ang switch statement ay alam na kinakailangan nito upang tapusin pagkatapos ng default 472 00:20:39,271 --> 00:20:40,270 kaso kung iyon ang kaso. 473 00:20:40,270 --> 00:20:42,140 >> David MALAN: Ngunit stylistically, palagi naming ilagay ito sa doon. 474 00:20:42,140 --> 00:20:42,540 >> MARIA: Oo. 475 00:20:42,540 --> 00:20:42,710 >> David MALAN: Oo. 476 00:20:42,710 --> 00:20:44,750 Kaya lalo na kapag nagsisimula, lalo na kung kabilang sa mga mas 477 00:20:44,750 --> 00:20:47,458 kumportable, gusto ko personal Inirerekumenda lamang stick sa ifs 478 00:20:47,458 --> 00:20:51,564 at ifs-elses at kung-tao-kung-elses at iba pa kung lamang 479 00:20:51,564 --> 00:20:53,480 dahil ang mga ito ng isang maliit na mas tapat. 480 00:20:53,480 --> 00:20:56,142 Ito ay isang magandang optimization, o minsan kahit aesthetically ito 481 00:20:56,142 --> 00:20:57,350 gumagawa pa nababasa ang mga code. 482 00:20:57,350 --> 00:20:59,599 At sa katunayan, marahil mid-semester namin makita ang isang problema 483 00:20:59,599 --> 00:21:02,504 itakda kung saan mas mahusay ito lamang ang hitsura at mas madaling basahin para sa mga kawani na tao 484 00:21:02,504 --> 00:21:03,670 sa pamamagitan ng paggamit ng isang lumipat statement. 485 00:21:03,670 --> 00:21:05,460 Ngunit huwag mag-alala tungkol sa masyadong maaga nakakapit sa mga ito. 486 00:21:05,460 --> 00:21:05,680 >> MARIA: Oo. 487 00:21:05,680 --> 00:21:08,840 Kung mayroon kang isang pulutong ng kung pahayag, maaaring ito lamang ay hindi maaaring masyadong nababasa. 488 00:21:08,840 --> 00:21:10,965 Maaaring hindi ito masyadong mabilis para sa inyo na pumunta sa pamamagitan nito. 489 00:21:10,965 --> 00:21:13,230 Kaya lumipat na pahayag ay maaaring maging tunay na kapaki-pakinabang, pati na rin. 490 00:21:13,230 --> 00:21:17,900 At din, huwag remember-- hindi kalimutan na maglagay ng mga break sa doon. 491 00:21:17,900 --> 00:21:20,330 >> David MALAN: Huwag tandaan na ito. 492 00:21:20,330 --> 00:21:24,890 >> MARIA: Dahil pagkatapos ay maaari kang mahulog sa pamamagitan ng mula sa isang kaso sa isa pa. 493 00:21:24,890 --> 00:21:27,930 Kaya sabihin natin na kaso constant1 ay hindi magkaroon ng pahinga statement sa loob nito. 494 00:21:27,930 --> 00:21:31,920 At maaari tayong mabigo sa loob kaso constant2. 495 00:21:31,920 --> 00:21:35,070 At hindi namin nais na gawin na kung Narating na namin ang kaso constant1 496 00:21:35,070 --> 00:21:37,830 at ito ay katumbas ng n. 497 00:21:37,830 --> 00:21:45,100 >> Kaya, halimbawa, kung kami ay may isang variable n na naglalaman ng isang numero ng klase, 498 00:21:45,100 --> 00:21:48,990 at gusto naming makita kung ano na ang klase is-- kung n ay katumbas ng 50, 499 00:21:48,990 --> 00:21:51,957 kami ay pagpunta sa i-print ang "CS50 ay Panimula sa Computer Science I. " 500 00:21:51,957 --> 00:21:53,040 Pagkatapos kami ay pagpunta sa masira. 501 00:21:53,040 --> 00:21:53,920 At na ito. 502 00:21:53,920 --> 00:21:55,950 Kung, gayunpaman, n ay katumbas hanggang 51, kami ay pagpunta 503 00:21:55,950 --> 00:21:58,494 upang i-print "CS51 ay Panimula sa Computer Science II. " 504 00:21:58,494 --> 00:21:59,910 Pagkatapos, muli, kami ay pagpunta sa break. 505 00:21:59,910 --> 00:22:05,080 Gayunpaman, kung pagkatapos ay inilalagay namin 124, 61, ang anumang iba pang mga numero na maaari mong isipin, 506 00:22:05,080 --> 00:22:06,890 o programa ay hindi pagpunta upang makilala na. 507 00:22:06,890 --> 00:22:09,010 Kaya ito ay pagpunta sa sabihin, "Sorry, hindi ako hindi pamilyar sa klase. " 508 00:22:09,010 --> 00:22:10,009 At ito ay pagpunta sa break. 509 00:22:10,009 --> 00:22:12,847 David MALAN: Kaya maaari mong talagang makita ang kung, tao kung, tao ideya dito. 510 00:22:12,847 --> 00:22:15,430 Ito ay naiiba lamang syntax para sa pagpapahayag ang eksaktong parehong ideya. 511 00:22:15,430 --> 00:22:17,690 >> MARIA: Eksakto. 512 00:22:17,690 --> 00:22:19,480 Ngayon na namin ang aming tatlong bagay operator. 513 00:22:19,480 --> 00:22:24,900 Mayroon So tatlong bagay operator tatlong parts-- isang kondisyon, 514 00:22:24,900 --> 00:22:27,220 isang bagay na dapat gawin kung kondisyon na ito ay totoo, 515 00:22:27,220 --> 00:22:29,730 at pagkatapos ay isang bagay na gawin kung ang condition ay hindi totoo. 516 00:22:29,730 --> 00:22:33,400 Kaya tingnan mo, talaga, ang syntax ng iyon dito. 517 00:22:33,400 --> 00:22:37,792 Mayroon kaming mga tandang pananong, at pagkatapos the-- ano ang tawag namin sa mga ito? 518 00:22:37,792 --> 00:22:38,750 David MALAN: Ang colon. 519 00:22:38,750 --> 00:22:39,100 MARIA: Colon. 520 00:22:39,100 --> 00:22:39,599 Salamat. 521 00:22:39,599 --> 00:22:41,880 Sorry. 522 00:22:41,880 --> 00:22:45,800 Kaya tingnan natin ang ating halimbawa upang ipaalam tingnan kung maaari naming magkaroon ng kahulugan ng this-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Kaya dito nakita namin ang aming Boolean operator == na naghahambing sa mga variable class_num 525 00:22:52,580 --> 00:22:53,100 to 50. 526 00:22:53,100 --> 00:22:55,150 Kaya class_num tindahan isang integer. 527 00:22:55,150 --> 00:22:58,180 At kung na integer ay katumbas ng 50, at pagkatapos ay hindi namin 528 00:22:58,180 --> 00:23:02,810 pagpunta sa mga tindahan ng "David Malan" sa loob ng mga propesor string. 529 00:23:02,810 --> 00:23:05,912 Kung number klase ay hindi kasing-halaga ng 50, "hindi David Malan" 530 00:23:05,912 --> 00:23:07,120 ay magiging mga propesor. 531 00:23:07,120 --> 00:23:08,630 >> David MALAN: Salamat sa iyo. 532 00:23:08,630 --> 00:23:12,110 At kaya ito ay tila katumbas ng ano, gusto mo sabihin, sa unang tingin? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> MARIA: Para sa akin ito ay tila tulad ng kung-ibang mga pahayag. 535 00:23:19,960 --> 00:23:20,709 >> David MALAN: Oo. 536 00:23:20,709 --> 00:23:24,020 At sa katunayan, ito ang uri ng isang magandang isa liner, 537 00:23:24,020 --> 00:23:27,520 wika nga, para sa pagpapatupad eksakto ang logic ng kung-ibang 538 00:23:27,520 --> 00:23:29,010 ngunit ang paggawa ng lahat ng bagay sa isang hakbang. 539 00:23:29,010 --> 00:23:29,860 >> MARIA: Eksakto. 540 00:23:29,860 --> 00:23:30,360 Oo. 541 00:23:30,360 --> 00:23:33,520 Kaya kung-ibang mga pahayag baka tumagal ng isang pulutong ng mga puwang. 542 00:23:33,520 --> 00:23:36,283 Sila ay maaaring maging masyadong mahaba para sa kasing simple ng ito ng isang bagay. 543 00:23:36,283 --> 00:23:38,350 Kaya ito ay maaaring masyadong maikli at malinaw at napakabuti. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Kaya ngayon kami ay pagpunta sa pagtingin sa Isinasagawa muli at muli sa isang bagay, 546 00:23:46,820 --> 00:23:50,060 kaya suri para sa isang kalagayan ng maraming beses 547 00:23:50,060 --> 00:23:53,510 at pagkatapos ay magpatuloy upang gawin ang isang bagay habang kondisyon na ito ay totoo. 548 00:23:53,510 --> 00:23:56,740 Kaya ito ay magbibigay sa amin mabuti sa habang loop. 549 00:23:56,740 --> 00:23:59,270 >> Sa kaliwa, kami ay ang aming unang habang loop. 550 00:23:59,270 --> 00:24:03,840 Kaya habang ang isang bagay ay totoo, gawin muli at muli sa isang bagay. 551 00:24:03,840 --> 00:24:08,850 Kaya't tiyakin na mapansin na ang aming kalagayan dito ay napatunayan sa itaas. 552 00:24:08,850 --> 00:24:14,150 Sapagkat sa aming ikalawang loop-- tawag namin na ang isang do-habang loop-- gawin namin ang isang bagay, 553 00:24:14,150 --> 00:24:15,890 pagkatapos ay tingnan namin para sa isang kondisyon. 554 00:24:15,890 --> 00:24:17,980 At kung kondisyon na ay patuloy na maging totoo, 555 00:24:17,980 --> 00:24:20,150 naming bumalik at gawin muli ang bagay. 556 00:24:20,150 --> 00:24:23,360 Kaya ang pangunahing pagkakaiba ay kung saan ang kondisyon ay naka-check para sa. 557 00:24:23,360 --> 00:24:29,260 At ang mga code ay hindi maaaring maging naisakatuparan kung ang mga kondisyon ay hindi 558 00:24:29,260 --> 00:24:30,430 totoo sa habang loop. 559 00:24:30,430 --> 00:24:33,050 Sapagkat sa do-habang loop, mayroon kaming mga code 560 00:24:33,050 --> 00:24:35,380 na palaging pinaandar ng hindi bababa sa isang beses. 561 00:24:35,380 --> 00:24:37,470 At pagkatapos habang ang kundisyon ay patuloy na maging totoo, 562 00:24:37,470 --> 00:24:39,960 maaari naming bumalik at ulitin muli sa loob. 563 00:24:39,960 --> 00:24:43,625 Kaya bakit sa tingin mo gusto naming gamitin isang gawin-habang loop sa loob ng isang habang loop? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Right. 566 00:24:48,720 --> 00:24:52,600 Kaya kung gusto naming upang i-prompt ang gumagamit para sa ilang uri ng mga input, 567 00:24:52,600 --> 00:24:55,400 kung gusto naming hilingin sa kanila na ipasok ang kanilang pangalan, 568 00:24:55,400 --> 00:24:57,342 gusto naming hindi bababa sa hilingin sa kanila nang isang beses. 569 00:24:57,342 --> 00:24:59,050 At kung sila pumasok na pangalan, kami ay hindi 570 00:24:59,050 --> 00:25:00,740 pagpunta sa hilingin sa mga ito muli dahil mayroon na malaman namin ito. 571 00:25:00,740 --> 00:25:02,656 Ngunit kung hindi sila pumasok ang kanilang pangalan, o kung ang mga ito 572 00:25:02,656 --> 00:25:05,787 ipasok ang isang bagay na malinaw naman hindi isang pangalan, 573 00:25:05,787 --> 00:25:08,120 tayo pa rin bang magpatuloy pagtatanong sa kanila ang sa para sa kanilang mga pangalan. 574 00:25:08,120 --> 00:25:10,710 >> David MALAN: At sa lecture namin ay may isa tulad nito na may makakuha ng positibong int 575 00:25:10,710 --> 00:25:13,550 halimbawa, kung saan may walang upang suriin sa unang dahil ikaw ay may hindi kahit na 576 00:25:13,550 --> 00:25:14,190 tapat na paraan sa isang int. 577 00:25:14,190 --> 00:25:16,680 Kaya gusto naming gawin this-- makakuha ng isang int mula sa user-- 578 00:25:16,680 --> 00:25:18,860 pagkatapos suriin ito, marahil, at muli at muli. 579 00:25:18,860 --> 00:25:21,030 >> MARIA: Eksakto. 580 00:25:21,030 --> 00:25:22,060 Para loops-- OK. 581 00:25:22,060 --> 00:25:25,842 Para sa mga loop ay maaaring magbigay sa amin upang gawin ang halos ang eksaktong parehong bagay, pati na rin. 582 00:25:25,842 --> 00:25:27,300 Ito ay talagang ang parehong bagay. 583 00:25:27,300 --> 00:25:30,190 So may wala na maaari mong gawin sa para sa mga loop 584 00:25:30,190 --> 00:25:32,840 na hindi mo nais na ma kinalaman sa habang loop. 585 00:25:32,840 --> 00:25:36,900 Ngunit para sa mga loop ay maaaring mukhang isang maliit na kaunti pang kumplikado syntactically 586 00:25:36,900 --> 00:25:39,730 dahil sila ay may tatlong bahagi sa loob kung ano 587 00:25:39,730 --> 00:25:42,990 ay bago lang ang kondisyon na may habang loop. 588 00:25:42,990 --> 00:25:48,260 Kaya ang unang bahagi na iyong dagat, ang kaliwa-pinaka, mayroon kaming "int dwarves = 0." 589 00:25:48,260 --> 00:25:51,490 Kaya ito ay kung saan namin magpasimula aming variable. 590 00:25:51,490 --> 00:25:55,210 >> Pagkatapos kami ay may isang tuldok-kuwit at "dwarf <7." 591 00:25:55,210 --> 00:25:57,100 Kaya ito ay kung saan out kondisyon ay tunay. 592 00:25:57,100 --> 00:26:00,170 Kaya na kung ano ang gusto naming magkaroon ilagay lamang sa habang loop-- 593 00:26:00,170 --> 00:26:01,880 "habang dwarves <7." 594 00:26:01,880 --> 00:26:05,380 Dito, na napupunta sa gitna ng aming para sa loop. 595 00:26:05,380 --> 00:26:07,190 Kaya "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 At pagkatapos ay ang aming huling bahagi ay "dwarf ++," na kung saan ay kung saan namin i-update ang aming mga variable. 597 00:26:11,350 --> 00:26:15,470 Kaya ang mga mahalagang bagay upang mapagtanto na ito 598 00:26:15,470 --> 00:26:22,010 ay pagpunta sa pumunta sa pamamagitan ng ito para sa loop pitong beses at maglalapat ng pitong beses. 599 00:26:22,010 --> 00:26:24,020 Kaya kami ay may pitong dwarf, at ang mga ito ang lahat ng 600 00:26:24,020 --> 00:26:26,020 pagpunta sa sabihin, "Ako dito upang makatulong sa iyo, Snow White " 601 00:26:26,020 --> 00:26:28,860 dahil ang mga ito ay handa na upang matulungan ang Snow White. 602 00:26:28,860 --> 00:26:33,600 >> Sa habang loop, kami ay nagawa na Pinasimulan at ang pag-update 603 00:26:33,600 --> 00:26:37,490 hindi sa loob ng kalagayan, muli, ngunit alinman sa bago o sa loob ng loop habang 604 00:26:37,490 --> 00:26:40,210 tiyakin na we-- dahil laging kailangan namin ng mga bahagi. 605 00:26:40,210 --> 00:26:42,835 Kaya tiyakin na mayroon kami ang mga ito, kami ay nai idinagdag ang mga ito pa rin 606 00:26:42,835 --> 00:26:44,580 on, hindi lamang sa loob ng panaklong. 607 00:26:44,580 --> 00:26:47,288 >> David MALAN: At kaya mukhang like-- sa mga panayam, halimbawa, 608 00:26:47,288 --> 00:26:50,250 Ako halos palaging gamitin, tulad ng, i at n at medyo panganganak variable. 609 00:26:50,250 --> 00:26:53,050 Mukhang maaari mong gamitin ang mas maraming cleverly pinangalanan variable, masyadong. 610 00:26:53,050 --> 00:26:56,300 >> MARIA: Oo, ito ay aktwal na napakabuti gamitin ng kaunti pang mapaglarawang variable 611 00:26:56,300 --> 00:26:59,400 dahil lalo na kung ang ibang tao ay pagbabasa ng iyong code-- baka ikaw greyder 612 00:26:59,400 --> 00:27:00,940 o kung ikaw ay nakikipagtulungan may kasama-- 613 00:27:00,940 --> 00:27:03,481 Gusto mong tiyakin na sila maunawaan kung ano ang iyong ginagawa. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> SIGE. 616 00:27:06,400 --> 00:27:11,435 Kaya ito ay isang bagay na lubhang funky-- para sa loop sa loob ng isang para sa loop. 617 00:27:11,435 --> 00:27:13,060 Hindi ko alam kung nakita namin na ito bago. 618 00:27:13,060 --> 00:27:13,830 Hindi siguro. 619 00:27:13,830 --> 00:27:17,750 Ngunit ang tunay na kami ay maaaring magkaroon ng this-- kaya loops sa halip ng mga loop. 620 00:27:17,750 --> 00:27:25,130 Kaya ang sinuman nais na siguro maglakad akin sa pamamagitan ng kung ano ang nangyayari sa dito? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 David MALAN: makikita ko ang isang ulos. 623 00:27:29,490 --> 00:27:29,970 MARIA: Cool. 624 00:27:29,970 --> 00:27:30,636 David MALAN: OK. 625 00:27:30,636 --> 00:27:34,690 Kaya, spoiler-- gusto naming i-print ang mga bagay-bagay na nasa ibaba-kanang sulok 626 00:27:34,690 --> 00:27:35,190 doon. 627 00:27:35,190 --> 00:27:35,450 >> MARIA: Tama. 628 00:27:35,450 --> 00:27:35,710 Oo, oo. 629 00:27:35,710 --> 00:27:38,043 >> David MALAN: Kaya hindi namin lamang ilagay sample na output doon. 630 00:27:38,043 --> 00:27:42,590 Kaya ang maaari kong magpakilala mula sa kataas-taasan loop na kayo 631 00:27:42,590 --> 00:27:45,680 iterating sa paglipas ng mga hilera ng pinakamalayo loop, kaya na magsalita. 632 00:27:45,680 --> 00:27:48,107 At ikaw ay iterating sa paglipas ng mga hanay na may mga kaloob-loobang loop. 633 00:27:48,107 --> 00:27:50,190 At intuitively, ito dapat sana may katuturan 634 00:27:50,190 --> 00:27:52,070 dahil sa pamamagitan ng likas na katangian ng lahat ng programa namin nakita 635 00:27:52,070 --> 00:27:55,570 bago, printf, kung saan ay ang function na aming ginagamit, sa huli, 636 00:27:55,570 --> 00:27:58,190 ay may kakayahan upang i-print ang mga bagay-bagay out mahalagang linya sa pamamagitan ng linya. 637 00:27:58,190 --> 00:27:59,960 Tulad ng, sa oras na iyong outputted ng isang bagong linya, may 638 00:27:59,960 --> 00:28:02,876 walang pagdodoble bumalik at pag-print ng isang bagay mas mataas sa screen, sa hindi bababa sa 639 00:28:02,876 --> 00:28:04,530 hindi gumagamit ng printf tulad nito. 640 00:28:04,530 --> 00:28:07,750 >> At kaya sa bagay na iyon, ito ay gumagawa ng kamalayan na ang pinakamalayo loop 641 00:28:07,750 --> 00:28:10,930 dapat na nagre-refer sa mga hilera dahil para sa bawat ibinigay na hilera, 642 00:28:10,930 --> 00:28:13,650 ikaw ay pagpunta sa nais na i-print ang XXXXX, at pagkatapos ay 643 00:28:13,650 --> 00:28:15,520 ilipat sa sa susunod na hilera, XXXXX. 644 00:28:15,520 --> 00:28:17,317 Kaya hilera unang dumating. 645 00:28:17,317 --> 00:28:19,150 At pagkatapos ay sa loob ng bawat hilera, i-print mo haligi. 646 00:28:19,150 --> 00:28:21,160 Kung sinubukan mong gawin ito sa kabaligtaran, ito marahil ay hindi 647 00:28:21,160 --> 00:28:21,690 lumabas bilang nilayon mo. 648 00:28:21,690 --> 00:28:22,190 >> MARIA: Oo. 649 00:28:22,190 --> 00:28:24,950 Kami lamang ay hindi maaaring bumalik sa nakaraang hilera na may printf. 650 00:28:24,950 --> 00:28:27,658 >> David MALAN: At kung ano ang mga kagiliw-giliw per ngayon chat tungkol sa saklaw, 651 00:28:27,658 --> 00:28:31,600 talaga, ay na row ay isang int na ipinahayag sa mga kataas-taasan loop. 652 00:28:31,600 --> 00:28:34,030 Ngunit mapansin na ito ay pa rin sa loob ng, kaya na magsalita, 653 00:28:34,030 --> 00:28:35,982 ang kulot tirante na kaagad na susunod, 654 00:28:35,982 --> 00:28:38,440 kahit na ito ay hindi technically loob ng mga kulot braces. 655 00:28:38,440 --> 00:28:41,750 Kaya row ay sa saklaw para sa kabuuan ng snippet ng code, 656 00:28:41,750 --> 00:28:44,690 pareho sa loob ng panlabas na para sa loop at sa loob ng panloob na para sa loop. 657 00:28:44,690 --> 00:28:48,050 Ngunit sa pamamagitan ng kaibahan, kung saan ay haligi sa saklaw? 658 00:28:48,050 --> 00:28:49,810 Ang variable haligi? 659 00:28:49,810 --> 00:28:51,310 Oo, lamang sa loob ng loop. 660 00:28:51,310 --> 00:28:54,280 At iyan ay OK dahil hindi namin ma-access ang ito sa labas ng kanyang curly braces. 661 00:28:54,280 --> 00:28:57,280 Lahat tayo ay print out ng isang bagong line sa dulo doon. 662 00:28:57,280 --> 00:28:58,670 Kaya na sa katunayan ay OK. 663 00:28:58,670 --> 00:29:03,740 >> Kaya ito ay ang epekto, mukhang, ng paggawa ng tatlong mga hilera at apat na haligi. 664 00:29:03,740 --> 00:29:04,370 >> MARIA: Tama. 665 00:29:04,370 --> 00:29:06,270 Kaya una pumunta kami sa pamamagitan ng aming unang hanay. 666 00:29:06,270 --> 00:29:10,520 At lamang sa aming unang hilera, ginagawa namin ang apat na mga haligi sa loob ng unang hanay. 667 00:29:10,520 --> 00:29:11,980 Kaya i-print namin sa labas ng apat na X ni. 668 00:29:11,980 --> 00:29:15,800 At pagkatapos ay maaari naming lumabas ang para sa loop, dahil naka-print na namin ang apat na X ni. 669 00:29:15,800 --> 00:29:17,100 At i-print namin ang isang bagong linya. 670 00:29:17,100 --> 00:29:19,920 At pagkatapos ay pumunta kami sa pamamagitan ng mga parehong proseso para sa dalawang higit pang mga hilera 671 00:29:19,920 --> 00:29:21,170 upang gumawa ng isang kabuuan ng tatlong. 672 00:29:21,170 --> 00:29:23,530 >> David MALAN: At ito ay nagkakahalaga ng pagpuna na ito ay lamang ng isang artifact ng font, ang katunayan 673 00:29:23,530 --> 00:29:25,680 na ang sample output mukhang kaya mas matangkad, 674 00:29:25,680 --> 00:29:27,520 na tila mayroon pa mga hilera sa haligi. 675 00:29:27,520 --> 00:29:29,824 Ngunit ito lamang ay sapagkat ang mga X ay mas mataas kaysa ito ay malawak. 676 00:29:29,824 --> 00:29:32,740 Iyan na ang lahat na nangyayari doon, plus ang puting espasyo sa pagitan ng mga linya. 677 00:29:32,740 --> 00:29:33,281 >> MARIA: Tama. 678 00:29:33,281 --> 00:29:34,792 Cool. 679 00:29:34,792 --> 00:29:35,750 David MALAN: Lahat ng karapatan. 680 00:29:35,750 --> 00:29:39,830 Kaya ang isang mabilis na pagtingin sa hanay ng problema sa isa, gumawa ng anumang mga tanong, at pagkatapos ay ipinid? 681 00:29:39,830 --> 00:29:40,330 Lahat tama. 682 00:29:40,330 --> 00:29:43,164 Kaya sa set ng isang problema, may tatlong pangunahing hamon, sa huli. 683 00:29:43,164 --> 00:29:44,955 Ngunit una, makikita mo ang na-set ang problema 684 00:29:44,955 --> 00:29:47,900 detalye, tulad ng maraming mga psets ngayong taglagas, ang pagpunta sa paglalakad mo 685 00:29:47,900 --> 00:29:50,691 sa pamamagitan ng ilang mga mainit-up magsanay, ituro sa iyo ng ilang mga mapagkukunan 686 00:29:50,691 --> 00:29:52,440 na maaaring o maaaring Hindi nakita na. 687 00:29:52,440 --> 00:29:54,440 Halimbawa, CS50 may isang suite ng shorts, 688 00:29:54,440 --> 00:29:56,481 na kung saan ay maikling video, hindi iba ito, ngunit na 689 00:29:56,481 --> 00:29:58,460 ay masyadong topic specific-- siguro sa limang minuto, 690 00:29:58,460 --> 00:30:02,360 10 minuto ang haba sa loop o sa mga kondisyon o sa mga algorithm 691 00:30:02,360 --> 00:30:04,125 o sa ibang pagkakataon sa mas maraming advanced na mga paksa, pati na rin. 692 00:30:04,125 --> 00:30:06,000 At kami ay karaniwang i-embed mga sa mga problema 693 00:30:06,000 --> 00:30:07,950 sets upang ang mga mag-aaral magkaroon ng isang mapagkukunan na kung saan 694 00:30:07,950 --> 00:30:10,840 upang repasuhin ang mga materyal na maaaring magkaroon na lumapit sa panayam o seksyon. 695 00:30:10,840 --> 00:30:13,220 Subalit sa ganitong paraan ito ay mas pokus at higit pa sa kanilang mga kamay. 696 00:30:13,220 --> 00:30:15,928 >> Madalas din kaming mag-embed sa problema nagtatakda ng mga bagay na tinatawag na walkthroughs. 697 00:30:15,928 --> 00:30:20,790 Kaya halos lahat ng mga halimbawang ginagawa ko sa panayam, sa entablado dito, kami din 698 00:30:20,790 --> 00:30:24,565 may shot ng kamera sa isulong ang isang mas mabagal, 699 00:30:24,565 --> 00:30:28,760 isang matatalik walkthrough sa pamamagitan ng sa akin sa aking laptop ng na code, linya sa pamamagitan ng linya 700 00:30:28,760 --> 00:30:31,427 kaya na sa klase, bibigyan namin ng madalas pagsagap sa pamamagitan ng isang bagay o tao 701 00:30:31,427 --> 00:30:33,260 ay magsingit ng isang sagot sa isang katanungan. 702 00:30:33,260 --> 00:30:35,820 Ngunit ito ay hindi naman malugi in para sa lahat ng tao sa audience. 703 00:30:35,820 --> 00:30:38,230 Kaya makikita ninyo code walkthroughs para sa karamihan ng mga halimbawa 704 00:30:38,230 --> 00:30:40,950 na ginagawa namin dito sa lecture upang ikaw maaaring lakarin ito sa sarili mong bilis 705 00:30:40,950 --> 00:30:43,580 at rewind o fast forward o laktawan sa kabuuan, kung gusto mo. 706 00:30:43,580 --> 00:30:45,356 >> Madalas May ilang katanungan warm-up na 707 00:30:45,356 --> 00:30:47,105 hihilingin sa iyo na-uri-uriin ng palakasin ang materyal na ito 708 00:30:47,105 --> 00:30:50,250 at tiyakin na ikaw ay komportable sa harap ikaw ay magpatuloy sa ang magpahinga ng ang pset. 709 00:30:50,250 --> 00:30:51,700 At pagkatapos ay, of course, naroon ang pset mismo. 710 00:30:51,700 --> 00:30:53,450 At isa sa mga bagay-bagay kami ay tunay kusa 711 00:30:53,450 --> 00:30:57,202 gawin sa CS50 ay halos araw hindi kawili-wili o intellectually hindi kawili-wili 712 00:30:57,202 --> 00:30:58,910 makina na hakbang na maaaring kailangan mong gawin 713 00:30:58,910 --> 00:31:00,519 ay halos palaging tunay mabuti dokumentado. 714 00:31:00,519 --> 00:31:03,560 Sa haba ng panahon, bibigyan namin ng simulan na magtanong pa pantalumpati katanungan 715 00:31:03,560 --> 00:31:06,187 tulad ng matandaan kung paano gawin ito o na? 716 00:31:06,187 --> 00:31:08,520 Ngunit sa pangkalahatan, makikita mo ang na makuha mo ang mga hanay ng problema 717 00:31:08,520 --> 00:31:10,269 sa pamamagitan ng mga mechanics ng isang bagay upang ang 718 00:31:10,269 --> 00:31:14,160 ang mga kagiliw-giliw, intelektuwal na hamon sa huli ay iniwan sa iyo ang mag-aaral. 719 00:31:14,160 --> 00:31:17,390 >> Sa na sinabi, Zamyla, kung kanino kami iningatan referring ngayon sa panayam, 720 00:31:17,390 --> 00:31:20,190 ay isa sa aming matagal nang staff miyembro na din humahawak walkthroughs 721 00:31:20,190 --> 00:31:24,520 sa mga tiyak na mga problema sa pset tulad ng Mario at sakim, bagaman hindi tubig sa taong ito. 722 00:31:24,520 --> 00:31:26,540 At ito ay sa mga walkthroughs na siya madalas 723 00:31:26,540 --> 00:31:29,450 Nag-aalok ng ilang mga tip at trick para sa kung paano magpatuloy, hindi na nagsasabi sa iyo 724 00:31:29,450 --> 00:31:31,810 eksakto kung ano ang gagawin, ngunit rather-- tulad ng isang kondisyon, 725 00:31:31,810 --> 00:31:35,200 kung ikaw will-- na nagbibigay sa iyo ng hindi bababa sa isang pares ng mga ideya upang ito ay nasa sa iyo, 726 00:31:35,200 --> 00:31:37,830 sa huli, upang magpasya kung paano lapitan ang mga ito. 727 00:31:37,830 --> 00:31:41,200 >> MARIA: Pagsunud-sunurin ng tulad ng isang mataas na antas ng pag-unawa sa lohika ng kung ano 728 00:31:41,200 --> 00:31:42,220 kami ay humihingi sa inyo na gawin. 729 00:31:42,220 --> 00:31:42,485 >> David MALAN: Eksakto. 730 00:31:42,485 --> 00:31:44,190 At, sa katunayan, Zamyla ni walkthroughs ay sinadya 731 00:31:44,190 --> 00:31:46,190 upang sagutin ang mga madalas nagtanong tanong ng kung saan 732 00:31:46,190 --> 00:31:48,610 gawin ako ay nagsimulang, lalo na kapag mga pang detalye ay 733 00:31:48,610 --> 00:31:51,960 isang maliit na daunting ibinigay ang lahat ng teksto at koleksyon ng imahe na mayroon sila sa mga ito. 734 00:31:51,960 --> 00:31:54,890 >> Kaya water.c, makikita ninyo pagkatapos mong makumpleto ang, ito 735 00:31:54,890 --> 00:31:56,920 ay talagang medyo tapat. 736 00:31:56,920 --> 00:31:58,882 Hinding isang bungkos ng iyong pagpunta sa putok 737 00:31:58,882 --> 00:32:01,840 ang inyong mga ulo laban sa mga pader sinusubukan para malaman kung bakit hindi ito kino-compile 738 00:32:01,840 --> 00:32:03,450 o kung bakit ito ay hindi tama ang tumatakbo. 739 00:32:03,450 --> 00:32:05,040 Ngunit sa sandaling tapos ka na sa mga ito at sa sandaling hindi mo 740 00:32:05,040 --> 00:32:07,620 nagastos ng ilang oras na pakikipagbuno sa anumang ng mga bug na maaaring mayroon ka, 741 00:32:07,620 --> 00:32:09,490 makikita ninyo na ito ay isang maikling programa. 742 00:32:09,490 --> 00:32:11,770 Ito ay maaaring gawin sa loob lamang ng ilang mga linya ng code, karamihan sa mga 743 00:32:11,770 --> 00:32:15,030 nasaksihan namin dito sa lecture na, kung ipon mo ang karapatan bloke ng gusali. 744 00:32:15,030 --> 00:32:16,810 >> At bilang iminumungkahi namin dito, ito ay pagpunta sa magtanong 745 00:32:16,810 --> 00:32:22,250 sa iyo upang tukuyin kung ilang minuto ang isang tao ay ang pagkuha ng isang shower sa campus. 746 00:32:22,250 --> 00:32:24,779 Kami tukuyin sa mga problema itakda ang rate ng daloy ng tubig 747 00:32:24,779 --> 00:32:27,320 in, tulad ng, ang isang mababang-daloy shower ulo, na halos tulad ng Seinfeld clip 748 00:32:27,320 --> 00:32:29,180 Nakita namin kahapon o ang kabaligtaran nito. 749 00:32:29,180 --> 00:32:30,971 At saka mo lamang upang gawin ang isang piraso ng matematika, 750 00:32:30,971 --> 00:32:34,710 really-- arithmetic gamit C upang sabihin sa amin kung gaano karaming, halos, bote ng tubig 751 00:32:34,710 --> 00:32:37,720 ay na katumbas sa kung kami ay pagkuha ng isang n minutong shower. 752 00:32:37,720 --> 00:32:41,389 >> Ngayon, sa mario.c, ito ay pagpunta upang maging isang bahagyang na programa. 753 00:32:41,389 --> 00:32:42,930 Pa rin ito ay hindi magiging mahaba ito. 754 00:32:42,930 --> 00:32:45,130 Ng ilang linya lang na mas mahaba sa water.c. 755 00:32:45,130 --> 00:32:48,230 Ngunit ito ay magiging pagkakataon upang muling likhain ang lumang paaralan Mario 756 00:32:48,230 --> 00:32:50,670 pyramid mula sa Super Mario Brothers o ilang follow-on. 757 00:32:50,670 --> 00:32:53,510 Ito ay hindi pagpunta upang tumingin bilang prettier o bilang makulay na bilang na ang isa doon. 758 00:32:53,510 --> 00:32:56,468 Kami ay pagpunta upang gamitin ang maliit na hashtags tulad na namin dito sa screen 759 00:32:56,468 --> 00:32:58,120 gamit ang teksto ASCII. 760 00:32:58,120 --> 00:33:00,362 Ngunit ito ay humigit-kumulang ang parehong ideya. 761 00:33:00,362 --> 00:33:02,570 At ito ay magiging isang ipatupad na sa unang tingin 762 00:33:02,570 --> 00:33:04,720 tila medyo simple-- lamang i-print ang isang simpleng pyramid. 763 00:33:04,720 --> 00:33:07,345 Subalit mayroong isang pares na mga katangian dito na kawili-wili. 764 00:33:07,345 --> 00:33:12,400 Pansinin na ang rightmost gilid ng pyramid talaga ay may dalawang lapad. 765 00:33:12,400 --> 00:33:14,570 Kaya may dalawang pantay taas haligi, na kung saan 766 00:33:14,570 --> 00:33:16,804 Ginagawa ito ay nangangailangan ng isang maliit na bit ng pag-iisip upang gumawa ng mga 767 00:33:16,804 --> 00:33:19,720 matiyak na makuha mo na ang eksaktong karapatan, tulad ng laban sa lamang ng isang ganap na naka-anggulong 768 00:33:19,720 --> 00:33:20,220 linya. 769 00:33:20,220 --> 00:33:23,340 Kaya na ang isang piraso ng isang sulok kaso ngunit tumutugma sa aktwal na laro. 770 00:33:23,340 --> 00:33:27,610 >> At ito ay hindi halata sa unang ring sulyap sa kung paano i-print ang white space. 771 00:33:27,610 --> 00:33:29,430 Kaya kapag tumingin ako sa sample output here-- 772 00:33:29,430 --> 00:33:32,440 at ito ay din sa spec-- ito uri ng hitsura tulad ng isang parihaba, 773 00:33:32,440 --> 00:33:35,120 ngunit isang dayagonal ng rectangle ay tinadtad off, 774 00:33:35,120 --> 00:33:37,320 at ito lamang ang puting espasyo, kaya na magsalita. 775 00:33:37,320 --> 00:33:40,100 At kaya ng mga madalas na tinatanong tanong dito ay palaging, well, 776 00:33:40,100 --> 00:33:43,302 paano ko ilipat ang mga hashtags sa ibabaw ng mga karapatan? 777 00:33:43,302 --> 00:33:44,760 O kung paano ko ipi-print ang mga blangko ang puwang? 778 00:33:44,760 --> 00:33:46,860 At ito ay tunay madali kaysa sa karamihan ng mga mag-aaral sa tingin. 779 00:33:46,860 --> 00:33:47,360 Right? 780 00:33:47,360 --> 00:33:51,620 Maaari mo itong humigit-kumulang na biswal sa pamamagitan lamang pagpindot ang space bar o dalawang beses 781 00:33:51,620 --> 00:33:52,700 o tatlong beses. 782 00:33:52,700 --> 00:33:56,260 >> At kaya kahit na may printf kami ng halos laging i-print out ng isang string o isang int 783 00:33:56,260 --> 00:33:59,950 o isang salita tulad ng "hello, world "o serye ng mga salita, 784 00:33:59,950 --> 00:34:03,560 maaari mo ring i-print lamang quote, space, magpanipi. 785 00:34:03,560 --> 00:34:06,320 At iyon ay ang tunay na magbibigay mo ang isang white space doon. 786 00:34:06,320 --> 00:34:08,330 Kaya panatilihin na sa isip at huwag overthink ito. 787 00:34:08,330 --> 00:34:10,570 Ka tunay may sa magpasya hilera sa pamamagitan ng hilera sa pamamagitan ng hilera, 788 00:34:10,570 --> 00:34:14,280 hindi iba ang iyong mga halimbawa ng isang ilang sandali ang nakalipas, kung ilan sa mga 789 00:34:14,280 --> 00:34:18,420 dapat na puting espasyo haligi at kung ilan sa mga ito ay dapat na hashtags. 790 00:34:18,420 --> 00:34:21,560 Aabutin ng isang piraso ng oras, ngunit ito ay sa huli ng isang logic puzzle ng masama. 791 00:34:21,560 --> 00:34:22,060 >> MARIA: Oo. 792 00:34:22,060 --> 00:34:25,060 Ngunit ang logic ng pagpunta hanay sa hanay ay magiging lubhang kapaki-pakinabang dito. 793 00:34:25,060 --> 00:34:25,810 David MALAN: Oo. 794 00:34:25,810 --> 00:34:28,976 Tingin ko ang mga sample code gave-- ka kahit kahit na ito ay hindi isang kumpletong programa. 795 00:34:28,976 --> 00:34:34,247 Kailangan mo pa rin int at pangunahing at walang bisa at # include stdio.h, 796 00:34:34,247 --> 00:34:35,580 isang pulutong ng mga bagay-bagay mula sa panayam. 797 00:34:35,580 --> 00:34:37,629 Ngunit ang mga bloke ng gusali mukhang doon. 798 00:34:37,629 --> 00:34:39,920 At pagkatapos ay sa wakas ay isang bagay na isang maliit na mas algorithmic. 799 00:34:39,920 --> 00:34:43,210 Kaya ito ay lumiliko out na ang anumang panahon na kayo pumunta sa CVS o anumang convenience store 800 00:34:43,210 --> 00:34:47,810 at ang isang tao ay kamay mo ang mga bills cashier o barya bilang pagbabago, 801 00:34:47,810 --> 00:34:50,620 ito ay lumiliko out na ang mga ito, ang mga tao, kung o hindi nila alam ito o hindi, 802 00:34:50,620 --> 00:34:53,300 marahil ay gumagamit ng kung ano ang tinatawag na isang sakim na algorithm, 803 00:34:53,300 --> 00:34:58,170 kung saan kung ikaw ay dapat bayaran, sabihin, $ 21 sa pagbabago dahil sa ilang kadahilanan 804 00:34:58,170 --> 00:35:01,580 ikaw ay bumili ng isang bagay napaka murang na may isang malaking bayarin sa CVS, 805 00:35:01,580 --> 00:35:05,910 ay ito ay talagang nakakainis kung ang nagbigay sa iyo ng cashier 21 singles, o mas masahol 806 00:35:05,910 --> 00:35:07,629 pa, ang isang buong pulutong ng mga barya. 807 00:35:07,629 --> 00:35:10,670 Sa halip, kung ano ang isang makatwirang tao ay marahil pagpunta sa gawin ay ang kanilang pagpunta 808 00:35:10,670 --> 00:35:14,224 kukunin ng isang $ 20 at pagkatapos ay isang $ 1-bill, at kamay mo ang kuwenta lamang ng dalawang sa kasong iyon. 809 00:35:14,224 --> 00:35:17,390 MARIA: Kaya sila ay naghahanap upang i-minimize ang pagbabago na bigyan sila pabalik sa iyo. 810 00:35:17,390 --> 00:35:17,850 David MALAN: Eksakto. 811 00:35:17,850 --> 00:35:19,540 At parehong pakikitungo sa mga barya, pati na rin. 812 00:35:19,540 --> 00:35:23,040 Kung ikaw ay inutang, sabihin, $ 0.50, inaasahan namin na hindi mo nais 50 pennies. 813 00:35:23,040 --> 00:35:25,500 Sa halip ay nais dalawang quarters, halimbawa. 814 00:35:25,500 --> 00:35:27,540 Ngayon, ito ay ipinapalagay na cashier ay 815 00:35:27,540 --> 00:35:29,940 sapat ng bawat denominasyon na siya ay maaaring nais na magbigay sa iyo. 816 00:35:29,940 --> 00:35:32,148 Ngunit huwag naming-daan sa iyo upang ipalagay tulad ng marami sa mga problema. 817 00:35:32,148 --> 00:35:35,590 At ang mga layunin, sa huli, ay upang ipatupad sa C code isang sakim algorithm. 818 00:35:35,590 --> 00:35:37,344 Kaya ang user ay pinapayagan i-type sa kung magkano 819 00:35:37,344 --> 00:35:40,510 baguhin siya ay utang sa dolyar at cents, ang ilang mga uri ng mga lumulutang na tuldok 820 00:35:40,510 --> 00:35:41,590 halaga marahil. 821 00:35:41,590 --> 00:35:45,530 At pagkatapos ay may sa gawin ang matematika at malaman kung algorithmically, well, 822 00:35:45,530 --> 00:35:49,020 kung gaano karaming mga barya ang maaari kong ibigay mo minimally upang bigyan ka ng 823 00:35:49,020 --> 00:35:50,270 eksakto na halaga ng mga pagbabago. 824 00:35:50,270 --> 00:35:53,470 Ngunit may pagpunta sa maging isang ilang mapaglalang bahagi dito, right? 825 00:35:53,470 --> 00:35:56,236 Tulad ng may ang buong isyu imprecision. 826 00:35:56,236 --> 00:35:56,860 MARIA: Eksakto. 827 00:35:56,860 --> 00:35:59,114 Kaya lumulutang point mga halaga ay may imprecision. 828 00:35:59,114 --> 00:36:00,780 Usapan namin ba tungkol dito sa lecture ngayon? 829 00:36:00,780 --> 00:36:02,340 >> David MALAN: Ginawa namin ang huling oras sa lecture. 830 00:36:02,340 --> 00:36:03,506 Usapan natin ang tungkol imprecision. 831 00:36:03,506 --> 00:36:08,840 At hindi mo nais na dayain ang user ng kung magkano ang pagbabago na siya ay dapat bayaran. 832 00:36:08,840 --> 00:36:11,290 At upang ang walkthrough, sa ang mga detalye ng problema set, 833 00:36:11,290 --> 00:36:15,990 magbigay ng ilang mga pag-iisip, sa huli, tulad ng sa kung paano mo maaaring pagaanin ang mga imprecision 834 00:36:15,990 --> 00:36:17,280 mga error, potensyal na. 835 00:36:17,280 --> 00:36:21,050 Ito ay avoidable, tiyak, para sa ang input pinag-uusapan natin ang tungkol sa. 836 00:36:21,050 --> 00:36:23,590 At, sa katunayan, pennies-- marahil kami umalinsunod sa Zamyla, 837 00:36:23,590 --> 00:36:25,136 Sa tingin ko, para sa mga tricks doon. 838 00:36:25,136 --> 00:36:27,760 Kaya sa huli, makakahanap ka ng isang paglala ng mga problema sa linggong ito, 839 00:36:27,760 --> 00:36:30,700 ang unang na kung saan ay medyo maliit, pagkatapos ay medium, pagkatapos ng isang maliit na mas malaki. 840 00:36:30,700 --> 00:36:33,200 Subalit ang lahat ng mga ito gamitin ang mga gusali bloke mula sa nakaraang linggo, 841 00:36:33,200 --> 00:36:35,280 mula sa mga ito supersection, itakda specification problema 842 00:36:35,280 --> 00:36:36,710 Binibigyan ka sa di mabilang na mga mapagkukunan. 843 00:36:36,710 --> 00:36:41,000 Ngunit pa rin struggling, kung sa lahat, lalo na sa mga sa mga mas kumportable 844 00:36:41,000 --> 00:36:42,917 na walang paunang background, dumating sa oras ng opisina 845 00:36:42,917 --> 00:36:44,958 sa Lunes at Martes at Miyerkules at Huwebes. 846 00:36:44,958 --> 00:36:46,950 Pumunta sa CS50 Talakayin sa pamamagitan ng website ng kurso, 847 00:36:46,950 --> 00:36:49,080 sa pamamagitan ng kung saan maaari kang makipag-chat sa mga kawani at mga kaklase. 848 00:36:49,080 --> 00:36:51,670 >> Ngunit sa huli, sa tingin ko ang pinakamahusay na payo ay lamang magsimula ng maaga. 849 00:36:51,670 --> 00:36:54,711 Ito ay hindi ang uri ng klase na kayo dapat na simula psets sa Miyerkules 850 00:36:54,711 --> 00:36:56,640 gabi, o mas masahol pa, kahapon. 851 00:36:56,640 --> 00:36:59,067 >> MARIA: Aking pinakamahusay na payo ay na nagsimula sa pamamagitan ng Lunes. 852 00:36:59,067 --> 00:36:59,900 David MALAN: Lunes. 853 00:36:59,900 --> 00:37:02,490 Kaya kung hindi mo pa nagsimula already-- no. 854 00:37:02,490 --> 00:37:04,732 Ngunit kahit na hindi Monday, pagkatapos ay Martes. 855 00:37:04,732 --> 00:37:05,690 Ang mas maaga ang mas mahusay. 856 00:37:05,690 --> 00:37:08,605 At iyan ang dahilan ng siyempre ay may napakaraming mga late araw na ito ay 857 00:37:08,605 --> 00:37:10,535 upang bigyan ka ng isang piraso ng isang sikolohikal na presyon 858 00:37:10,535 --> 00:37:13,684 upang simulan ang mas maaga pa rin ngunit hayaan mga bagay na mali kapag ang mga bagay na mas matagal 859 00:37:13,684 --> 00:37:14,350 kaysa sa iyong inaasahan. 860 00:37:14,350 --> 00:37:17,950 >> MARIA: At gusto mong gumawa ng paggamit ng oras ng opisina hanggang kaya mo, masyadong. 861 00:37:17,950 --> 00:37:20,291 >> David MALAN: Ang anumang mga katanungan? 862 00:37:20,291 --> 00:37:20,790 Lahat tama. 863 00:37:20,790 --> 00:37:22,930 Well, bakit hindi natin itindig dito? 864 00:37:22,930 --> 00:37:23,487