1 00:00:00,000 --> 00:00:02,970 >> [MUSIC Duke luajtur] 2 00:00:02,970 --> 00:00:14,355 3 00:00:14,355 --> 00:00:15,700 >> DAVID J. Malan: Të gjithë të drejtë. 4 00:00:15,700 --> 00:00:18,832 Kjo është CS50 dhe ky është fillimi i Javës 2. 5 00:00:18,832 --> 00:00:21,040 Dhe ju do të kujtojnë se mbi çifti kaluara javë, 6 00:00:21,040 --> 00:00:24,490 ne kemi qenë të futur kompjuter shkencës dhe, nga ana tjetër, programimi. 7 00:00:24,490 --> 00:00:27,640 >> Dhe kemi filluar historinë me anë të Scratch, se gjuha grafike 8 00:00:27,640 --> 00:00:28,990 nga Media Lab MIT'S. 9 00:00:28,990 --> 00:00:30,780 Dhe pastaj më të fundit, javën e kaluar, e bëri ne 10 00:00:30,780 --> 00:00:34,450 futur një higher-- a Gjuha e nivelit të ulët të njohur 11 00:00:34,450 --> 00:00:36,770 si C, diçka që është tërësisht tekstuale. 12 00:00:36,770 --> 00:00:39,440 Dhe, me të vërtetë, hera e fundit që ne hulumtohen në këtë kontekst 13 00:00:39,440 --> 00:00:40,450 një numër i koncepteve. 14 00:00:40,450 --> 00:00:43,010 >> Kjo, kujtojnë, ishte shumë i programi i parë pamë. 15 00:00:43,010 --> 00:00:45,710 Dhe ky program, thjesht, kopje nga "hello, botën." 16 00:00:45,710 --> 00:00:47,730 Por nuk ka aq shumë gjoja magjike ndodh. 17 00:00:47,730 --> 00:00:51,460 Nuk është kjo #include me këto kllapa kënd. 18 00:00:51,460 --> 00:00:52,170 Ka int. 19 00:00:52,170 --> 00:00:53,020 Ka (i pavlefshëm). 20 00:00:53,020 --> 00:00:56,330 Ka kllapa, formatimin e teksteve kaçurrel, gjysmë-colons, dhe shumë më tepër. 21 00:00:56,330 --> 00:00:58,480 >> Dhe kështu, kujtojmë se ne kemi prezantuar Scratch 22 00:00:58,480 --> 00:01:02,110 në mënyrë që ne mund të, në mënyrë ideale, shikoni të kaluarën se sintaksa, sende që nuk është e vërtetë 23 00:01:02,110 --> 00:01:04,590 të gjitha që intelektualisht interesante, por më herët 24 00:01:04,590 --> 00:01:07,700 është, absolutisht, pak i ndërlikuar për të përfunduar mendjen tuaj rreth. 25 00:01:07,700 --> 00:01:10,860 Dhe, me të vërtetë, një nga më të zakonshme gjëra më herët në një klasë të programimit, 26 00:01:10,860 --> 00:01:13,443 sidomos për ata më pak të rehatshme, është për të marrë të frustruar nga 27 00:01:13,443 --> 00:01:17,460 dhe morën nga sintaktik të caktuar gabime, për të mos përmendur gabime logjike. 28 00:01:17,460 --> 00:01:19,800 Dhe kështu në mesin e qëllimeve tona Sot, në fakt, do të 29 00:01:19,800 --> 00:01:23,280 të jenë të pajisur ju me disa Teknikat e zgjidhjes së problemeve për mënyrën se si 30 00:01:23,280 --> 00:01:26,705 për të zgjidhur më mirë problemet veten në formën e debugging. 31 00:01:26,705 --> 00:01:29,330 Dhe ju do të kujtojnë, gjithashtu, se Mjedisi që ne kemi prezantuar 32 00:01:29,330 --> 00:01:31,780 Herën e fundit është quajtur CS50 IDE. 33 00:01:31,780 --> 00:01:34,850 Kjo është software web-bazuar se ju lejon të programit në një re, 34 00:01:34,850 --> 00:01:38,450 kështu që të flasin, duke i mbajtur të gjitha tuaj fotografi së bashku, si ne përsëri do sot. 35 00:01:38,450 --> 00:01:41,480 Dhe kujtojnë se ne rishqyrtohet këto tema ketu, 36 00:01:41,480 --> 00:01:44,480 në mesin e tyre, funksionet dhe sythe, dhe variabla, dhe shprehjet Boolean, 37 00:01:44,480 --> 00:01:45,110 dhe kushtet. 38 00:01:45,110 --> 00:01:49,190 Dhe në fakt një pak më shumë se ne përkthyer nga bota e Scratch 39 00:01:49,190 --> 00:01:50,800 në botën e C. 40 00:01:50,800 --> 00:01:53,220 >> Por ndërtimi themelore blloqe, kështu që të flasin, 41 00:01:53,220 --> 00:01:55,150 ishin me të vërtetë ende e njëjtë javën e kaluar. 42 00:01:55,150 --> 00:01:57,900 Në fakt, ne me të vërtetë kishte vetëm një pjesë të ndryshme mister, nëse ju do. 43 00:01:57,900 --> 00:02:00,300 Në vend të që të purpurt shpëtuar bllok, ne vend 44 00:02:00,300 --> 00:02:02,940 kishte printf, e cila është ky funksion në C që 45 00:02:02,940 --> 00:02:05,890 ju lejon për të shkruar diçka dhe format atë në ekran. 46 00:02:05,890 --> 00:02:07,950 Ne kemi prezantuar CS50 Library, ku ju 47 00:02:07,950 --> 00:02:11,420 kanë tani në get_char dispozicionin tuaj, dhe get_int dhe get_string, 48 00:02:11,420 --> 00:02:14,610 dhe disa funksione të tjera si disa mirë, me anë të të cilit ju mund të merrni të dhëna 49 00:02:14,610 --> 00:02:16,260 nga tastierë të plotë të përdoruesit. 50 00:02:16,260 --> 00:02:20,640 Dhe ne gjithashtu mori një vështrim në gjëra si these- bool, dhe char, 51 00:02:20,640 --> 00:02:22,490 dhe të dyfishtë, noton, int, string long_long. 52 00:02:22,490 --> 00:02:25,170 Dhe ka edhe lloje të tjera të të dhënave në C. 53 00:02:25,170 --> 00:02:28,560 >> Me fjalë të tjera, kur ju të deklarojë një variabël për të ruajtur disa vlera, 54 00:02:28,560 --> 00:02:32,600 ose kur ju të zbatojë një funksion që kthehet disa vlera, 55 00:02:32,600 --> 00:02:35,290 ju mund të specifikoni se çfarë lloji i vlerës që është. 56 00:02:35,290 --> 00:02:37,310 A është kjo një varg, si një sekuenca e karaktereve? 57 00:02:37,310 --> 00:02:39,490 A është kjo një numër, si një numër të plotë? 58 00:02:39,490 --> 00:02:41,390 A është kjo një pikë lundrues vlera, ose si? 59 00:02:41,390 --> 00:02:46,180 Pra në C, ndryshe nga Scratch, ne fakt filloi të përcaktojë se çfarë lloj të të dhënave 60 00:02:46,180 --> 00:02:48,330 ne ishim kthyer ose duke përdorur. 61 00:02:48,330 --> 00:02:51,910 >> Por, natyrisht, ne gjithashtu u përplas disa kufizime themelore të informatikës. 62 00:02:51,910 --> 00:02:54,100 Dhe në mënyrë të veçantë, kjo gjuhë C, risjell 63 00:02:54,100 --> 00:02:57,070 që kemi marrë një vështrim në del nga shtrati integer, realiteti 64 00:02:57,070 --> 00:03:00,460 se në qoftë se ju keni vetëm një Shuma e fundme e kujtesës 65 00:03:00,460 --> 00:03:04,600 ose, në mënyrë të veçantë, një numër i caktuar i bit, ju vetëm mund të mbështeteni aq e lartë. 66 00:03:04,600 --> 00:03:08,460 Dhe kështu që ne shikuar në këtë shembull këtu ku një counter në një aeroplan,, 67 00:03:08,460 --> 00:03:13,510 në fakt, në qoftë se duke kohë të mjaftueshme do të del nga shtrati dhe të rezultojë në një software 68 00:03:13,510 --> 00:03:15,560 një fizik aktual gabim të mundshëm. 69 00:03:15,560 --> 00:03:18,600 >> Ne gjithashtu shikuar në lundrues Pika pasaktësi, realiteti 70 00:03:18,600 --> 00:03:22,280 që me vetëm një numër i caktuar i bit, nëse është 32 apo 64, 71 00:03:22,280 --> 00:03:27,330 ju mund të specifikoni vetëm kaq shumë numra pas një presjes dhjetore, pas së cilës ju 72 00:03:27,330 --> 00:03:29,110 të fillojë të marrë të pasakta. 73 00:03:29,110 --> 00:03:32,360 Kështu për shembull, një e treta në bota këtu, në botën tonë njerëzore, 74 00:03:32,360 --> 00:03:35,360 ne e dimë është vetëm një numër i pafund i 3s pas presjes dhjetore. 75 00:03:35,360 --> 00:03:38,820 Por një kompjuteri nuk mund domosdoshmërisht përfaqësojnë një numër të pafund të numrave 76 00:03:38,820 --> 00:03:42,590 në qoftë se ju vetëm të lejojë që disa Shuma e fundme e informacionit. 77 00:03:42,590 --> 00:03:45,900 >> Pra, jo vetëm që ne t'ju pajisë me fuqi më të madhe në aspektin 78 00:03:45,900 --> 00:03:49,280 se si ju mund të shprehë veten në një tastierë në aspektin e programimit, 79 00:03:49,280 --> 00:03:51,430 ne gjithashtu e kufizuar atë në të vërtetë ju mund të bëni. 80 00:03:51,430 --> 00:03:55,790 Dhe me të vërtetë, bugs dhe gabime mund të lindin nga këto lloj çështjesh. 81 00:03:55,790 --> 00:03:59,900 Dhe në të vërtetë, në mesin e temave sot do të jetë tema si debugging 82 00:03:59,900 --> 00:04:03,699 dhe në të vërtetë në kërkim nën kapuç se si janë futur gjëra të javës së fundit 83 00:04:03,699 --> 00:04:05,490 janë zbatuar në fakt kështu që ju më mirë 84 00:04:05,490 --> 00:04:10,530 kuptojnë të dyja aftësitë e dhe kufizimet e një gjuhë si C 85 00:04:10,530 --> 00:04:14,770 >> Dhe në fakt, ne do të zhvishem përsëri shtresa e thjeshte e strukturës së të dhënave, 86 00:04:14,770 --> 00:04:17,756 diçka që quhet një grup, i cili Scratch ndodh për të thirrur një "listë". 87 00:04:17,756 --> 00:04:19,589 Është pak ndryshe në këtë kontekst. 88 00:04:19,589 --> 00:04:23,340 Dhe pastaj ne do të prezantoj një nga e parë e problemeve tona domain-e të Caktuar 89 00:04:23,340 --> 00:04:26,790 në CS50, bota e cryptography, arti i përpiqen 90 00:04:26,790 --> 00:04:29,650 ose në ciphering informacion në mënyrë që ju mund të dërgoni mesazhe sekrete 91 00:04:29,650 --> 00:04:34,520 dhe deshifroj mesazhe sekrete në mes të dy personave, A dhe B. 92 00:04:34,520 --> 00:04:37,490 >> Pra, para se të tranzicionit në atë botë të re, 93 00:04:37,490 --> 00:04:42,059 le të përpiqemi për të pajisur ju me disa teknikat me të cilat ju mund të eliminojnë 94 00:04:42,059 --> 00:04:43,850 ose reduktimin e te pakten disa nga frustrimet 95 00:04:43,850 --> 00:04:46,630 që ju keni hasur ndoshta gjatë javës së kaluar vetëm. 96 00:04:46,630 --> 00:04:50,830 Në të vërtetë, para teje janë such-- disa Problemet tuaja të para në C. Dhe shanset janë, 97 00:04:50,830 --> 00:04:54,010 në qoftë se ju jeni si mua, hera e parë ju përpiqeni të shkruani një program, 98 00:04:54,010 --> 00:04:57,330 edhe në qoftë se ju mendoni logjikisht Programi është shumë e thjeshtë, 99 00:04:57,330 --> 00:05:01,200 ju mund shumë mirë të goditur një mur, dhe përpiluesi nuk do të bashkëpunojnë. 100 00:05:01,200 --> 00:05:03,940 Bëni ose tingëllimë nuk do që në fakt urdhrat e tua. 101 00:05:03,940 --> 00:05:05,450 >> Dhe pse mund që të jetë? 102 00:05:05,450 --> 00:05:07,950 E pra, le të marrin një vështrim në, ndoshta, një program i thjeshtë. 103 00:05:07,950 --> 00:05:11,190 Unë jam duke shkuar për të shkuar përpara dhe për të shpëtuar këtë në një file i quajtur qëllimisht buggy0.c, 104 00:05:11,190 --> 00:05:13,590 sepse unë e di që ajo të të meta paraprakisht. 105 00:05:13,590 --> 00:05:17,400 Por unë nuk mund të kuptojnë se në qoftë se kjo është programi i parë apo të dytë ose të tretë 106 00:05:17,400 --> 00:05:18,830 se unë jam në të vërtetë duke e bërë veten time. 107 00:05:18,830 --> 00:05:23,820 Kështu që unë jam duke shkuar për të shkuar përpara dhe lloji jashtë, int kryesor (i pavlefshëm). 108 00:05:23,820 --> 00:05:28,130 Dhe pastaj brenda formatimin e teksteve kaçurrel e mia, një shumë të njohur ( "hello, world-- 109 00:05:28,130 --> 00:05:30,980 backslash, n ") - dhe një gjysmë-zorrës së trashë. 110 00:05:30,980 --> 00:05:32,360 >> Unë e kam ruajtur file. 111 00:05:32,360 --> 00:05:34,850 Tani unë jam duke shkuar për të shkuar poshtë në dritaren time terminal 112 00:05:34,850 --> 00:05:40,340 dhe llojin e make buggy0, sepse, përsëri, Emri i skedarit sot është buggy0.c. 113 00:05:40,340 --> 00:05:43,660 Kështu që unë lloji të buggy0, Enter. 114 00:05:43,660 --> 00:05:48,200 >> Dhe, oh, Zot, kujtohet nga hera e fundit se pa mesazhet e gabimit është një gjë e mirë. 115 00:05:48,200 --> 00:05:49,740 Kështu që nuk ka dalje është një gjë e mirë. 116 00:05:49,740 --> 00:05:52,920 Por këtu kam të qartë disa numër i gabimeve. 117 00:05:52,920 --> 00:05:56,470 >> Pra, rreshtin e parë të prodhimit pas shtypni të buggy0, kujtojnë, 118 00:05:56,470 --> 00:05:59,540 del mjaft e fjalëshumë tingëllimë së. 119 00:05:59,540 --> 00:06:02,067 Nën kapuç, CS50 IDE është konfiguruar 120 00:06:02,067 --> 00:06:04,150 për të përdorur një bandë e tërë e Opsionet me këtë përpilues 121 00:06:04,150 --> 00:06:05,941 në mënyrë që ju nuk keni për të menduar rreth tyre. 122 00:06:05,941 --> 00:06:08,840 Dhe kjo është e gjitha që vija e parë do të thotë se fillon me tingëllimë. 123 00:06:08,840 --> 00:06:11,720 >> Por pas kësaj, problemet të fillojë për të bërë paraqitjen e tyre. 124 00:06:11,720 --> 00:06:17,390 Buggy0.c në linjë 3, karakterin 5, nuk është një, gabim i madh i kuq. 125 00:06:17,390 --> 00:06:18,380 Cfare eshte ajo? 126 00:06:18,380 --> 00:06:23,562 Implicite deklaruar funksionin e bibliotekës printf me lloj int (char * const, 127 00:06:23,562 --> 00:06:26,050 ...) [-Werror]. 128 00:06:26,050 --> 00:06:28,379 Unë do të thotë, se shumë shpejt merr shumë misterioze. 129 00:06:28,379 --> 00:06:30,170 Dhe sigurisht, në fillim shikim, ne nuk do të 130 00:06:30,170 --> 00:06:32,380 presin që ju të kuptoni tërësia e atij mesazhi. 131 00:06:32,380 --> 00:06:34,213 Dhe kështu një nga mësimet sepse sot do 132 00:06:34,213 --> 00:06:36,919 të jetë për të provoni në njoftim modele, apo gjëra të ngjashme, 133 00:06:36,919 --> 00:06:38,960 për gabimet që mund të keni hasur në të kaluarën. 134 00:06:38,960 --> 00:06:41,335 Pra, le të të vë në lojë përveç vetëm ato fjalë që duken të njohura. 135 00:06:41,335 --> 00:06:44,290 I madh, gabim e kuqe është e qartë simbol i diçkaje të gabuar. 136 00:06:44,290 --> 00:06:47,940 >> implicite deklaruar Funksioni printf bibliotekë. 137 00:06:47,940 --> 00:06:51,680 Pra, edhe në qoftë se unë nuk e kuptojnë fare se çfarë implicite deklaruar funksionin e bibliotekës 138 00:06:51,680 --> 00:06:54,900 do të thotë, problemi me siguri ka të bëjë me printf disi. 139 00:06:54,900 --> 00:06:59,130 Dhe burimi i kësaj çështjeje ka të bëjë me shpalljen atë. 140 00:06:59,130 --> 00:07:02,440 >> Deklaruar një funksion është përmendur atë për herë të parë. 141 00:07:02,440 --> 00:07:06,210 Dhe kemi qenë terminologjinë javën e kaluar i deklaruar prototip një funksion së, 142 00:07:06,210 --> 00:07:11,860 ose me një linjë në krye tuaj Dosja e vet ose në një të ashtuquajtur skedar header. 143 00:07:11,860 --> 00:07:15,300 Dhe në atë fotografi u themi javën e kaluar se printf është quote, 144 00:07:15,300 --> 00:07:17,080 mbyll thonjëzat, ka deklaruar? 145 00:07:17,080 --> 00:07:20,950 Në çfarë skedë është prototipi i saj? 146 00:07:20,950 --> 00:07:24,640 >> Pra, nëse ju kujtohet, gjëja e parë I typed, pothuajse çdo program time-- fundit 147 00:07:24,640 --> 00:07:30,790 dhe aksidentalisht një moment më parë ka filluar shtypja myself-- ishte kjo here-- 148 00:07:30,790 --> 00:07:38,630 hash-- # Include 00:07:41,860 në qoftë se unë tani ruani këtë fotografi, unë jam duke shkuar të shkojnë përpara dhe të qartë ekranin tim, 150 00:07:41,860 --> 00:07:44,740 të cilat ju mund të bëni duke shtypur Qartë, ose ju mund të mbajë Kontrollit L, 151 00:07:44,740 --> 00:07:47,680 vetëm për të pastruar dritaren tuaj terminali vetëm për të eliminuar disa rrëmujë. 152 00:07:47,680 --> 00:07:51,370 >> Unë jam duke shkuar për të shkuar përpara dhe të ri-lloj make buggy0, Enter. 153 00:07:51,370 --> 00:07:53,790 Dhe voila, unë ende të shihni se Komanda gjatë nga tingëllimë, 154 00:07:53,790 --> 00:07:55,470 por nuk ka asnjë mesazh gabimi këtë herë. 155 00:07:55,470 --> 00:07:58,800 Dhe me të vërtetë, në qoftë se unë bëj ./buggy0, ashtu si herën e fundit, 156 00:07:58,800 --> 00:08:01,860 ku dot të thotë kjo Lista, Slash thjesht do të thotë, 157 00:08:01,860 --> 00:08:05,040 këtu vjen emri i programit dhe se emri i programit është buggy0, 158 00:08:05,040 --> 00:08:07,340 Enter, "hello, botën." 159 00:08:07,340 --> 00:08:09,440 >> Tani, se si mund të keni mbledhur këtë zgjidhje 160 00:08:09,440 --> 00:08:12,017 pa domosdoshmërisht duke njohur sa më shumë fjalë 161 00:08:12,017 --> 00:08:14,350 si unë, me siguri, duke pasur bërë këtë për kaq shumë vite? 162 00:08:14,350 --> 00:08:18,720 E pra, të realizuar në problemin e parë set, ne ju prezantoj me një komandë 163 00:08:18,720 --> 00:08:21,175 që stafin e vet CS50 e shkroi quajtur help50. 164 00:08:21,175 --> 00:08:24,300 Dhe me të vërtetë, C nuk specifikimet për problemi të vendosur se si të përdorin këtë. 165 00:08:24,300 --> 00:08:27,210 >> Por help50 është në thelb një program që stafi CS50-së 166 00:08:27,210 --> 00:08:30,850 ju ka shkruajtur që lejon për të drejtuar një komandë ose të drejtuar një program, 167 00:08:30,850 --> 00:08:36,169 dhe në qoftë se ju nuk e kuptoni e saj prodhimit, për të kaluar prodhimin e saj të help50, 168 00:08:36,169 --> 00:08:38,890 në të cilën pikë software që stafi kursit të shkruar 169 00:08:38,890 --> 00:08:42,429 do të shikojmë në prodhim programit tuaj rresht pas rreshti, karakter nga karakteri. 170 00:08:42,429 --> 00:08:46,000 Dhe në qoftë se ne, stafi, njohin mesazh gabimi që ju jeni duke përjetuar, 171 00:08:46,000 --> 00:08:50,580 ne do të përpiqemi për të provokuar ju me disa pyetje retorike, me disa këshilla, 172 00:08:50,580 --> 00:08:54,890 shumë si një TF ose AK ose veten time do të bëjë personalisht në orarit të punës. 173 00:08:54,890 --> 00:08:58,320 >> Kështu që shikoni për help50 në qoftë se ju nuk e bëni domosdoshmërisht të njohin një problem. 174 00:08:58,320 --> 00:09:00,790 Por nuk do të mbështetet në atë shumë si një shtrat. 175 00:09:00,790 --> 00:09:03,990 Sigurisht përpiqet për të kuptuar e saj Prodhimi dhe pastaj të mësojnë prej saj 176 00:09:03,990 --> 00:09:07,571 kështu që vetëm një herë ose dy herë bëni ju ndonjëherë të kandidojë help50 për një gabim të caktuar 177 00:09:07,571 --> 00:09:08,070 Mesazhi. 178 00:09:08,070 --> 00:09:10,660 Pas kësaj, ju duhet të jetë pajisur më mirë veten 179 00:09:10,660 --> 00:09:13,180 të kuptoj se çfarë në të vërtetë është. 180 00:09:13,180 --> 00:09:14,350 >> Le të bëjmë një tjetër këtu. 181 00:09:14,350 --> 00:09:20,410 Më lejoni të shkojnë përpara, dhe në një tjetër Dosja ne do të thërrasë këtë buggy1.c. 182 00:09:20,410 --> 00:09:23,110 Dhe në këtë skedë Jam do të deliberately-- 183 00:09:23,110 --> 00:09:26,330 por pretendojë se unë nuk kuptuar se çfarë gabimi kam bërë. 184 00:09:26,330 --> 00:09:31,420 >> Unë jam duke shkuar për të shkuar përpara dhe të bëjë this-- #include, pasi që unë kam 185 00:09:31,420 --> 00:09:33,660 mësuar mësimin tim nga një moment më parë. 186 00:09:33,660 --> 00:09:36,220 Int main (void), si më parë. 187 00:09:36,220 --> 00:09:40,880 Dhe pastaj në këtu unë jam duke shkuar për të bërë s string - get_string. 188 00:09:40,880 --> 00:09:43,770 Dhe kujtoni nga hera e fundit që kjo do të thotë, hej, kompjuter, 189 00:09:43,770 --> 00:09:48,280 më jepni një ndryshore, thirrje ajo s, dhe të bëjë llojin e kësaj variable një varg 190 00:09:48,280 --> 00:09:50,150 kështu që unë mund të ruajë një ose më shumë fjalë në të. 191 00:09:50,150 --> 00:09:52,191 >> Dhe pastaj në të djathtë anë e shenjë të barabartë 192 00:09:52,191 --> 00:09:54,980 është get_string, i cili është Funksioni në Bibliotekën CS50 193 00:09:54,980 --> 00:09:55,980 që bën pikërisht këtë. 194 00:09:55,980 --> 00:09:59,740 Ajo merr një funksion dhe pastaj Duart e saj nga djathta në të majtë. 195 00:09:59,740 --> 00:10:02,670 Pra, kjo shenjë të barabartë nuk do të thotë "Barabartë" si ne mund të mendojmë në matematikë. 196 00:10:02,670 --> 00:10:04,750 Kjo do të thotë detyrë nga djathta në të majtë. 197 00:10:04,750 --> 00:10:09,640 Pra kjo do të thotë, të marrë varg nga përdoruesi dhe ruajtur atë brenda s. 198 00:10:09,640 --> 00:10:10,460 >> Tani le të përdorin atë. 199 00:10:10,460 --> 00:10:13,820 Më lejoni të shkojnë përpara dhe tani si një të dytë line, më lejoni të shkoj përpara dhe të thonë "hello" - 200 00:10:13,820 --> 00:10:19,330 jo "botën", por "hello,% s-- e cila është placeholder ynë, presje s, 201 00:10:19,330 --> 00:10:22,030 e cila është e ndryshueshme ynë, dhe pastaj një gjysmë-zorrës së trashë. 202 00:10:22,030 --> 00:10:26,070 Pra, nëse unë nuk e vidhos deri shumë këtu, kjo duket si kod të saktë. 203 00:10:26,070 --> 00:10:28,090 >> Dhe instinktet e mia tani janë për të hartuar atë. 204 00:10:28,090 --> 00:10:30,400 Dosja është quajtur buggy1.c. 205 00:10:30,400 --> 00:10:33,770 Kështu që unë jam duke shkuar për të bërë të buggy1, Enter. 206 00:10:33,770 --> 00:10:36,377 Dhe mallkuar-it, nëse nuk ka edhe gabime më shumë se më parë. 207 00:10:36,377 --> 00:10:38,210 Unë do të thotë, ka më shumë mesazhet e gabimit kjo do të 208 00:10:38,210 --> 00:10:40,400 duket se linja aktuale në këtë program. 209 00:10:40,400 --> 00:10:42,730 >> Por takeaway këtu është, edhe në qoftë se ju jeni të tronditur 210 00:10:42,730 --> 00:10:45,040 me dy ose tre ose katër mesazhet e gabimit më shumë, 211 00:10:45,040 --> 00:10:48,340 përqëndrohet gjithmonë në shumë e parë e këtyre mesazheve. 212 00:10:48,340 --> 00:10:52,220 Duke parë në krye-më një, Scroll mbrapa si duhet të jetë. 213 00:10:52,220 --> 00:10:53,930 Kështu që këtu unë shtypur make buggy1. 214 00:10:53,930 --> 00:10:55,700 Ja se prodhimi tingëllimë siç pritet. 215 00:10:55,700 --> 00:10:57,290 >> Dhe këtu është gabimi i parë i kuq. 216 00:10:57,290 --> 00:11:02,370 Përdorimi i identifikues padeklaruar string, nuk dua të them standarde në? 217 00:11:02,370 --> 00:11:04,260 Pra, në standarde është në fakt diçka tjetër. 218 00:11:04,260 --> 00:11:06,240 Ajo i referohet përdoruesit e keyboard, në thelb. 219 00:11:06,240 --> 00:11:08,080 >> Por kjo nuk është ajo që unë do të thotë. 220 00:11:08,080 --> 00:11:11,770 Unë do të thotë varg, dhe unë do të thotë get_string. 221 00:11:11,770 --> 00:11:16,200 Pra, çfarë është ajo që unë harruar për të bërë këtë herë? 222 00:11:16,200 --> 00:11:20,230 Çfarë është zhdukur këtë kohë? 223 00:11:20,230 --> 00:11:23,600 Unë kam #include tim, kështu që unë kam qasje në printf. 224 00:11:23,600 --> 00:11:26,090 >> Por ajo që nuk kam qasje në vetëm ende? 225 00:11:26,090 --> 00:11:29,420 E pra, ashtu si herën e fundit, Unë kam nevojë për të të treguar përpiluesit 226 00:11:29,420 --> 00:11:31,691 Tingëllimë që këto funksione janë. 227 00:11:31,691 --> 00:11:33,940 Get_string nuk vjen me C. Dhe në veçanti, atë 228 00:11:33,940 --> 00:11:38,160 nuk vjen në header fotografi,. 229 00:11:38,160 --> 00:11:40,770 Ajo në vend vjen në diçka që stafi ka shkruar, 230 00:11:40,770 --> 00:11:44,176 e cila është një fotografi e ndryshme emrin por quajtur me vend. 231 00:11:44,176 --> 00:11:46,990 232 00:11:46,990 --> 00:11:50,861 >> Pra, thjesht duke shtuar se një rresht e kujtojnë code-- nga hera e fundit 233 00:11:50,861 --> 00:11:53,610 se kur tingëllimë shkon, ajo do për të parë në krye tim kodin e deri në fund, 234 00:11:53,610 --> 00:11:54,193 majta në të djathtë. 235 00:11:54,193 --> 00:11:57,200 Ajo do të vini re, oh, ju dëshironi. 236 00:11:57,200 --> 00:11:59,900 Më lër të shkoj dhe për të gjetur atë, ku ajo është në server, 237 00:11:59,900 --> 00:12:03,090 kopjoni dhe ngjisni atë, në thelb, në krye të dosjes tuaj 238 00:12:03,090 --> 00:12:06,820 në mënyrë që në këtë pikë në histori, Linja 1, pjesa tjetër e programit 239 00:12:06,820 --> 00:12:11,651 mund, në fakt, të përdorni ndonjë nga funksionet aty, në mesin e tyre get_string. 240 00:12:11,651 --> 00:12:13,650 Kështu që unë jam duke shkuar për të injorojë pjesa tjetër e këtyre gabimeve, 241 00:12:13,650 --> 00:12:17,190 sepse unë, me të vërtetë, dyshoj se vetëm e para në fakt rëndësi. 242 00:12:17,190 --> 00:12:20,780 Dhe unë jam duke shkuar për të shkuar përpara dhe përsëritje, pas kursimit dosjen time të buggy1. 243 00:12:20,780 --> 00:12:22,580 Dhe voila, ajo e bëri punën. 244 00:12:22,580 --> 00:12:29,200 Dhe në qoftë se unë bëj ./buggy1 dhe shtypni, për shembull, Zamyla, unë tani do të merrni hello, 245 00:12:29,200 --> 00:12:32,000 Zamyla, në vend të hello, bota. 246 00:12:32,000 --> 00:12:32,550 >> Në rregull. 247 00:12:32,550 --> 00:12:35,890 Kështu takeaways këtu, atëherë do të, një, të përpiqet për të grumbulloj pak nga pak sa më shumë si ju mund të 248 00:12:35,890 --> 00:12:39,140 nga mesazhet e gabimeve vetëm, duke kërkuar në disa nga fjalët e njohura. 249 00:12:39,140 --> 00:12:43,070 Me përjashtim të kësaj, përdorni help50 per problemi vendosur specifikim. 250 00:12:43,070 --> 00:12:46,500 Por veç kësaj, gjithashtu, gjithmonë të shikoni me humbje të lartë të vetëm të paktën 251 00:12:46,500 --> 00:12:50,051 fillimisht, për të parë se çfarë informacioni ai në fakt mund të japin. 252 00:12:50,051 --> 00:12:52,300 Por kjo rezulton se ka edhe më shumë funksionalitetin e ndërtuar 253 00:12:52,300 --> 00:12:55,030 në Bibliotekën CS50 për të ndihmuar që në fillim të semestrit 254 00:12:55,030 --> 00:12:57,580 dhe më herët në programimin kuptoj se çfarë po ndodh gabuar. 255 00:12:57,580 --> 00:12:59,840 Pra, le të bëjmë një shembull tjetër këtu. 256 00:12:59,840 --> 00:13:04,350 Unë jam duke shkuar për të thirrur këtë buggy2, e cila, përsëri, do të jetë me të meta jashtë 257 00:13:04,350 --> 00:13:05,650 e portës, me dizajn. 258 00:13:05,650 --> 00:13:09,980 >> Dhe unë jam duke shkuar për të shkuar përpara dhe të bëjë #include. 259 00:13:09,980 --> 00:13:12,580 Dhe atëherë unë jam duke shkuar për të bërë int kryesor (i pavlefshëm). 260 00:13:12,580 --> 00:13:14,840 Dhe atëherë unë jam duke shkuar për të bërë një për lak. 261 00:13:14,840 --> 00:13:16,690 Për (int i _ 0. 262 00:13:16,690 --> 00:13:18,750 i është më pak se ose te barabarte me 10. 263 00:13:18,750 --> 00:13:24,260 i ++, dhe më pas në formatimin e teksteve kaçurrel, unë jam duke shkuar të shtypura nga vetëm një simbol hashtag këtu 264 00:13:24,260 --> 00:13:25,920 dhe një karakter të ri linjë. 265 00:13:25,920 --> 00:13:29,220 >> Pra qëllimit tim me këtë Programi është mjaft e thjesht 266 00:13:29,220 --> 00:13:33,150 të iterate 10 herë dhe në çdo përsëritje 267 00:13:33,150 --> 00:13:35,260 e atij lak çdo kohë përmes ciklit, 268 00:13:35,260 --> 00:13:37,660 shtypura nga një hashtag, një hashtag, një hashtag. 269 00:13:37,660 --> 00:13:40,480 Një linjë për shkak se unë të kenë linjë të re atje. 270 00:13:40,480 --> 00:13:42,787 Dhe kujtoj se për loop, per week-- fundit 271 00:13:42,787 --> 00:13:44,620 dhe ju do të merrni më shumë njohur me sintaksë 272 00:13:44,620 --> 00:13:47,170 duke e përdorur atë me praktikën para long-- kjo i jep më 273 00:13:47,170 --> 00:13:49,740 një variabël i kërkova dhe vendos atë në 0. 274 00:13:49,740 --> 00:13:52,650 >> Kjo increments I në çdo përsëritje nga 1. 275 00:13:52,650 --> 00:13:54,940 Kaq i shkon me 1 deri në 2 deri 3. 276 00:13:54,940 --> 00:13:57,690 Dhe pastaj ky kusht në mesme mes gjysmë-colons 277 00:13:57,690 --> 00:14:03,010 merr kontrolluar në çdo përsëritje të bërë i sigurt se ne jemi ende brenda rrezes. 278 00:14:03,010 --> 00:14:06,830 Kështu që unë dua të iterate 10 herë, kështu që unë kanë lloj shumë intuitive vetëm 279 00:14:06,830 --> 00:14:09,070 vënë 10 si të lidhur ime sipërme atje. 280 00:14:09,070 --> 00:14:14,310 >> Dhe akoma, kur kam drejtuar këtë, pasi hartimin atë me make buggy2-- 281 00:14:14,310 --> 00:14:15,440 dhe kjo do të hartojnë OK. 282 00:14:15,440 --> 00:14:17,980 Kështu që unë nuk kanë një gabim sintakse këtë herë. 283 00:14:17,980 --> 00:14:20,940 Më lejoni të shkojnë përpara tani dhe të drejtuar buggy2, Enter. 284 00:14:20,940 --> 00:14:22,620 Dhe tani lëvizni lart. 285 00:14:22,620 --> 00:14:24,890 Dhe më lejoni të rritet madhësia e dritares. 286 00:14:24,890 --> 00:14:33,720 >> I duket të kenë 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. 287 00:14:33,720 --> 00:14:38,891 Pra, ka 11 hashtags, edhe pse I qartë vënë 10 brenda këtij lak. 288 00:14:38,891 --> 00:14:42,140 Tani, disa nga ju mund të shihni menjëherë ajo që është gabim, sepse, në të vërtetë, kjo 289 00:14:42,140 --> 00:14:43,720 nuk është një gabim shumë e vështirë për të bërë. 290 00:14:43,720 --> 00:14:46,070 Por është shumë i zakonshëm bërë shumë më herët. 291 00:14:46,070 --> 00:14:49,820 >> Ajo që unë dua të theksoj, edhe pse, po, si mund unë kuptoj këtë? 292 00:14:49,820 --> 00:14:52,300 E pra, ajo rezulton se Biblioteka CS50 vjen 293 00:14:52,300 --> 00:14:55,380 me jo vetëm get_string dhe get_int dhe get_float dhe funksionet e tjera. 294 00:14:55,380 --> 00:14:59,980 Ajo gjithashtu vjen me një funksion të veçantë quajtur eprintf, ose, gabim printf. 295 00:14:59,980 --> 00:15:03,270 Dhe ajo ekziston vetëm për të bërë atë një pak më e lehtë për ju 296 00:15:03,270 --> 00:15:06,310 kur debugging kodin tuaj të vetëm të shkruar një mesazh gabimi në ekran 297 00:15:06,310 --> 00:15:07,850 dhe e di se ku ajo erdhi nga. 298 00:15:07,850 --> 00:15:11,000 >> Kështu për shembull, një gjë unë mund të bëjmë këtu me këtë funksion është this-- 299 00:15:11,000 --> 00:15:20,230 eprintf, dhe atëherë unë jam duke shkuar për të shkuar përpara dhe thonë se i tani është% i, backslash, n. 300 00:15:20,230 --> 00:15:22,330 Dhe unë jam duke shkuar për të plug në vlerën e i. 301 00:15:22,330 --> 00:15:25,400 Dhe deri të lartë, sepse kjo është në Bibliotekën CS50, 302 00:15:25,400 --> 00:15:27,580 Unë jam duke shkuar për të shkuar përpara dhe përfshijnë 303 00:15:27,580 --> 00:15:29,169 kështu që unë kam qasje në këtë funksion. 304 00:15:29,169 --> 00:15:31,460 Por le të marrin në konsideratë se çfarë linjë 9 është menduar të jetë bërë. 305 00:15:31,460 --> 00:15:32,670 Unë jam duke shkuar për të fshirë këtë përfundimisht. 306 00:15:32,670 --> 00:15:34,670 Kjo nuk ka të bëjë me qëllimin tim gjithëpërfshirës. 307 00:15:34,670 --> 00:15:39,090 Por eprintf, gabimi printf, është vetëm të thotë të më jepni disa informacione diagnostik. 308 00:15:39,090 --> 00:15:42,460 Kur kam drejtuar programin tim, unë dua të shohin këtë në ekran përkohësisht 309 00:15:42,460 --> 00:15:44,550 si dhe vetëm për të kuptuar çfarë po ndodh. 310 00:15:44,550 --> 00:15:47,330 >> Dhe, në të vërtetë, në secilën përsëritje këtu e linjës 9 311 00:15:47,330 --> 00:15:49,260 Unë dua të shoh, se çfarë është vlera e i? 312 00:15:49,260 --> 00:15:50,290 Cila është vlera e i? 313 00:15:50,290 --> 00:15:51,280 Cila është vlera e i? 314 00:15:51,280 --> 00:15:55,650 Dhe, me shpresë, unë duhet vetëm shihni këtë mesazh, gjithashtu, 10 herë. 315 00:15:55,650 --> 00:15:57,780 >> Pra më lejoni të shkoj përpara dhe të përpiluar programin tim, 316 00:15:57,780 --> 00:15:59,905 si unë duhet të bëni çdo kohë Unë të bëjë një ndryshim. ./buggy2. 317 00:15:59,905 --> 00:16:02,680 318 00:16:02,680 --> 00:16:03,640 Dhe now-- OK. 319 00:16:03,640 --> 00:16:04,820 Ka shumë më tepër në vazhdim e sipër. 320 00:16:04,820 --> 00:16:07,610 Pra më lejoni të lëvizni lart në një dritare edhe më të mëdha. 321 00:16:07,610 --> 00:16:10,190 >> Dhe ju do të shihni se, secila nga hashtags është ende shtypjen. 322 00:16:10,190 --> 00:16:15,270 Por në mes njëri prej tyre është tani kjo prodhimit diagnostike formatuar si më poshtë. 323 00:16:15,270 --> 00:16:17,960 Emri i programit tim këtu është buggy2. 324 00:16:17,960 --> 00:16:20,432 Emri i skedarit është buggy2.c. 325 00:16:20,432 --> 00:16:24,080 Numri linjës nga i cili kjo është shtypur është linjë 9. 326 00:16:24,080 --> 00:16:27,500 Dhe pastaj në të djathtë e që është mesazh gabimi që unë jam duke pritur. 327 00:16:27,500 --> 00:16:30,701 >> Dhe çfarë është e mirë për këtë është se tani unë nuk kam për të numëruar domosdoshmërisht 328 00:16:30,701 --> 00:16:32,200 në kokën time se çfarë programi im është duke bërë. 329 00:16:32,200 --> 00:16:34,240 Unë mund të shoh se nga ana përsëritje të parë i është 0, 330 00:16:34,240 --> 00:16:39,420 atëherë 1, pastaj 2, pastaj 3, pastaj 4, pastaj 5, pra 6, pastaj 7, pastaj 8, pastaj 9, atëherë 331 00:16:39,420 --> 00:16:40,980 10. 332 00:16:40,980 --> 00:16:42,050 Pra, prit një minutë. 333 00:16:42,050 --> 00:16:43,740 Cfare po ndodh ketu? 334 00:16:43,740 --> 00:16:48,190 Unë ende duket të jenë numëruar si qëllim deri ne 10. 335 00:16:48,190 --> 00:16:50,550 >> Por kur kam filluar? 336 00:16:50,550 --> 00:16:53,240 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 10. 337 00:16:53,240 --> 00:16:58,040 Kështu 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10-- gishti 11 338 00:16:58,040 --> 00:16:59,990 është tregues i problemit. 339 00:16:59,990 --> 00:17:02,850 Unë duket se kanë numëruar gabimisht në lak tim. 340 00:17:02,850 --> 00:17:06,599 Në vend se të shkojnë 10 përsëritjeve, Unë jam duke filluar në 0, 341 00:17:06,599 --> 00:17:09,550 Unë jam duke i dhënë fund në dhe përmes 10. 342 00:17:09,550 --> 00:17:12,030 Por për shkak se, si një kompjuter, Unë jam duke filluar numërimin në 0, 343 00:17:12,030 --> 00:17:15,250 I duhen numëruar deri për të, por jo me, 10. 344 00:17:15,250 --> 00:17:18,510 >> Dhe kështu fix, unë përfundimisht realizuar këtu, është një nga dy gjëra. 345 00:17:18,510 --> 00:17:22,430 I shumë thjesht mund të them numëruar deri në më pak se 10. 346 00:17:22,430 --> 00:17:27,260 Kështu 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, e cila është, me të vërtetë, i saktë, 347 00:17:27,260 --> 00:17:28,900 edhe pse kjo tingëllon një gabim të vogël. 348 00:17:28,900 --> 00:17:35,070 Ose unë mund të bëj më pak se ose e barabartë në 9, për sa kohë që unë të fillojë në 0. 349 00:17:35,070 --> 00:17:40,056 Ose në qoftë se ju me të vërtetë nuk e pëlqen atë, ju mund të llogarisë deri me 10, por të fillojë në 1. 350 00:17:40,056 --> 00:17:41,680 Por përsëri, kjo thjesht nuk është se e zakonshme. 351 00:17:41,680 --> 00:17:43,977 Në programming-- megjithëse jo aq shumë në Scratch-- 352 00:17:43,977 --> 00:17:45,810 por në programimin në C dhe gjuhë të tjera, 353 00:17:45,810 --> 00:17:47,670 si dhe JavaScript Python dhe të tjerët, është e 354 00:17:47,670 --> 00:17:49,880 vetëm shumë e zakonshme për Diskutimi ynë i binary 355 00:17:49,880 --> 00:17:53,450 të vetëm të fillojë numërimi në nivel Numri më i ulët ju mund të, e cila është 0. 356 00:17:53,450 --> 00:17:53,950 Në rregull. 357 00:17:53,950 --> 00:17:55,160 Pra, kjo është eprintf. 358 00:17:55,160 --> 00:17:58,600 Dhe përsëri, tani që unë kam realizuar artistikisht tim problem, dhe unë jam duke shkuar për të shkuar mbrapa në 0 359 00:17:58,600 --> 00:18:01,470 me më pak se 10, unë jam duke shkuar për të shkuar në dhe të fshini eprintf. 360 00:18:01,470 --> 00:18:04,580 >> Ajo nuk duhet të jetë atje, kur unë anije kodin tim ose të dorëzojë kodin tim 361 00:18:04,580 --> 00:18:05,800 ose të tregojë atë për të gjithë të tjerët. 362 00:18:05,800 --> 00:18:07,980 Është me të vërtetë vetëm për qëllim për t'u përdorur perkohesisht. 363 00:18:07,980 --> 00:18:11,650 Por tani unë kam fiksuar këtë problem i veçantë si. 364 00:18:11,650 --> 00:18:16,780 >> E pra, le të bëjmë një shembull më shumë këtu se unë jam duke shkuar për të nxitur si më poshtë. 365 00:18:16,780 --> 00:18:22,850 Unë jam duke shkuar për të shkuar përpara dhe të #include. $ 50 366 00:18:22,850 --> 00:18:25,580 Dhe unë jam duke shkuar për të shkuar përpara dhe #include. 367 00:18:25,580 --> 00:18:29,030 >> Dhe unë jam duke shkuar për të shpëtuar kjo skedë si buggy3.c. 368 00:18:29,030 --> 00:18:31,740 Dhe unë jam duke shkuar për të shkuar përpara dhe të deklarojë int kryesor (i pavlefshëm). 369 00:18:31,740 --> 00:18:34,186 Dhe pastaj brenda ka Unë jam duke shkuar për të bërë int i _ - 370 00:18:34,186 --> 00:18:36,435 Unë dua për të zbatuar një program me një get_negative_int. 371 00:18:36,435 --> 00:18:39,146 372 00:18:39,146 --> 00:18:40,770 Kjo nuk është një funksion që ekziston ende. 373 00:18:40,770 --> 00:18:42,870 Pra, ne jemi duke shkuar për të zbatuar në një moment të vetëm. 374 00:18:42,870 --> 00:18:45,541 Por, ne jemi duke shkuar për të parë pse kjo është buggy në pasim të parë. 375 00:18:45,541 --> 00:18:47,290 Dhe një herë unë kam marrë një int nga përdoruesi, 376 00:18:47,290 --> 00:18:53,365 Unë jam vetëm duke shkuar për të shtypur% i është negative integer, backslash, n, comma, i. 377 00:18:53,365 --> 00:18:55,240 Me fjalë të tjera, të gjitha unë duan këtë program për të bërë 378 00:18:55,240 --> 00:18:58,000 është marrë një int negativ nga përdoruesit dhe pastaj të shtypura nga 379 00:18:58,000 --> 00:18:59,980 se filan është një int negative. 380 00:18:59,980 --> 00:19:02,080 >> Tani kam nevojë për të zbatuar këtë funksion. 381 00:19:02,080 --> 00:19:05,740 Pra, më vonë në dosjen time, unë jam duke shkuar për të shkuar përpara dhe të deklarojë një funksion të quajtur 382 00:19:05,740 --> 00:19:10,670 get_negative_int (void) - dhe ne do të të kthehen në atë që vijë të thotë përsëri 383 00:19:10,670 --> 00:19:18,790 në një moment-- int n; do-- bëni following-- printf n është :. 384 00:19:18,790 --> 00:19:26,210 Dhe atëherë unë jam duke shkuar për të bërë n - get_int, dhe e bëjnë këtë, ndërsa n është më e madhe se 0. 385 00:19:26,210 --> 00:19:28,310 Dhe pastaj të kthehen n ;. 386 00:19:28,310 --> 00:19:31,730 >> Pra, nuk është një shumë në vazhdim e sipër në këtë, por asnjë nga të cilat ne nuk kemi 387 00:19:31,730 --> 00:19:33,710 shikoni në javën e kaluar, të paktën për pak kohë. 388 00:19:33,710 --> 00:19:36,980 Pra, në linjë 10 këtu e kam deklaruar një Funksioni i quajtur get_negative_int, 389 00:19:36,980 --> 00:19:39,620 dhe unë kam vënë (i pavlefshëm), në kllapa, arsyeja është kjo 390 00:19:39,620 --> 00:19:40,950 nuk merr një të dhënë. 391 00:19:40,950 --> 00:19:42,910 Unë nuk jam duke kaluar asgjë për këtë funksion. 392 00:19:42,910 --> 00:19:44,690 Unë jam vetëm duke marrë diçka prapa. 393 00:19:44,690 --> 00:19:47,270 >> Dhe çfarë unë jam duke shpresuar për të marrë përsëri është një numër të plotë. 394 00:19:47,270 --> 00:19:50,040 Nuk ka asnjë lloj të dhënave në C quajtur negative_int. 395 00:19:50,040 --> 00:19:52,880 Kjo është vetëm int, kështu që ajo do të jetë mbi ne për të siguruar 396 00:19:52,880 --> 00:19:55,340 se vlera që është në të vërtetë i kthyer nuk është vetëm një int 397 00:19:55,340 --> 00:19:56,380 por edhe negative. 398 00:19:56,380 --> 00:20:02,150 >> On line 12 Unë jam deklaruar një ndryshore quajtur n dhe duke e bërë atë të tipit int. 399 00:20:02,150 --> 00:20:07,500 Dhe pastaj në linjë 13 deri 18 jam duke bërë diçka, ndërsa diçka është e vërtetë. 400 00:20:07,500 --> 00:20:11,040 Unë jam duke shkuar përpara dhe shtypje n është, zorrës së trashë, dhe pastaj një hapësirë, 401 00:20:11,040 --> 00:20:12,800 si një të shpejtë për përdoruesit. 402 00:20:12,800 --> 00:20:16,410 >> Unë pastaj duke e quajtur get_int dhe ruajtjen ashtuquajturën vlerën e saj të kthimit 403 00:20:16,410 --> 00:20:18,130 në atë të ndryshueshme n. 404 00:20:18,130 --> 00:20:22,600 Por unë do të vazhdojmë të bëjmë kjo ndërsa n është më i madh se 0. 405 00:20:22,600 --> 00:20:27,960 Me fjalë të tjera, në qoftë se përdoruesi më jep një int dhe se numri është më i madh se 0, 406 00:20:27,960 --> 00:20:31,180 ergo, pozitive, unë jam duke shkuar për të vetëm i mbajnë reprompting përdoruesit, 407 00:20:31,180 --> 00:20:37,160 mbajtur reprompting, duke i detyruar ata që të bashkëpunojnë dhe të më jepni një int negativ. 408 00:20:37,160 --> 00:20:41,640 >> Dhe një herë n fakt është negative-- mendoj përdorues në fund lloje -50, 409 00:20:41,640 --> 00:20:46,710 atëherë kjo loop, ndërsa nuk është e vërtetë pasi -50 nuk është më i madh se 0. 410 00:20:46,710 --> 00:20:51,140 Pra, ne të thyer nga të cilat loop logjikisht dhe të kthehet n. 411 00:20:51,140 --> 00:20:53,520 >> Por ka një tjetër gjë që unë duhet të bëni. 412 00:20:53,520 --> 00:20:56,190 Dhe unë thjesht mund ta bëjë këtë nga kopjimi dhe pasting 413 00:20:56,190 --> 00:20:58,540 një linjë e kodit në krye të file. 414 00:20:58,540 --> 00:21:01,630 Unë kam nevojë për të mësuar tingëllimë, ose premtim për tingëllimë, 415 00:21:01,630 --> 00:21:04,630 në mënyrë të qartë që unë do të, në të vërtetë, shkoni dhe të zbatojë 416 00:21:04,630 --> 00:21:06,020 kjo get_negative_int funksion. 417 00:21:06,020 --> 00:21:07,674 Ajo vetëm mund të jetë më e ulët në dosje. 418 00:21:07,674 --> 00:21:09,840 Përsëri, kujtojmë se tingëllimë lexon gjëra të lartë e deri në fund, 419 00:21:09,840 --> 00:21:12,330 majta në të djathtë, kështu që ju nuk mund të thërrasë një funksion nëse tingëllimë 420 00:21:12,330 --> 00:21:15,330 nuk e di se do të ekzistojë. 421 00:21:15,330 --> 00:21:18,430 >> Tani, për fat të keq, ky program, si disa nga ju mund të keni vënë re, 422 00:21:18,430 --> 00:21:19,590 tashmë është buggy. 423 00:21:19,590 --> 00:21:21,400 Më lejoni të shkojnë përpara dhe të bëjë buggy3. 424 00:21:21,400 --> 00:21:26,904 Harton, kështu që problemi im tani nuk është ndonjë gabim sintakse, si një gabim tekstuale, 425 00:21:26,904 --> 00:21:29,570 kjo është në të vërtetë do të jetë një logjike gabim që unë kam qëllim 426 00:21:29,570 --> 00:21:32,450 bërë si një mundësi për të hap me atë që po ndodh. 427 00:21:32,450 --> 00:21:35,540 >> Unë jam duke shkuar për të shkuar përpara tani dhe drejtuar buggy3. 428 00:21:35,540 --> 00:21:37,490 Dhe unë jam duke shkuar për të shkuar përpara dhe të mos bashkëpunojnë. 429 00:21:37,490 --> 00:21:39,494 Unë jam duke shkuar për të dhënë atë numrin 1. 430 00:21:39,494 --> 00:21:41,410 Ajo nuk e pëlqen atë, kështu që ajo është bërë më përsëri. 431 00:21:41,410 --> 00:21:42,147 >> Si rreth 2? 432 00:21:42,147 --> 00:21:43,021 3? 433 00:21:43,021 --> 00:21:43,520 50? 434 00:21:43,520 --> 00:21:44,740 Asnjë nga ata që janë duke punuar. 435 00:21:44,740 --> 00:21:46,890 Si në lidhje me -50? 436 00:21:46,890 --> 00:21:48,560 Dhe programi duket për të punuar. 437 00:21:48,560 --> 00:21:49,970 >> Më lejoni të provoni edhe një herë. 438 00:21:49,970 --> 00:21:53,400 Më lejoni të provoni -1, duket për të punuar. 439 00:21:53,400 --> 00:21:56,380 Më lejoni të provoni -2, duket për të punuar. 440 00:21:56,380 --> 00:21:59,640 Më lejoni të provoni 0. 441 00:21:59,640 --> 00:22:01,684 Huh, kjo është e gabuar. 442 00:22:01,684 --> 00:22:03,350 Tani, ne jemi duke qenë pak pedant këtu. 443 00:22:03,350 --> 00:22:07,090 Por kjo është, në të vërtetë, rasti se 0 nuk është as pozitive, as negative. 444 00:22:07,090 --> 00:22:11,150 Dhe kështu fakti që programi im është i duke thënë se 0 është një numër i plotë negativ, 445 00:22:11,150 --> 00:22:12,820 kjo nuk është teknikisht të saktë. 446 00:22:12,820 --> 00:22:15,180 >> Tani, pse është bërë kjo? 447 00:22:15,180 --> 00:22:16,270 E pra, ajo mund të jetë e qartë. 448 00:22:16,270 --> 00:22:18,110 Dhe, me të vërtetë, programi është për qëllim të jetë mjaft e thjeshtë 449 00:22:18,110 --> 00:22:19,670 kështu që ne kemi diçka për të eksploruar. 450 00:22:19,670 --> 00:22:25,870 >> Por le të futur një debugging të tretë Teknika këtu quhet debug50. 451 00:22:25,870 --> 00:22:27,750 Pra, ky është një program që ne kemi krijuar vetëm 452 00:22:27,750 --> 00:22:30,770 këtë vit e quajti debug50 që do të ju lejojnë 453 00:22:30,770 --> 00:22:34,130 të përdorin atë që quhet një ndërtuar-në Rregullues grafike në CS50 IDE. 454 00:22:34,130 --> 00:22:38,400 Dhe një Rregullues është vetëm një program që në përgjithësi ju lejon të drejtuar programin tuaj 455 00:22:38,400 --> 00:22:44,050 por hap pas hap pas hapi, linjë nga rresht pas rreshti, duke pushuar, poking 456 00:22:44,050 --> 00:22:47,626 rreth, duke kërkuar në variablat që programi nuk ka vetëm goditje e kaluara ju 457 00:22:47,626 --> 00:22:49,750 dhe shpejt shkruar diçka apo jo shkruar diçka. 458 00:22:49,750 --> 00:22:53,250 Kjo ju jep një mundësi, në Shpejtësia e njeriut, për të bashkëvepruar me të. 459 00:22:53,250 --> 00:22:55,470 >> Dhe për të bërë këtë, ju thjesht të bëjë të mëposhtme. 460 00:22:55,470 --> 00:22:58,479 Pas hartimin kodin tuaj, të cilën unë tashmë e bëri, buggy3, 461 00:22:58,479 --> 00:23:00,020 të shkojnë përpara dhe të drejtuar debug50 ./buggy. 462 00:23:00,020 --> 00:23:03,460 463 00:23:03,460 --> 00:23:06,760 Aq shumë si help50 ka ju drejtuar help50 dhe pastaj komanda, 464 00:23:06,760 --> 00:23:10,120 debug50 ka ju drejtuar debug50 dhe atëherë emri i komandës. 465 00:23:10,120 --> 00:23:14,440 >> Tani shikojnë se çfarë ndodh në ekran e mia, në anën e djathtë në veçanti. 466 00:23:14,440 --> 00:23:19,400 Kur kam goditur Run, të gjitha të papritur panel kjo djathtë 467 00:23:19,400 --> 00:23:20,419 hap në ekran. 468 00:23:20,419 --> 00:23:22,210 Dhe ka shumë ndodh në në shikim të parë. 469 00:23:22,210 --> 00:23:25,110 Por nuk është shumë e shumë për t'u shqetësuar rreth ende. 470 00:23:25,110 --> 00:23:28,570 >> Kjo tregon mua çdo gjë që po ndodh brenda programin tim 471 00:23:28,570 --> 00:23:31,130 tani dhe me anë të këtyre buttons up top është atëherë 472 00:23:31,130 --> 00:23:35,910 duke lejuar mua për të hap deri kodin tim në fund të fundit hap pas hap pas hapi. 473 00:23:35,910 --> 00:23:37,140 Por jo vetëm ende. 474 00:23:37,140 --> 00:23:38,060 Vini re se çfarë ndodh. 475 00:23:38,060 --> 00:23:40,600 Në dritaren time terminal Unë jam duke u nxitur për n. 476 00:23:40,600 --> 00:23:44,560 Dhe unë jam duke shkuar për të shkuar përpara dhe bashkëpunuar këtë herë dhe shkruani -1. 477 00:23:44,560 --> 00:23:48,770 Dhe megjithëse pak cryptically, -1 është një numër i plotë negative, siç pritej. 478 00:23:48,770 --> 00:23:52,020 >> Dhe pastaj fëmija doli me Statusi 0 GDBserver daljes. 479 00:23:52,020 --> 00:23:55,180 GDB, GNU Debugger, është emri e software themelor 480 00:23:55,180 --> 00:23:56,620 që zbaton këtë Rregullues. 481 00:23:56,620 --> 00:24:00,500 Por e gjithë kjo do të thotë me të vërtetë, Rregullues u largua për shkak se programi im të lë 482 00:24:00,500 --> 00:24:01,710 dhe të gjitha ishte mirë. 483 00:24:01,710 --> 00:24:06,020 Nëse unë dua të të vërtetë të korrigjoj programin tim, Unë duhet të them preemptively debug50, 484 00:24:06,020 --> 00:24:08,920 ku mund të duan të fillojnë shkelën me kodin tim? 485 00:24:08,920 --> 00:24:11,750 >> Dhe ndoshta mënyra më e thjeshtë për të bërë këtë është si më poshtë. 486 00:24:11,750 --> 00:24:15,300 Nëse unë rri pezull mbi të hendek i redaktor tim këtu, 487 00:24:15,300 --> 00:24:19,090 kështu që me të vërtetë vetëm në sidebar këtu, në të majtë të numrit të linjës, 488 00:24:19,090 --> 00:24:21,870 Vini re se në qoftë se unë vetëm të klikoni një herë, kam vënë një pikë të vogël të kuqe. 489 00:24:21,870 --> 00:24:24,460 Dhe se dot të vogël të kuqe, si një shenjë të ndaluar, do të thotë, hej, 490 00:24:24,460 --> 00:24:29,430 debug50, ekzekutimi pauzë të kodit tim ka të drejtë kur kam drejtuar këtë program. 491 00:24:29,430 --> 00:24:30,260 >> Pra, le ta bëjmë këtë. 492 00:24:30,260 --> 00:24:37,340 Më lejoni të shkojnë përpara dhe të drejtuar programin tim përsëri me debug50 ./buggy3, Enter. 493 00:24:37,340 --> 00:24:40,110 Dhe tani, njoftim, diçka ndryshe ka ndodhur. 494 00:24:40,110 --> 00:24:42,440 Unë nuk jam duke u nxitur por në dritaren time terminal 495 00:24:42,440 --> 00:24:45,430 për çdo gjë, sepse nuk kanë marrë ende atje në programin tim. 496 00:24:45,430 --> 00:24:47,950 Vini re se në linjë 8 e cila është theksuar tashmë, 497 00:24:47,950 --> 00:24:51,720 dhe ka një shigjetë pak në duke thënë majtë, ju jeni të ndaluar këtu. 498 00:24:51,720 --> 00:24:55,030 Kjo linjë e kodit, linjë 8, nuk është ekzekutuar ende. 499 00:24:55,030 --> 00:24:58,940 >> Dhe çfarë është kurioz, nëse unë shoh mbi këtu në anën e djathtë, 500 00:24:58,940 --> 00:25:03,530 vini re se i është një lokal ndryshueshme, lokale në kuptimin 501 00:25:03,530 --> 00:25:05,450 se është brenda funksionit aktual. 502 00:25:05,450 --> 00:25:08,920 Dhe vlera e tij, me sa duket nga default, dhe lloj të përshtatshme, është 0. 503 00:25:08,920 --> 00:25:10,260 Por unë nuk e tipit 0. 504 00:25:10,260 --> 00:25:13,410 Që vetëm ndodh të jetë e saj Vlera e parazgjedhur në këtë moment. 505 00:25:13,410 --> 00:25:15,490 >> Pra më lejoni të shkoj përpara dhe të bëjë këtë tani. 506 00:25:15,490 --> 00:25:18,680 Më lejoni të shkojnë përpara dhe të të lartë të drejtë këtu, unë jam i 507 00:25:18,680 --> 00:25:20,970 do të shkojnë përpara dhe të klikoni këtë ikonë parë që 508 00:25:20,970 --> 00:25:25,360 do të thotë hap mbi të cilin do të thotë mos kaloni ajo po hap mbi këtë linjë të kodit, 509 00:25:25,360 --> 00:25:27,770 ekzekutimin e tij gjatë rrugës. 510 00:25:27,770 --> 00:25:30,710 >> Dhe tani, vini re, my shpejtë ka ndryshuar vetëm. 511 00:25:30,710 --> 00:25:31,380 Pse eshte ajo? 512 00:25:31,380 --> 00:25:33,639 Unë e kam thënë debug50, drejtuar këtë linjë të kodit. 513 00:25:33,639 --> 00:25:34,930 Çfarë e bën këtë linjë e kodit të bëjë? 514 00:25:34,930 --> 00:25:35,960 Bën mua për një int. 515 00:25:35,960 --> 00:25:36,460 NE RREGULL. 516 00:25:36,460 --> 00:25:37,400 Më lejoni të bashkëpunojnë. 517 00:25:37,400 --> 00:25:41,340 Më lejoni të shkojnë përpara dhe tani shkruani -1, Enter. 518 00:25:41,340 --> 00:25:42,920 Dhe tani vini re se çfarë ka ndryshuar. 519 00:25:42,920 --> 00:25:46,060 Në anën e djathtë, variabël lokale im i 520 00:25:46,060 --> 00:25:48,200 tregohet si -1 tani. 521 00:25:48,200 --> 00:25:49,810 Dhe kjo është ende e tipit int. 522 00:25:49,810 --> 00:25:53,102 >> Dhe vini re, gjithashtu, my ashtuquajturi quajnë rafte, ku e kam pushim? 523 00:25:53,102 --> 00:25:54,810 Ne do të flasim më shumë për këtë në të ardhmen. 524 00:25:54,810 --> 00:25:58,620 Por thirrja rafte vetëm i referohet asaj që Funksionet janë aktualisht në lëvizje. 525 00:25:58,620 --> 00:26:00,040 Tani për tani kjo është vetëm kryesor. 526 00:26:00,040 --> 00:26:03,590 Dhe tani vetëm Lokale variabël është i me një vlerë prej 1. 527 00:26:03,590 --> 00:26:09,840 >> Dhe kur më në fund hap mbi këtë linjë këtu, me të njëjtën ikonë në krye të drejtë, 528 00:26:09,840 --> 00:26:11,410 -1 Është një numër i plotë negativ. 529 00:26:11,410 --> 00:26:13,580 Tani ajo është duke pushuar mbi këtë mbajtëse kaçurrel. 530 00:26:13,580 --> 00:26:14,740 Le të le të bëjë gjë e saj. 531 00:26:14,740 --> 00:26:17,300 I hap mbi këtë linjë, dhe voila. 532 00:26:17,300 --> 00:26:20,240 >> Pra, jo të gjithë që tmerrësisht shkolluar ende, 533 00:26:20,240 --> 00:26:23,550 por ajo nuk më lejoni të bëj një pauzë dhe mendoj se përmes logjikisht 534 00:26:23,550 --> 00:26:24,870 çfarë ky program është duke bërë. 535 00:26:24,870 --> 00:26:26,890 Por kjo nuk ishte rasti i gabuar. 536 00:26:26,890 --> 00:26:28,510 Le ta bëjmë këtë përsëri si më poshtë. 537 00:26:28,510 --> 00:26:31,340 >> Unë jam duke shkuar për të lënë atë breakpoint on line 8 me të kuqe dot. 538 00:26:31,340 --> 00:26:32,830 Unë jam duke shkuar për përsëritje debug50. 539 00:26:32,830 --> 00:26:34,400 Është e ndaluar automatikisht këtu. 540 00:26:34,400 --> 00:26:37,660 Por këtë herë, në vend të shkelën mbi këtë linjë, 541 00:26:37,660 --> 00:26:42,290 më lejoni në fakt shkojnë në brendësi të get_negative_int dhe të kuptoj se, 542 00:26:42,290 --> 00:26:45,530 pse është pranuar 0 si një përgjigje të vlefshme? 543 00:26:45,530 --> 00:26:47,990 >> Pra, në vend të klikuar Hapi Over. 544 00:26:47,990 --> 00:26:50,630 Unë jam duke shkuar për të shkuar përpara dhe klikoni hap në. 545 00:26:50,630 --> 00:26:54,030 Dhe vini re se linja 8 kjo është tani theksuar tani papritmas 546 00:26:54,030 --> 00:26:56,900 bëhet e linjës 17. 547 00:26:56,900 --> 00:26:59,947 >> Tani, nuk është se Rregullues ka skipped linjat 14 dhe 15 dhe 16. 548 00:26:59,947 --> 00:27:01,780 Kjo është vetëm nuk ka asgjë për të treguar atje. 549 00:27:01,780 --> 00:27:04,050 Ata janë vetëm duke deklaruar variablave, dhe pastaj nuk është fjala A 550 00:27:04,050 --> 00:27:05,390 dhe pastaj një mbajtëse të hapur kaçurrel. 551 00:27:05,390 --> 00:27:09,227 E vetmja Linja funksionale që është lëng të vërtetë është kjo këtu, 17. 552 00:27:09,227 --> 00:27:11,060 Dhe kjo është ajo ku ne kemi ndaluar automatikisht. 553 00:27:11,060 --> 00:27:13,870 >> Pra printf ( "n.is:") ;, kështu që ende nuk ka ndodhur. 554 00:27:13,870 --> 00:27:18,250 Pra, le të shkojnë përpara dhe klikoni Hapi Over. 555 00:27:18,250 --> 00:27:20,326 Tani të shpejtë im, me të vërtetë, ndryshuar në ( "n është:"). 556 00:27:20,326 --> 00:27:22,450 Tani get_int, unë nuk jam duke shkuar të shqetësojë shkelën në, 557 00:27:22,450 --> 00:27:24,750 për shkak se funksioni i bërë nga CS50 në Bibliotekën. 558 00:27:24,750 --> 00:27:25,750 Kjo është me sa duket e saktë. 559 00:27:25,750 --> 00:27:28,440 >> Kështu që unë jam duke shkuar për të shkuar përpara dhe lloj të bashkëpunojnë duke i dhënë atë 560 00:27:28,440 --> 00:27:30,590 një int, por jo një int negative. 561 00:27:30,590 --> 00:27:32,870 Pra më lejoni të shkoj përpara dhe e goditi 0. 562 00:27:32,870 --> 00:27:39,460 Dhe tani çfarë ndodh këtu kur unë të marrë poshtë për të vijë 21? 563 00:27:39,460 --> 00:27:40,890 Unë nuk e kam përsëritur edhe një herë. 564 00:27:40,890 --> 00:27:43,320 Unë nuk duket të jenë të mbërthyer në atë lak. 565 00:27:43,320 --> 00:27:45,990 Me fjalë të tjera, kjo verdhë bar nuk do të mbajë rreth, 566 00:27:45,990 --> 00:27:47,130 dhe rreth, dhe rreth. 567 00:27:47,130 --> 00:27:48,340 >> Tani, pse është kjo? 568 00:27:48,340 --> 00:27:49,920 E pra, n, çfarë n tani? 569 00:27:49,920 --> 00:27:53,280 Unë mund të shikoni në lokal Variablat në Rregullues. 570 00:27:53,280 --> 00:27:53,816 n është 0. 571 00:27:53,816 --> 00:27:55,190 Të gjithë të drejtë, çfarë ishte gjendja ime? 572 00:27:55,190 --> 00:27:58,700 >> 20-- linja 20 është, gjithashtu, 0 është më i madh se 0. 573 00:27:58,700 --> 00:27:59,500 Kjo nuk është e vërtetë. 574 00:27:59,500 --> 00:28:01,020 0 nuk është më i madh se 0. 575 00:28:01,020 --> 00:28:02,820 Dhe kështu shpërtheu këtë. 576 00:28:02,820 --> 00:28:06,370 >> Dhe kështu kjo është arsyeja pse në linjë 21, në qoftë se unë në fakt të vazhdojë, 577 00:28:06,370 --> 00:28:10,370 Unë do të kthehen 0, edhe edhe pse unë duhet të ketë refuzuar 0 578 00:28:10,370 --> 00:28:12,484 pasi në të vërtetë nuk qenë negative. 579 00:28:12,484 --> 00:28:14,650 Deri tani, unë nuk të vërtetë edhe intereson Rregullues. 580 00:28:14,650 --> 00:28:16,900 Got atë, unë nuk kam nevojë për të e di se çfarë më tepër po ndodh. 581 00:28:16,900 --> 00:28:19,233 >> Kështu që unë jam duke shkuar për të shkuar përpara dhe vetëm klikoni butonin Play, 582 00:28:19,233 --> 00:28:20,240 dhe le të këtë përfundojë deri. 583 00:28:20,240 --> 00:28:23,440 Tani, unë e kam kuptuar se my bug është me sa duket në linjë 20. 584 00:28:23,440 --> 00:28:25,160 Ky është gabimi im logjik. 585 00:28:25,160 --> 00:28:28,100 >> Dhe kështu që ajo që unë dua për të bërë për të ndryshuar këtë? 586 00:28:28,100 --> 00:28:32,500 Nëse problemi është se unë nuk jam infektues 0, kjo është vetëm një gabim logjik. 587 00:28:32,500 --> 00:28:35,910 Dhe unë mund të them, ndërsa n është më e madhe se ose e barabartë me 0, 588 00:28:35,910 --> 00:28:38,330 mbani duke bërë që përdoruesit përsëri dhe përsëri. 589 00:28:38,330 --> 00:28:41,050 >> Pra, përsëri, gabim i thjeshtë, ndoshta edhe e qartë kur më pa 590 00:28:41,050 --> 00:28:42,410 shkruar atë vetëm pak minuta më parë. 591 00:28:42,410 --> 00:28:44,570 Por takeaway këtu është se me debug 50, 592 00:28:44,570 --> 00:28:46,850 dhe me debugging software në përgjithësi, 593 00:28:46,850 --> 00:28:51,370 ju e keni këtë fuqi të re që gjendet në ecin nëpër kodin tuaj, shikojeni 594 00:28:51,370 --> 00:28:55,590 nëpërmjet këtij paneli të dorës së djathtë që variablat vlerat tuaja. 595 00:28:55,590 --> 00:28:57,700 Pra, ju nuk domosdoshmërisht duhet të përdorin diçka 596 00:28:57,700 --> 00:29:00,630 si ju eprintf për të shkruar këto vlera. 597 00:29:00,630 --> 00:29:04,430 Ju në fakt mund të shihni ato vizualisht në ekran. 598 00:29:04,430 --> 00:29:08,920 >> Tani, përtej kësaj, ia vlen të përmendet se ka një tjetër teknikë që është e 599 00:29:08,920 --> 00:29:09,890 në fakt super të përbashkët. 600 00:29:09,890 --> 00:29:13,120 Dhe ju mund të pyes veten pse kjo pak guy këtu ka qenë i ulur në skenë. 601 00:29:13,120 --> 00:29:16,490 Pra, nuk është kjo teknikë, në përgjithësi i njohur si gome duck debugging, 602 00:29:16,490 --> 00:29:18,786 e cila me të vërtetë është vetëm një testament për faktin 603 00:29:18,786 --> 00:29:20,660 që shpesh kur programuesit janë shkruar kodin, 604 00:29:20,660 --> 00:29:22,650 ata nuk janë domosdoshmërisht bashkëpunim me të tjerët, 605 00:29:22,650 --> 00:29:24,030 ose duke punuar në një mjedis të përbashkët. 606 00:29:24,030 --> 00:29:25,050 >> Ata janë lloj në shtëpi. 607 00:29:25,050 --> 00:29:25,910 Ndoshta kjo është natën vonë. 608 00:29:25,910 --> 00:29:28,190 Ata janë duke u përpjekur të kuptoj nga një bug në kodin e tyre. 609 00:29:28,190 --> 00:29:29,330 Dhe ata janë jo vetëm duke parë atë. 610 00:29:29,330 --> 00:29:30,329 >> Dhe nuk ka shokun. 611 00:29:30,329 --> 00:29:31,250 Nuk ka TF. 612 00:29:31,250 --> 00:29:32,680 Nuk ka CA rreth. 613 00:29:32,680 --> 00:29:36,440 Të gjithë ata kanë në shelfin e tyre është kjo Ducky vogël gome. 614 00:29:36,440 --> 00:29:39,030 >> Dhe kështu debugging duck gome është vetëm kjo ftesë 615 00:29:39,030 --> 00:29:42,780 të mendoj për diçka si pa kuptim pasi kjo si një krijesë e vërtetë, 616 00:29:42,780 --> 00:29:46,940 dhe në fakt ecin nëpër kodin tuaj me gojë për këtë objekt pajetë. 617 00:29:46,940 --> 00:29:49,230 Kështu, për shembull, në qoftë se ky është shembulli im here-- 618 00:29:49,230 --> 00:29:52,470 dhe kujtojmë se më herët problemi ishte kjo, 619 00:29:52,470 --> 00:29:58,140 në qoftë se unë të fshini këtë linjë të parë të kodit, dhe unë të shkojnë përpara dhe të bëjë buggy 0 përsëri, 620 00:29:58,140 --> 00:30:01,220 kujtojnë se kam pasur këto mesazhet e gabimit këtu. 621 00:30:01,220 --> 00:30:05,997 Pra, ideja këtu, qesharake edhe pse unë të ndjehen në momentin bërë këtë publikisht, 622 00:30:05,997 --> 00:30:06,580 është se gabim. 623 00:30:06,580 --> 00:30:10,910 >> OK, kështu që problemi im është se unë kam implicite deklaroi një funksion të bibliotekës. 624 00:30:10,910 --> 00:30:12,610 Dhe se funksioni i bibliotekës është printf. 625 00:30:12,610 --> 00:30:15,290 Declare-- OK, mund të deklarojë më kujton prototipa. 626 00:30:15,290 --> 00:30:18,930 >> Kjo do të thotë unë duhet të vërtetë tregoni përpiluesit më parë se çfarë 627 00:30:18,930 --> 00:30:19,980 funksioni duket si. 628 00:30:19,980 --> 00:30:20,930 Prit një minutë. 629 00:30:20,930 --> 00:30:23,580 Unë nuk kanë io.h. standarde 630 00:30:23,580 --> 00:30:24,530 Faleminderit shumë. 631 00:30:24,530 --> 00:30:27,330 >> Pra, vetëm ky proces of-- ju nuk duhet të vërtetë kanë një rosë. 632 00:30:27,330 --> 00:30:29,819 Por kjo ide e këmbë veten nëpërmjet kodit tuaj 633 00:30:29,819 --> 00:30:31,610 në mënyrë që edhe ju të dëgjoni veten, në mënyrë që ju 634 00:30:31,610 --> 00:30:35,620 realizuar lëshime në tuaj Vërejtjet, në përgjithësi është ideja. 635 00:30:35,620 --> 00:30:38,910 >> Dhe, ndoshta më logjikisht, jo aq shumë me se një, por më shumë i përfshirë 636 00:30:38,910 --> 00:30:44,220 Shembulli ne vetëm e bëri në 3.c buggy, ju mund të ecin nëpër atë veten 637 00:30:44,220 --> 00:30:45,310 si në vazhdim. 638 00:30:45,310 --> 00:30:49,190 Pra, të gjithë të drejtë, gome zogëz, DDB, nëse ju do. 639 00:30:49,190 --> 00:30:52,350 Këtu kemi në funksion tim kryesor, Unë jam duke e quajtur të int negative. 640 00:30:52,350 --> 00:30:54,660 >> Dhe unë jam duke marrë vlerën e kthimit. 641 00:30:54,660 --> 00:31:00,410 Unë jam ruajtjen atë në anën e majtë on line 8 në një variabël të quajtur i. 642 00:31:00,410 --> 00:31:02,380 OK, por të presim, si e bëri që të marrë këtë vlerë? 643 00:31:02,380 --> 00:31:04,130 Më lejoni të shikoni në funksion në linjë 12. 644 00:31:04,130 --> 00:31:05,760 >> Në linjë 12, ne kemi marrë int negative. 645 00:31:05,760 --> 00:31:08,190 A nuk merrni ndonjë inputeve, kthen një int, OK. 646 00:31:08,190 --> 00:31:10,929 Unë deklaroj on line 14 a n ndryshueshme. 647 00:31:10,929 --> 00:31:12,220 Ajo do të ruajë një numër të plotë. 648 00:31:12,220 --> 00:31:13,760 Kjo është ajo që unë dua. 649 00:31:13,760 --> 00:31:18,480 >> Pra, të bëjë të mëposhtme, ndërsa n is-- le me të ndrequr atë që fix kam bërë tashmë. 650 00:31:18,480 --> 00:31:22,710 Kështu ndërsa n eshte me e madhe se 0, të shtypura nga n është, OK. 651 00:31:22,710 --> 00:31:25,170 Dhe pastaj e quajnë të ruhet int në n. 652 00:31:25,170 --> 00:31:30,160 Dhe pastaj kontrolluar nëse n është 0, n është not-- nuk është. 653 00:31:30,160 --> 00:31:31,910 Pra, përsëri, ju nuk e bëni duhet duck aktuale. 654 00:31:31,910 --> 00:31:35,650 Por vetëm në këmbë veten me Kodi juaj si një ushtrim intelektual 655 00:31:35,650 --> 00:31:37,720 shpesh do të ju ndihmojë kuptojnë se çfarë po ndodh, 656 00:31:37,720 --> 00:31:41,170 në krahasim me vetëm duke bërë diçka si kjo, ndezur në ekran, 657 00:31:41,170 --> 00:31:43,720 dhe jo duke folur me veten ai, i cili sinqerisht nuk është 658 00:31:43,720 --> 00:31:46,270 gati si një teknikë efektive. 659 00:31:46,270 --> 00:31:48,620 Pra, nuk keni atë, një Numri i teknikave të ndryshme 660 00:31:48,620 --> 00:31:52,102 për të vërtetë debugging kodin tuaj dhe qortuar, të cilat 661 00:31:52,102 --> 00:31:54,810 duhet të jenë mjete në veglën tuaj në mënyrë që ju nuk jeni natën vonë, 662 00:31:54,810 --> 00:31:57,660 sidomos, ju jeni në ngrënie salla, ose të orarit të punës, 663 00:31:57,660 --> 00:32:00,368 banging kokën tuaj kundër mur, duke u përpjekur për të zgjidhur disa probleme. 664 00:32:00,368 --> 00:32:02,020 Të kuptojë se ka mjete software. 665 00:32:02,020 --> 00:32:03,720 Nuk janë mjete rosë gome. 666 00:32:03,720 --> 00:32:09,630 Dhe ka një staf të tërë të mbështetur në pritje të japë një dorë. 667 00:32:09,630 --> 00:32:13,120 >> Deri tani, një fjalë në problemin grupe, dhe në atë që ne jemi duke shpresuar të 668 00:32:13,120 --> 00:32:15,620 të marrë prej tyre, dhe si ne do të shkojmë në lidhje me vlerësimin. 669 00:32:15,620 --> 00:32:17,680 Per planin mësimor të kursit, grupe problematike CS50-së 670 00:32:17,680 --> 00:32:22,320 janë vlerësuar në katër akset kryesore, kështu që të speak-- qëllimin, korrektësia, dizajn, 671 00:32:22,320 --> 00:32:23,060 dhe stil. 672 00:32:23,060 --> 00:32:25,910 Dhe qëllimin vetëm i referohet sa e copë keni kafshuar off? 673 00:32:25,910 --> 00:32:28,080 Sa shumë e një problemi keni provuar? 674 00:32:28,080 --> 00:32:30,110 Çfarë niveli i përpjekjeve keni manifestuar? 675 00:32:30,110 --> 00:32:35,750 >> Korrektësia është, e bën punën e programit si është menduar për të sipas specifikimeve CS50 676 00:32:35,750 --> 00:32:38,640 kur ju ofrojnë informata të caktuara ose rezultate të caktuara të vijnë? 677 00:32:38,640 --> 00:32:41,130 Dizajni është më subjektiv i tyre. 678 00:32:41,130 --> 00:32:43,360 Dhe kjo është ajo që do të të marrë më të gjatë për të mësuar 679 00:32:43,360 --> 00:32:47,220 dhe të gjatë për të mësuar, në aq sa boils poshtë për të, 680 00:32:47,220 --> 00:32:49,530 sa mirë e shkruar është kodi juaj? 681 00:32:49,530 --> 00:32:52,920 >> Kjo është një gjë për të shkruar vetëm e saktë Rezultatet ose kthimin e vlerave të vërteta. 682 00:32:52,920 --> 00:32:55,400 Por jeni duke bërë atë si me efikasitet të jetë e mundur? 683 00:32:55,400 --> 00:32:58,210 A jeni duke bërë atë ndarje dhe të pushtuar, ose binary 684 00:32:58,210 --> 00:33:01,500 kërkim si ne së shpejti do të shihni se ne e bëmë dy javë më parë me librin e telefonit? 685 00:33:01,500 --> 00:33:04,670 A ka mënyra më të mira për të zgjidhur Problemi se ju tashmë keni këtu? 686 00:33:04,670 --> 00:33:06,380 Kjo është një mundësi për dizajnin më të mirë. 687 00:33:06,380 --> 00:33:08,530 >> Dhe pastaj style-- si mjaft është kodi juaj? 688 00:33:08,530 --> 00:33:12,370 Ju do të vëreni se unë jam goxha të veçantë në lidhje indenting kodin tim, 689 00:33:12,370 --> 00:33:15,300 dhe duke u siguruar variablave mia janë quajtur të arsyeshme. n, 690 00:33:15,300 --> 00:33:19,660 ndërkohë të shkurtër, është një emër i mirë për një numrin, i për një numër të plotë të numërimit, 691 00:33:19,660 --> 00:33:20,727 s për një varg. 692 00:33:20,727 --> 00:33:22,560 Dhe ne mund të kemi më emrat e ndryshueshme style. 693 00:33:22,560 --> 00:33:25,500 Style është vetëm si e mirë duket kodin tuaj? 694 00:33:25,500 --> 00:33:26,600 Dhe si i lexueshëm është ajo? 695 00:33:26,600 --> 00:33:29,650 >> Dhe me kalimin e kohës, çfarë tas tuaj dhe NGP do të bëjë gjatë 696 00:33:29,650 --> 00:33:31,870 është t'ju ofrojë me atë lloj feedback cilësor 697 00:33:31,870 --> 00:33:34,330 në mënyrë që ju të merrni më të mirë në ato aspekte të ndryshme. 698 00:33:34,330 --> 00:33:37,510 Dhe për sa i përket se si ne vlerësojë secili prej këtyre akseve, 699 00:33:37,510 --> 00:33:40,080 kjo është në mënyrë tipike me shumë pak kova në mënyrë që ju, në përgjithësi, 700 00:33:40,080 --> 00:33:41,680 marrë një kuptim të se sa mirë jeni duke bërë. 701 00:33:41,680 --> 00:33:45,680 Dhe, me të vërtetë, në qoftë se ju merrni një rezultat për ndonjë nga ato saktësinë axes--, dizajn 702 00:33:45,680 --> 00:33:49,659 dhe stil especially-- se numri i në përgjithësi do të jetë midis 1 dhe 5. 703 00:33:49,659 --> 00:33:52,450 Dhe, fjalë për fjalë, në qoftë se ju jeni duke marrë 3-së në fillim të semestrit, 704 00:33:52,450 --> 00:33:53,977 kjo është një gjë shumë e mirë. 705 00:33:53,977 --> 00:33:55,810 Kjo do të thotë se ka ende vend për përmirësim, 706 00:33:55,810 --> 00:33:58,490 të cilat ju do të shpresojnë në duke marrë një klasë për herë të parë. 707 00:33:58,490 --> 00:34:01,820 Ka shpresë disa pak e tavanit për të cilën ju jeni që aspirojnë për të arritur. 708 00:34:01,820 --> 00:34:03,970 Dhe kështu që duke marrë në 3-së copat më të hershme, 709 00:34:03,970 --> 00:34:06,550 nëse jo disa 2-të dhe 4-së, është me të vërtetë një gjë e mirë. 710 00:34:06,550 --> 00:34:08,880 Është mirë brenda rrezes, edhe brenda pritshmërive. 711 00:34:08,880 --> 00:34:11,421 >> Dhe në qoftë se mendjen tuaj është gara, prisni një minutë, tre nga pesë. 712 00:34:11,421 --> 00:34:12,620 Kjo është me të vërtetë një nga 6 10. 713 00:34:12,620 --> 00:34:13,560 Kjo është 60%. 714 00:34:13,560 --> 00:34:14,830 Perëndia im, kjo është një F. 715 00:34:14,830 --> 00:34:15,870 >> Nuk eshte. 716 00:34:15,870 --> 00:34:17,600 Kjo nuk është, në fakt, se. 717 00:34:17,600 --> 00:34:22,710 Përkundrazi, kjo është një mundësi për të përmirësuar gjatë semestrit. 718 00:34:22,710 --> 00:34:25,580 Dhe në qoftë se ju jeni duke marrë disa Poors, këto janë një mundësi 719 00:34:25,580 --> 00:34:29,199 për të përfituar nga orarit të punës, sigurisht seksionet dhe burime të tjera. 720 00:34:29,199 --> 00:34:32,840 >> Më e mirë është një mundësi, me të vërtetë, të jetë krenar se sa larg ju keni 721 00:34:32,840 --> 00:34:34,520 vijnë gjatë semestrit. 722 00:34:34,520 --> 00:34:38,199 Pra e kuptojnë, nëse asgjë tjetër, tre është e mirë. 723 00:34:38,199 --> 00:34:40,179 Dhe kjo i lejon vend për rritje me kalimin e kohës. 724 00:34:40,179 --> 00:34:43,090 >> Se si ato janë akset ponderuar, realisht je 725 00:34:43,090 --> 00:34:46,745 do të kalojnë shumicën e kohës tuaj duke gjëra në punë, e lëre më të saktë. 726 00:34:46,745 --> 00:34:49,120 Dhe kështu korrektësinë tenton të të ponderuar më, si me 727 00:34:49,120 --> 00:34:51,360 ky faktor multiplicative e tre. 728 00:34:51,360 --> 00:34:54,659 Dizajni është gjithashtu e rëndësishme, por diçka që ju nuk domosdoshmërisht 729 00:34:54,659 --> 00:34:58,220 shpenzojnë të gjitha ato orë në duke u përpjekur për të marrë gjërat e vetëm për të punuar. 730 00:34:58,220 --> 00:35:00,019 >> Dhe kështu që është e ponderuar pak më lehtë. 731 00:35:00,019 --> 00:35:01,560 Dhe pastaj style është peshuar më pak. 732 00:35:01,560 --> 00:35:03,710 Edhe pse kjo nuk është më pak e rëndësishme në thelb, 733 00:35:03,710 --> 00:35:05,990 kjo është vetëm, ndoshta, gjë e lehtë për të bërë të drejtë, 734 00:35:05,990 --> 00:35:08,440 imituar shembujt që bëni në leksion dhe seksion, 735 00:35:08,440 --> 00:35:11,080 me gjëra të bukur prerë, dhe komentoi, 736 00:35:11,080 --> 00:35:14,320 dhe kështu me radhë është ndër më të lehtë gjëra për të bërë dhe për të marrë të drejtë. 737 00:35:14,320 --> 00:35:16,960 Pra, si e tillë, e kupton se ata janë pika 738 00:35:16,960 --> 00:35:19,000 që janë relativisht të lehtë për t'u kuptuar. 739 00:35:19,000 --> 00:35:22,360 >> Dhe tani një fjalë të this-- ndershmërinë akademike. 740 00:35:22,360 --> 00:35:25,150 Pra, per kursin e plani mësimor, ju do të shihni 741 00:35:25,150 --> 00:35:27,630 se kursi ka mjaft bit të gjuhës rreth kësaj. 742 00:35:27,630 --> 00:35:31,380 Dhe sigurisht e merr çështjen e Ndershmëria akademike mjaft seriozisht. 743 00:35:31,380 --> 00:35:33,450 >> Ne kemi dallimin, për mirë apo për keq, 744 00:35:33,450 --> 00:35:36,570 i ka dërguar çdo vit më shumë studentët për masa disiplinore 745 00:35:36,570 --> 00:35:39,670 se më çdo tjetër Natyrisht, se unë jam i vetëdijshëm. 746 00:35:39,670 --> 00:35:42,580 Kjo nuk është domosdoshmërisht tregues i faktit 747 00:35:42,580 --> 00:35:46,340 që nxënësit CS, ose studentë CS50, janë më pak i ndershëm se shokët e klasës tuaj. 748 00:35:46,340 --> 00:35:49,090 Por realiteti se në këtë Bota, në mënyrë elektronike, ne vetëm 749 00:35:49,090 --> 00:35:50,990 kanë teknologjike do të thotë për zbulimin e kësaj. 750 00:35:50,990 --> 00:35:53,360 >> Është e rëndësishme për ne për drejtësi në të gjithë klasën 751 00:35:53,360 --> 00:35:58,550 që ne bëjmë zbuluar këtë, dhe për të rritur çështja kur shohim gjërat. 752 00:35:58,550 --> 00:36:01,980 Dhe vetëm për të pikturuar një foto, dhe me të vërtetë për të ndihmuar në diçka si kjo lavaman në, 753 00:36:01,980 --> 00:36:04,600 Ky është numri i Studentët gjatë 10 viteve të fundit 754 00:36:04,600 --> 00:36:07,610 që kanë qenë të përfshirë në disa çështje të tilla të ndershmërisë akademike, 755 00:36:07,610 --> 00:36:10,990 me disa 32 studentë nga rënia 2015, e cila 756 00:36:10,990 --> 00:36:13,760 do të thotë se ne do të marrë çështje shumë seriozisht. 757 00:36:13,760 --> 00:36:18,380 Dhe, në fund të fundit, këto shifra shkruaj, më të fundit, rreth 3%, 4% apo më shumë 758 00:36:18,380 --> 00:36:19,120 të klasës. 759 00:36:19,120 --> 00:36:25,220 >> Kështu që për shumicën super e studentëve duket se linjat janë të qarta. 760 00:36:25,220 --> 00:36:27,940 Por mbani këtë në mendje, sidomos në fund 761 00:36:27,940 --> 00:36:32,080 në natën kur duke luftuar me disa zgjidhje për një problem grup, 762 00:36:32,080 --> 00:36:34,830 se ka mekanizma për të marrë veten më mirë 763 00:36:34,830 --> 00:36:37,870 Mbështetja se ju mund të mendojnë, madje edhe në atë orë. 764 00:36:37,870 --> 00:36:40,514 Kuptojnë se kur marrim aplikimet e studentëve, kalojmë 765 00:36:40,514 --> 00:36:43,430 krahasoni çdo nënshtrim këtë vit kundër çdo dorëzimit të vitit të kaluar, 766 00:36:43,430 --> 00:36:47,590 kundër çdo dorëzimit nga viti 2007, dhe që, duke kërkuar në, si dhe, 767 00:36:47,590 --> 00:36:49,931 Kodi depove online, forume diskutimi, vende pune. 768 00:36:49,931 --> 00:36:51,806 Dhe e kemi përmendur këtë, me të vërtetë, të gjitha për hir 769 00:36:51,806 --> 00:36:56,040 e zbulimin e plotë, se në qoftë se dikush tjetër mund ta gjeni online, 770 00:36:56,040 --> 00:36:57,880 me siguri, kështu që mund të kemi kurs. 771 00:36:57,880 --> 00:37:00,100 Por, me të vërtetë, fryma e natyrisht boils poshtë 772 00:37:00,100 --> 00:37:01,650 të kësaj pike në planin mësimor. 773 00:37:01,650 --> 00:37:03,670 Me të vërtetë është vetëm, të jenë të arsyeshme. 774 00:37:03,670 --> 00:37:06,680 >> Dhe në qoftë se ne kishim për të përpunuar në të cilat me vetëm një gjuhë pak më shumë, 775 00:37:06,680 --> 00:37:09,770 kuptojnë se thelbi i të gjithë Puna që ju të paraqesë në këtë kurs 776 00:37:09,770 --> 00:37:10,954 duhet të jenë tuajat. 777 00:37:10,954 --> 00:37:13,870 Por brenda kësaj, sigurisht që ka mundësitë dhe inkurajim, 778 00:37:13,870 --> 00:37:17,300 dhe vlera pedagogjike, duke iu drejtuar others-- veten time, nga NGP, CAS, 779 00:37:17,300 --> 00:37:20,760 e Tas, dhe të tjerët në klasë, për mbështetje, le të vetëm miq 780 00:37:20,760 --> 00:37:23,547 dhe roommates të cilët kanë studiuar CS dhe programimi para. 781 00:37:23,547 --> 00:37:25,130 Dhe kështu që nuk është një kompensim për këtë. 782 00:37:25,130 --> 00:37:28,180 Dhe rregulli i përgjithshëm i gishtit është this-- kur kërkojnë ndihmë, 783 00:37:28,180 --> 00:37:31,470 ju mund të tregojnë kodin tuaj për të tjerët, por ju nuk mund të shihni të tyret. 784 00:37:31,470 --> 00:37:34,880 Pra, edhe në qoftë se ju jeni në të orarit të punës, ose në sallën D, apo diku tjetër 785 00:37:34,880 --> 00:37:37,450 duke punuar në një copë grup, punuar së bashku me një mik, i cili 786 00:37:37,450 --> 00:37:40,160 është krejtësisht në rregull, më së fund të ditës së punës tuaj 787 00:37:40,160 --> 00:37:43,034 duhet në fund të fundit i përkasin njëri- ju respektivisht, dhe jo 788 00:37:43,034 --> 00:37:45,700 të jetë një përpjekje e përbashkët, me përjashtim të projektit final ku 789 00:37:45,700 --> 00:37:47,410 është e lejuar dhe inkurajuar. 790 00:37:47,410 --> 00:37:49,830 >> Të kuptojë se në qoftë se jeni duke luftuar me diçka 791 00:37:49,830 --> 00:37:52,520 dhe shoku juaj vetëm ndodh të jetë më mirë në këtë atëherë ju, 792 00:37:52,520 --> 00:37:55,130 ose më mirë në atë problem se ju, ose pak më përpara se ju, 793 00:37:55,130 --> 00:37:57,330 kjo është krejtësisht e arsyeshme të kthehet një shoku dhe të thonë, hej, 794 00:37:57,330 --> 00:38:00,480 A keni parasysh duke kërkuar në kodin tim këtu, duke ndihmuar me vend që çështja ime? 795 00:38:00,480 --> 00:38:03,760 Dhe, me shpresë, në Interesi i vlerës pedagogjike 796 00:38:03,760 --> 00:38:07,040 se shoku nuk ka vetëm thonë, oh, e bëjnë këtë, por më tepër, 797 00:38:07,040 --> 00:38:09,917 çfarë jeni duke humbur në linjë 6, ose diçka të tillë? 798 00:38:09,917 --> 00:38:12,000 Por zgjidhja nuk është për mik të ardhshëm për ju 799 00:38:12,000 --> 00:38:15,617 për të thënë, oh, edhe, këtu, më lejoni të tërheq këtë ide, dhe të tregojnë zgjidhje time për ju. 800 00:38:15,617 --> 00:38:16,450 Pra, kjo është linja. 801 00:38:16,450 --> 00:38:18,670 Ju shfaqur kodin tuaj për të tjerë, por ju nuk mund të 802 00:38:18,670 --> 00:38:22,350 të parë të tyret, subjekt tjetër kufizimet në planin mësimor të kursit. 803 00:38:22,350 --> 00:38:24,760 >> Kështu që mbani në mend këtë ashtuquajtura klauzolë keqardhje 804 00:38:24,760 --> 00:38:27,560 në planin mësimor të kursit, si dhe, se në qoftë se keni kryer një akt që 805 00:38:27,560 --> 00:38:30,476 Nuk është e arsyeshme, por ta sjellë atë në vëmendja e krerëve kursit të 806 00:38:30,476 --> 00:38:34,240 brenda 72 orëve, sigurisht mund të vendosë sanksione lokale që 807 00:38:34,240 --> 00:38:37,380 mund të përfshijnë një pakënaqshëm ose dështuar klasën për punën e paraqitur. 808 00:38:37,380 --> 00:38:41,410 Por sigurisht nuk do t'ia referojë rëndësi për veprime të mëtejshme disiplinore, 809 00:38:41,410 --> 00:38:43,010 përveç në rastet e veprimeve të përsëritura. 810 00:38:43,010 --> 00:38:46,632 Me fjalë të tjera, nëse ju bëni disa stupid, natën sidomos në fund, vendimi 811 00:38:46,632 --> 00:38:49,340 që të nesërmen në mëngjes ose dy ditë më vonë, ju zgjoheni dhe të kuptojë, 812 00:38:49,340 --> 00:38:50,870 çfarë kam menduar? 813 00:38:50,870 --> 00:38:53,890 Ju bëni në CS50 kanë një prizë për fiksimin e atë problem 814 00:38:53,890 --> 00:38:57,170 dhe mbajnë deri në atë, në mënyrë që të do të takohen në gjysmë të rrugës dhe të merren 815 00:38:57,170 --> 00:39:01,500 me atë në një çështje që është edhe arsimore dhe të vlefshme për ju, 816 00:39:01,500 --> 00:39:04,200 por ende ndëshkuese në një farë mënyre. 817 00:39:04,200 --> 00:39:08,590 Dhe tani, për të marrë buzë off, kjo. 818 00:39:08,590 --> 00:39:10,570 >> [VIDEO rishikim] 819 00:39:10,570 --> 00:39:13,540 >> [MUSIC Duke luajtur] 820 00:39:13,540 --> 00:39:58,090 821 00:39:58,090 --> 00:39:58,866 >> [END rishikim] 822 00:39:58,866 --> 00:40:00,490 DAVID J. Malan: Mirë, ne jemi të kthyer. 823 00:40:00,490 --> 00:40:03,680 Dhe tani ne shikojmë në një nga e parë e fushave botën tonë reale 824 00:40:03,680 --> 00:40:08,720 në CS50, arti i kriptografisë, arti i dërgimit dhe pranimit 825 00:40:08,720 --> 00:40:11,840 Mesazhet sekrete, Encrypted Mesazhet nëse do, 826 00:40:11,840 --> 00:40:17,060 që mund të deshifruar vetëm nëse ju keni disa përbërës kyç që dërguesi ka 827 00:40:17,060 --> 00:40:18,030 gjithashtu. 828 00:40:18,030 --> 00:40:22,120 Pra, për të motivuar këtë ne do të marrin një vështrim në këtë gjë këtu, 829 00:40:22,120 --> 00:40:26,750 e cila është një shembull i një unaza sekret decoder që 830 00:40:26,750 --> 00:40:34,042 mund të përdoret në mënyrë që të kuptoj atë që një mesazh të fshehtë të vërtetë është. 831 00:40:34,042 --> 00:40:35,750 Në fakt, përsëri në ditë në klasën e shkollës, 832 00:40:35,750 --> 00:40:38,787 në qoftë se ju ka dërguar ndonjëherë mesazhe sekrete të disa mik apo ndonjë shtypur në klasë, 833 00:40:38,787 --> 00:40:40,620 ju mund të keni menduar ju jeni duke u zgjuar 834 00:40:40,620 --> 00:40:46,530 nga në copë tuaj të ndryshimit letër, si, A tek B, dhe B te C, dhe C tek D, 835 00:40:46,530 --> 00:40:47,590 dhe kështu me radhë. 836 00:40:47,590 --> 00:40:50,300 Por ishin në fakt encrypting Informacioni juaj: 837 00:40:50,300 --> 00:40:53,300 në qoftë se ajo ishte e vogël pak, nuk ishte e vështirë për mësuesi për të realizuar, 838 00:40:53,300 --> 00:40:55,675 mirë, në qoftë se ju vetëm të ndryshojë B në A dhe C në B, 839 00:40:55,675 --> 00:40:57,550 në të vërtetë ju kuptoj çfarë mesazhi ishte, 840 00:40:57,550 --> 00:40:59,700 por ju keni qenë në ciphering informacion. 841 00:40:59,700 --> 00:41:03,420 >> Ju keni qenë vetëm duke bërë atë thjesht, ashtu si Ralphie këtu 842 00:41:03,420 --> 00:41:07,934 në një film të famshëm që luan pretty much ad nauseum çdo dimër. 843 00:41:07,934 --> 00:41:08,600 [VIDEO rishikim] 844 00:41:08,600 --> 00:41:11,180 -Të Jetë të njohur për të gjithë se Ralph Parker me anë të kësaj 845 00:41:11,180 --> 00:41:14,070 emëruar anëtarin e vogël Orphan Annie Secret Circle 846 00:41:14,070 --> 00:41:17,700 dhe ka të drejtë të të gjitha nderimet dhe përfitime ndodhin me to. 847 00:41:17,700 --> 00:41:24,340 >> -Signed, Little Orphan Annie, kundër-firmosur Pierre Andre, në bojë. 848 00:41:24,340 --> 00:41:27,160 Nderon dhe përfitimet, tashmë në moshën nëntë vjeçare. 849 00:41:27,160 --> 00:41:30,490 850 00:41:30,490 --> 00:41:31,825 >> [Bërtasin] 851 00:41:31,825 --> 00:41:33,750 852 00:41:33,750 --> 00:41:34,250 -Eja. 853 00:41:34,250 --> 00:41:35,210 Le të merrni më me të. 854 00:41:35,210 --> 00:41:39,530 Unë nuk kam nevojë të gjitha që jazz për kontrabandistët dhe piratët. 855 00:41:39,530 --> 00:41:41,660 >> natë -Listen nesër për aventurë përmbyllës 856 00:41:41,660 --> 00:41:43,880 i anijes pirate zi. 857 00:41:43,880 --> 00:41:46,650 Tani, është koha për të Mesazhi sekret Annie 858 00:41:46,650 --> 00:41:49,840 për ju anëtarë të rrethit Sekret. 859 00:41:49,840 --> 00:41:53,570 Mos harroni, fëmijët, vetëm anëtarët i Sekret Rrethi Annie 860 00:41:53,570 --> 00:41:56,140 mund të deshifroj mesazhin e fshehtë Annie. 861 00:41:56,140 --> 00:42:00,340 >> Mbani mend, Annie është në varësi të ju. 862 00:42:00,340 --> 00:42:02,880 Set këmbët tuaja në B2. 863 00:42:02,880 --> 00:42:05,230 Këtu është mesazhi. 864 00:42:05,230 --> 00:42:06,090 12, 11-- 865 00:42:06,090 --> 00:42:10,250 >> -Unë Jam në, mbledhjen time të parë të fshehtë. 866 00:42:10,250 --> 00:42:13,890 >> -14, 11, 18, 16. 867 00:42:13,890 --> 00:42:15,780 >> -Pierre Ishte sonte madhe zë. 868 00:42:15,780 --> 00:42:19,000 Unë mund të them që sonte Mesazhi ishte me të vërtetë e rëndësishme. 869 00:42:19,000 --> 00:42:22,694 >> -3, 25, kjo është një mesazh nga Annie vetë. 870 00:42:22,694 --> 00:42:23,860 Mbani mend, mos i thoni askujt. 871 00:42:23,860 --> 00:42:28,760 872 00:42:28,760 --> 00:42:32,930 >> -90 Sekonda më vonë, unë jam në vetmi dhomë në shtëpi, ku një djalë i nëntë 873 00:42:32,930 --> 00:42:37,040 mund të ulen në jetën private dhe deshifroj. 874 00:42:37,040 --> 00:42:39,730 Ah, B! 875 00:42:39,730 --> 00:42:42,360 Unë shkova në tjetër, E. 876 00:42:42,360 --> 00:42:44,520 >> Fjala e parë është jetë. 877 00:42:44,520 --> 00:42:49,032 S, ajo po vinte lehtë tani, U, 25-- 878 00:42:49,032 --> 00:42:51,733 >> Oh, eja, Ralphie, unë duhet të shkoj! 879 00:42:51,733 --> 00:42:53,688 >> -I'll Të jetë e drejtë poshtë, Ma! 880 00:42:53,688 --> 00:42:54,188 Gee kampion! 881 00:42:54,188 --> 00:42:58,116 882 00:42:58,116 --> 00:43:04,060 >> -T, O, të jetë i sigurt to-- jetë i sigurt për çfarë? 883 00:43:04,060 --> 00:43:05,970 Cili ishte pak Orphan Annie duke u përpjekur për të thënë? 884 00:43:05,970 --> 00:43:07,264 Të jetë i sigurt për çfarë? 885 00:43:07,264 --> 00:43:09,634 >> -Ralphie, Andy ka marrë për shkoni, do ju lutem të dalë? 886 00:43:09,634 --> 00:43:10,480 >> drejtë -Të gjitha, Ma! 887 00:43:10,480 --> 00:43:12,880 Unë do të jetë jashtë të drejtë! 888 00:43:12,880 --> 00:43:14,550 >> -I Është duke iu afruar tani. 889 00:43:14,550 --> 00:43:16,620 Tensioni ishte e tmerrshme. 890 00:43:16,620 --> 00:43:17,720 Çfarë ishte ajo? 891 00:43:17,720 --> 00:43:20,170 Fati i planetit mund të ul receptorin e telefonit në bilancin. 892 00:43:20,170 --> 00:43:20,670 >> -Ralphie! 893 00:43:20,670 --> 00:43:23,170 Gotta Andy shkojnë! 894 00:43:23,170 --> 00:43:26,890 >> -I'll Të jetë e drejtë jashtë, për të qarë me zë të lartë! 895 00:43:26,890 --> 00:43:32,680 >> -Almost Atje, gishtat e mi fluturoi, mendjen time ishte një kurth çeliku, çdo pore vibrated. 896 00:43:32,680 --> 00:43:37,198 Ajo ishte pothuajse e qartë, po, po, po. 897 00:43:37,198 --> 00:43:43,091 >> -Të Jetë i sigurt për të pirë Ovaltine tuaj. 898 00:43:43,091 --> 00:43:43,590 Ovaltine? 899 00:43:43,590 --> 00:43:48,160 900 00:43:48,160 --> 00:43:49,430 A komerciale pavlerë? 901 00:43:49,430 --> 00:43:53,046 902 00:43:53,046 --> 00:43:54,227 Bir i një kurvë. 903 00:43:54,227 --> 00:43:54,810 [END rishikim] 904 00:43:54,810 --> 00:43:57,390 DAVID J. Malan: OK, kështu kjo ishte një mënyrë shumë e gjatë 905 00:43:57,390 --> 00:44:00,660 e futjes kriptografi, dhe gjithashtu Ovaltine. 906 00:44:00,660 --> 00:44:04,470 Në fakt, nga kjo referohem vjetër këtu, pse është Ovaltine aq i mirë? 907 00:44:04,470 --> 00:44:09,470 Është nxjerrja e përqendruar e pjekur malt elb, qumësht të pastër e lopës butë-së, 908 00:44:09,470 --> 00:44:14,360 dhe posaçërisht të përgatitur kakao, së bashku me phosphatides natyrore dhe vitamina. 909 00:44:14,360 --> 00:44:18,240 Ajo është e fortifikuar më tej me vitamina shtesë B dhe D, yum. 910 00:44:18,240 --> 00:44:21,600 Dhe ju prapë mund të merrni atë, me sa duket, në Amazon, siç bëmë këtu. 911 00:44:21,600 --> 00:44:24,810 >> Por motivimi këtu ishte për futur kriptografi, në mënyrë të veçantë 912 00:44:24,810 --> 00:44:28,340 një lloj i cryptography njohur si kriptografisë sekrete kyçe. 913 00:44:28,340 --> 00:44:34,284 Dhe si emri sugjeron, të gjithë sigurinë e një sistemi të fshehtë kyç kripto, 914 00:44:34,284 --> 00:44:36,200 në qoftë se ju do të, një metodologji për vetëm përpiqen 915 00:44:36,200 --> 00:44:40,960 informacioni mes dy njerëzve, është se vetëm dërguesi dhe vetëm marrësi 916 00:44:40,960 --> 00:44:46,980 e di një key-- sekret në disa vlera, disa fraza sekrete, disa numër të fshehtë, që 917 00:44:46,980 --> 00:44:50,660 lejon ata të dy Encrypt dhe decrypt informacion. 918 00:44:50,660 --> 00:44:53,470 Dhe cryptography, me të vërtetë, është vetëm kjo që nga java 0. 919 00:44:53,470 --> 00:44:56,715 >> Është një problem ku ka inputeve, si mesazh aktuale në anglisht 920 00:44:56,715 --> 00:44:59,340 apo çfarëdo gjuhë që ju dëshironi të dërgoni dikujt në klasë, 921 00:44:59,340 --> 00:45:00,580 ose në të gjithë internetit. 922 00:45:00,580 --> 00:45:03,840 Ka disa dalje, e cila do të jetë mesazhin fërguara që ju 923 00:45:03,840 --> 00:45:05,250 dëshironi marrësit për të marrë. 924 00:45:05,250 --> 00:45:07,405 Dhe edhe në qoftë se dikush në e mesme e merr atë shumë, 925 00:45:07,405 --> 00:45:09,780 ju nuk doni ata që të domosdoshmërisht të jetë në gjendje për të decrypt atë, 926 00:45:09,780 --> 00:45:12,840 sepse brenda kësaj kutia e zezë, ose algorithm, 927 00:45:12,840 --> 00:45:17,650 është një mekanizëm, disa hap pas hapi udhëzime, për të marrë këtë të dhëna 928 00:45:17,650 --> 00:45:20,710 dhe konvertimin e saj në të prodhimit, në shpresë mënyrë të sigurt. 929 00:45:20,710 --> 00:45:23,640 >> Dhe, në fakt, ka disa Fjalori në këtë botë si më poshtë. 930 00:45:23,640 --> 00:45:26,100 Tekst i thjeshtë është fjala një shkencëtar kompjuteri do 931 00:45:26,100 --> 00:45:28,449 përdorin për të përshkruar të dhëna Mesazhi, si anglisht 932 00:45:28,449 --> 00:45:31,240 ose çfarëdo gjuhe ju në të vërtetë dëshironi të dërgoni në një tjetër njeri. 933 00:45:31,240 --> 00:45:35,450 Dhe pastaj ciphertext është përleshje me enciphered ose koduar, 934 00:45:35,450 --> 00:45:36,520 version saj. 935 00:45:36,520 --> 00:45:38,750 >> Por ka një përbërës të tjera këtu. 936 00:45:38,750 --> 00:45:43,200 Ka një input të tjera të sekret cryptography kryesore. 937 00:45:43,200 --> 00:45:45,200 Dhe kjo është çelësi në vetvete, e cila është, në përgjithësi, 938 00:45:45,200 --> 00:45:48,930 si ne do të shohim, një numër, ose letër ose fjalë, çdo gjë 939 00:45:48,930 --> 00:45:51,980 algoritmi ajo është në fakt pret. 940 00:45:51,980 --> 00:45:53,870 >> Dhe si mund të decrypt informacion? 941 00:45:53,870 --> 00:45:55,110 Si mund të deshifruar atë? 942 00:45:55,110 --> 00:45:57,950 E pra, ju vetëm kundërt rezultatet dhe inputet. 943 00:45:57,950 --> 00:46:00,900 >> Me fjalë të tjera, sapo dikush merr mesazhin tuaj Encrypted, 944 00:46:00,900 --> 00:46:03,740 ai ose ajo thjesht ka të dini se njëjtin kyç. 945 00:46:03,740 --> 00:46:05,700 Ata kanë marrë koduar. 946 00:46:05,700 --> 00:46:09,530 Dhe me mbylljen ato dy inputet në sistemin kripto, 947 00:46:09,530 --> 00:46:14,260 algoritmi, kjo kuti e zezë, nga duhet të vijë plaintext origjinale. 948 00:46:14,260 --> 00:46:17,830 Dhe kështu që është niveli shumë i lartë pamje e asaj që është në fakt cryptography 949 00:46:17,830 --> 00:46:18,590 mbi të gjitha. 950 00:46:18,590 --> 00:46:20,030 >> Pra, le të marrë atje. 951 00:46:20,030 --> 00:46:22,700 Le të shohim tani nën individualitet e diçka 952 00:46:22,700 --> 00:46:26,000 ne kemi qenë duke marrë për të dhënë për javën e kaluar, dhe për këtë sesion 953 00:46:26,000 --> 00:46:27,629 here-- string. 954 00:46:27,629 --> 00:46:30,295 Nje varg në fund të ditës është vetëm një sekuencë e karaktereve. 955 00:46:30,295 --> 00:46:33,610 >> Ajo mund të jetë Hello World, ose përshëndetje Zamyla, ose çfarëdo. 956 00:46:33,610 --> 00:46:37,050 Por çfarë do të thotë të jetë një rend të karaktereve? 957 00:46:37,050 --> 00:46:41,520 Në fakt, biblioteka CS50 jep ne një lloj i të dhënave të quajtur string. 958 00:46:41,520 --> 00:46:45,140 >> Por nuk ka të vërtetë nuk ka gjë të tillë si një varg në C. 959 00:46:45,140 --> 00:46:49,450 Me të vërtetë është vetëm një sekuencë e Karakteri, karakteri, karakterin, 960 00:46:49,450 --> 00:46:52,180 Karakteri, përsëri, për të mbështetur, për të përsëri, për të mbështetur, për të mbështetur brenda 961 00:46:52,180 --> 00:46:54,650 e kujtesës e kompjuterit tuaj, ose RAM. 962 00:46:54,650 --> 00:46:58,940 Dhe ne do të shikojmë më thellë në se në ardhmja, kur ne shikojmë në kujtesën e vet, 963 00:46:58,940 --> 00:47:02,030 dhe shfrytëzimin, dhe Kërcënimet që janë të përfshirë. 964 00:47:02,030 --> 00:47:04,100 >> Por le të konsiderojmë string Zamyla. 965 00:47:04,100 --> 00:47:07,480 Pra, vetëm emri i njerëzore këtu, Zamyla, 966 00:47:07,480 --> 00:47:12,030 që është një sekuencë e karaktere, Z-A-M-Y-L-A. 967 00:47:12,030 --> 00:47:16,020 Dhe tani le të supozojmë se emri Zamyla-së është duke u ruajtur në brendësi të një kompjuter 968 00:47:16,020 --> 00:47:16,880 program. 969 00:47:16,880 --> 00:47:20,830 >> E pra, ajo qëndron për arsye se ne duhet të jetë në gjendje për të parë në këto karaktere 970 00:47:20,830 --> 00:47:21,590 individualisht. 971 00:47:21,590 --> 00:47:24,710 Kështu që unë jam vetëm duke shkuar për të nxjerrë pak kuti rreth emrit Zamyla këtu. 972 00:47:24,710 --> 00:47:31,580 Dhe kjo është rasti në C se kur ju të ketë një varg, si Zamyla-- dhe ndoshta 973 00:47:31,580 --> 00:47:34,940 që string është kthyer nga një funksion si get varg, 974 00:47:34,940 --> 00:47:38,540 në të vërtetë ju mund të manipulojnë ajo karakter nga karakteri. 975 00:47:38,540 --> 00:47:42,070 >> Tani, kjo është i lidhur ngushtë për Biseda në dorë, sepse 976 00:47:42,070 --> 00:47:46,420 në cryptography në qoftë se ju doni të ndryshojë A në B dhe B te C, dhe C tek D, 977 00:47:46,420 --> 00:47:49,650 e kështu me radhë, duhet të jenë në gjendje të shikojmë në karaktere të veçanta 978 00:47:49,650 --> 00:47:50,190 në një varg. 979 00:47:50,190 --> 00:47:52,695 Ju duhet të jetë në gjendje të ndryshojë Z për diçka tjetër, një 980 00:47:52,695 --> 00:47:55,280 për diçka tjetër, për të m diçka tjetër, dhe kështu me radhë. 981 00:47:55,280 --> 00:47:58,000 Dhe kështu që ne kemi nevojë për një mënyrë, programuar, kështu 982 00:47:58,000 --> 00:48:03,020 për të folur, në C të jetë në gjendje për të ndryshuar dhe të kërkoni në letra individuale. 983 00:48:03,020 --> 00:48:05,690 Dhe ne mund të bëjmë këtë si më poshtë. 984 00:48:05,690 --> 00:48:08,340 >> Më lejoni të shkojnë kokë mbrapa në CS50 IDE. 985 00:48:08,340 --> 00:48:11,130 Dhe më lejoni të shkoj përpara dhe për të krijuar një skedë të re 986 00:48:11,130 --> 00:48:16,134 se unë do të thërrasë këtë kohë string0, si shembull tonë të parë të tillë, dot c. 987 00:48:16,134 --> 00:48:18,300 Dhe unë jam duke shkuar për të shkuar përpara dhe nxit atë si më poshtë. 988 00:48:18,300 --> 00:48:22,870 >> Pra përfshijnë CS50.h, dhe pastaj përfshijnë io.h standarde, 989 00:48:22,870 --> 00:48:25,990 të cilën unë jam pothuajse gjithmonë do të të jetë përdorur në programet e mia, të paktën 990 00:48:25,990 --> 00:48:26,780 fillimisht. 991 00:48:26,780 --> 00:48:32,180 int pavlefshëm kryesore, dhe pastaj në këtu unë jam i do të bëjë vargjet merr marrë string. 992 00:48:32,180 --> 00:48:35,260 Dhe atëherë unë jam duke shkuar për të shkojnë përpara dhe të bëjë këtë. 993 00:48:35,260 --> 00:48:37,460 Unë dua të shkoj përpara dhe, si një kontroll mendje e shëndoshë, 994 00:48:37,460 --> 00:48:43,607 vetëm thonë, hello, për qind s, gjysmë-zorrës së trashë, e bën vargun 0. 995 00:48:43,607 --> 00:48:44,690 Uh oh, çfarë bëj unë këtu? 996 00:48:44,690 --> 00:48:45,930 Oh, unë nuk e atë në prizë. 997 00:48:45,930 --> 00:48:48,120 Pra mësim mësuar, që nuk ishte i qëllimshëm. 998 00:48:48,120 --> 00:48:52,480 >> Pra gabimi, më shumë për qind conversions se argumentet e të dhënave. 999 00:48:52,480 --> 00:48:54,940 Dhe ky është vendi ku, në Linja 7-- OK, kështu që unë kam, 1000 00:48:54,940 --> 00:48:56,690 quote mbyll thonjëzat, kjo është string tim të printf. 1001 00:48:56,690 --> 00:48:58,151 Unë kam marrë një shenjë për qind. 1002 00:48:58,151 --> 00:48:59,650 Por unë jam i humbur argumentin e dytë. 1003 00:48:59,650 --> 00:49:03,190 >> Unë jam i humbur presje s, i cili I kanë në shembujt e mëparshëm. 1004 00:49:03,190 --> 00:49:06,650 Pra, një mundësi e mirë për të rregulluar edhe një gabim, aksidentalisht. 1005 00:49:06,650 --> 00:49:09,950 Dhe tani më lejoni të drejtuar string0, shkruani Zamyla. 1006 00:49:09,950 --> 00:49:10,970 OK, përshëndetje Zamyla. 1007 00:49:10,970 --> 00:49:14,144 >> Pra, ne kemi drejtuar këtë lloj të programit disa herë të ndryshme tani. 1008 00:49:14,144 --> 00:49:16,310 Por le të bëjmë diçka pak më ndryshe këtë herë. 1009 00:49:16,310 --> 00:49:19,450 Në vend të vetëm shtypjes Zamyla-së tërë emri me printf, 1010 00:49:19,450 --> 00:49:21,350 le ta bëjmë atë karakter nga karakteri. 1011 00:49:21,350 --> 00:49:22,700 >> Unë jam duke shkuar për të përdorur një për lak. 1012 00:49:22,700 --> 00:49:26,160 Dhe unë jam duke shkuar për të dhënë veten një variabël i numërimit, i quajtur i. 1013 00:49:26,160 --> 00:49:33,530 Dhe unë jam duke shkuar për të mbajtur iterating, kështu kohë që i është më pak se gjatësia e s. 1014 00:49:33,530 --> 00:49:35,930 >> Ajo rezulton, ne nuk kemi bërë këtë për herë të fundit, 1015 00:49:35,930 --> 00:49:39,100 se c vjen me një Funksioni quhet Stirling. 1016 00:49:39,100 --> 00:49:42,690 Kthehu në ditë, dhe në përgjithësi ende gjatë zbatimit të funksioneve, 1017 00:49:42,690 --> 00:49:45,405 njerëzit shpesh do të zgjedhin shumë Emrat e ngjeshur se lloj i shëndoshë 1018 00:49:45,405 --> 00:49:48,280 si ajo që ju doni, edhe pse është e mungon një zanore ose disa letra. 1019 00:49:48,280 --> 00:49:50,660 Pra Stirling është emri i një funksion që 1020 00:49:50,660 --> 00:49:53,880 merr një argument mes kllapa që duhet të jetë një varg. 1021 00:49:53,880 --> 00:49:56,910 Dhe vetëm ajo kthehet një numër të plotë, gjatësia e atë varg. 1022 00:49:56,910 --> 00:50:00,580 >> Pra, këtë për lak në linjë 7 po shkon të fillojë numërimi në i barabartë me 0. 1023 00:50:00,580 --> 00:50:02,530 Ajo do të ardhura i në çdo përsëritje 1024 00:50:02,530 --> 00:50:04,350 me 1, si ne kemi qenë duke bërë disa herë. 1025 00:50:04,350 --> 00:50:06,780 Por ajo do të bëjë vetëm kjo deri në pikën 1026 00:50:06,780 --> 00:50:09,660 kur i është gjatësia e vetë vargut. 1027 00:50:09,660 --> 00:50:14,520 >> Kështu që kjo është një mënyrë për të, në fund të fundit, iterating mbi personazhet 1028 00:50:14,520 --> 00:50:17,430 në vargun si është më poshtë. 1029 00:50:17,430 --> 00:50:20,670 Unë jam duke shkuar për të shkruar nuk është një vargut të tërë, por për qind c, 1030 00:50:20,670 --> 00:50:22,860 një karakter të vetëm i ndjekur nga një linjë të re. 1031 00:50:22,860 --> 00:50:24,880 Dhe atëherë unë jam duke shkuar për të shkojnë përpara, dhe kam nevojë për 1032 00:50:24,880 --> 00:50:29,080 të thonë se unë dua të shtypura Karakteri ith e s. 1033 00:50:29,080 --> 00:50:33,450 >> Pra, nëse i është variabli që tregon indeksi i vargut, ku 1034 00:50:33,450 --> 00:50:37,230 ju jeni në të, duhet të jenë në gjendje të thonë, më jep karakterin ith të s. 1035 00:50:37,230 --> 00:50:40,390 Dhe c ka një mënyrë për të bërë kjo me kllapa katrore. 1036 00:50:40,390 --> 00:50:43,679 Ju thjesht të thonë emrin e të string, e cila në këtë rast është s. 1037 00:50:43,679 --> 00:50:46,970 Pastaj ju përdorni kllapa katrore, të cilat janë zakonisht vetëm mbi Kthimin apo Shkruani 1038 00:50:46,970 --> 00:50:48,110 kyç në tastierë. 1039 00:50:48,110 --> 00:50:52,410 Dhe pastaj të vendosni indeksin e të karakter që ju doni të shtypura. 1040 00:50:52,410 --> 00:50:55,960 Kështu indeksi do të jetë një number-- 0, ose 1, ose 2, ose 3, ose pikë, 1041 00:50:55,960 --> 00:50:57,590 dot, dot, një numër tjetër. 1042 00:50:57,590 --> 00:51:00,920 >> Dhe ne kemi siguruar që ajo do të të jetë numrin e drejtë, sepse unë 1043 00:51:00,920 --> 00:51:02,360 fillojë numërimi në 0. 1044 00:51:02,360 --> 00:51:07,020 Dhe nga default, karakteri i parë në një varg është nga konventa 0. 1045 00:51:07,020 --> 00:51:09,230 Dhe karakteri i dytë është kllapa 1. 1046 00:51:09,230 --> 00:51:11,120 Dhe karakteri i tretë është kllapa 2. 1047 00:51:11,120 --> 00:51:13,630 Dhe ju nuk doni të shkoni shumë tani, por ne nuk do të sepse ne jemi 1048 00:51:13,630 --> 00:51:17,780 do të vetëm ardhura unë deri në atë është e barabartë me gjatësinë e vargut. 1049 00:51:17,780 --> 00:51:20,210 Dhe në të cilën pikë, këtë për lak do të ndalet. 1050 00:51:20,210 --> 00:51:25,550 >> Pra më lejoni të shkoj përpara dhe të ruani këtë program, dhe të drejtuar të string 0. 1051 00:51:25,550 --> 00:51:28,400 Por unë dehur. 1052 00:51:28,400 --> 00:51:35,390 Implicite deklaruar funksionin e bibliotekës Stirling me llojin e tillë dhe such-- tani, 1053 00:51:35,390 --> 00:51:36,430 kjo tingëllon e njohur. 1054 00:51:36,430 --> 00:51:37,440 Por kjo nuk është printf. 1055 00:51:37,440 --> 00:51:38,540 Dhe kjo nuk është marrë string. 1056 00:51:38,540 --> 00:51:40,480 >> Unë nuk e vidhos deri në në të njëjtën mënyrë këtë herë. 1057 00:51:40,480 --> 00:51:45,100 Por vini re këtu poshtë pak më poshtë më tej, përfshijnë string header, 1058 00:51:45,100 --> 00:51:47,210 shprehimisht sigurojë Deklarata për Stirling. 1059 00:51:47,210 --> 00:51:48,820 Pra, nuk është në fakt një çelës në atje. 1060 00:51:48,820 --> 00:51:51,670 >> Dhe me të vërtetë kjo rezulton ka një tjetër fotografi header 1061 00:51:51,670 --> 00:51:53,970 se ne nuk kemi përdorur në klasë, por është e 1062 00:51:53,970 --> 00:51:56,480 në mesin e atyre në dispozicion për ju, të quajtur string. 1063 00:51:56,480 --> 00:52:00,930 Dhe në atë fotografi, string është Stirling deklaruar. 1064 00:52:00,930 --> 00:52:05,220 Pra më lejoni të shkoj përpara dhe të ruani këtë, të bëjë string 1065 00:52:05,220 --> 00:52:08,040 0-- bukur, pa mesazhe gabimi këtë herë. 1066 00:52:08,040 --> 00:52:12,290 >> ./string0 Zamyla, dhe Unë jam gati për të goditur Enter, 1067 00:52:12,290 --> 00:52:16,710 në të cilën pikë getString do për t'u kthyer string, e vënë atë në s. 1068 00:52:16,710 --> 00:52:21,890 Atëherë kjo për lak do të iterate mbi personazhet e S në një kohë, 1069 00:52:21,890 --> 00:52:28,420 dhe printoni ato një për rresht, sepse Unë kisha këtë backslash n në fund. 1070 00:52:28,420 --> 00:52:34,530 Kështu që unë mund të harroj atë backslash n, dhe pastaj vetëm të shtypura Zamyla gjithë 1071 00:52:34,530 --> 00:52:37,460 në të njëjtën linjë, në mënyrë efektive reimplementing 1072 00:52:37,460 --> 00:52:38,999 printf, e cila nuk është e gjitha që e dobishme. 1073 00:52:38,999 --> 00:52:40,540 Por në këtë rast, unë nuk e kam bërë këtë. 1074 00:52:40,540 --> 00:52:43,610 Unë e kam shtypur në fakt një karakter në një kohë, një për rresht, 1075 00:52:43,610 --> 00:52:45,400 kështu që ne në fakt të parë efektin. 1076 00:52:45,400 --> 00:52:46,900 >> Por unë duhet të kini parasysh një gjë këtu. 1077 00:52:46,900 --> 00:52:48,930 Dhe ne do të kthehen në këtë në një javë në të ardhmen. 1078 00:52:48,930 --> 00:52:52,650 Ajo rezulton se kjo Kodi është potencialisht buggy. 1079 00:52:52,650 --> 00:52:56,560 >> Ajo rezulton se të marrë varg dhe disa funksione të tjera në jetën e 1080 00:52:56,560 --> 00:53:00,280 jo domosdoshmërisht gjithmonë kthehen çfarë jeni duke pritur. 1081 00:53:00,280 --> 00:53:03,010 Ne e dimë nga klasa e fundit kohë në këtë që të merrni 1082 00:53:03,010 --> 00:53:04,960 string është menduar për t'u kthyer një varg. 1083 00:53:04,960 --> 00:53:09,900 Por, çfarë nëse llojet e përdoruesve nga të tilla një fjalë të gjatë, ose paragrafi, apo ese 1084 00:53:09,900 --> 00:53:13,010 se nuk është vetëm nuk është e mjaftueshme kujtesës në kompjuter për të përshtaten atë. 1085 00:53:13,010 --> 00:53:15,410 >> Si, çfarë nëse diçka shkon gabuar nën kapuç? 1086 00:53:15,410 --> 00:53:18,400 Kjo nuk mund të ndodhë shpesh, por kjo mund të ndodhë një herë 1087 00:53:18,400 --> 00:53:21,520 për një kohë, shumë rrallë. 1088 00:53:21,520 --> 00:53:25,460 Dhe kështu kjo rezulton që të merrni varg dhe funksionon si ai nuk domosdoshmërisht 1089 00:53:25,460 --> 00:53:26,380 gjithmonë kthehen strings. 1090 00:53:26,380 --> 00:53:30,680 Ata mund të kthehen disa vlera gabimi, disa vlera sentinel mënyrë që të flasin, 1091 00:53:30,680 --> 00:53:32,612 që tregon se diçka ka shkuar keq. 1092 00:53:32,612 --> 00:53:35,320 Dhe ju do të dini vetëm këtë nga ka mësuar atë në klasë tani, 1093 00:53:35,320 --> 00:53:37,700 ose që ka lexuar disa dokumente shumë. 1094 00:53:37,700 --> 00:53:43,120 Ajo rezulton se të marrë varg mund të kthehen një vlerë të quajtur null. 1095 00:53:43,120 --> 00:53:46,220 Null është një vlerë e veçantë që ne do të kthehen në një javë në të ardhmen. 1096 00:53:46,220 --> 00:53:50,420 Por tani për tani, vetëm e di se në qoftë se unë dua të jetë me të vërtetë e duhur për të ecur përpara 1097 00:53:50,420 --> 00:53:52,650 duke marrë varg, I nuk duhet të vetëm e quajti atë, 1098 00:53:52,650 --> 00:53:56,870 dhe verbërisht të përdorë vlerën e saj të kthimit, duke besuar se kjo është një string. 1099 00:53:56,870 --> 00:53:59,420 >> I pari duhet të them, hej, prit një minutë, vetëm 1100 00:53:59,420 --> 00:54:03,380 të vazhdojë në qoftë se s nuk të barabartë null, ku null, përsëri, 1101 00:54:03,380 --> 00:54:04,660 është vetëm disa vlera të veçanta. 1102 00:54:04,660 --> 00:54:07,770 Dhe kjo është e vetmja vlerë të veçantë të duhet të shqetësohen për për të marrë varg. 1103 00:54:07,770 --> 00:54:10,900 Get string është ose do për t'u kthyer një varg apo null. 1104 00:54:10,900 --> 00:54:17,219 >> Dhe kjo pikë thirrje është e barabartë me shenjë ju mund të dini nga ndoshta klasën e matematikës 1105 00:54:17,219 --> 00:54:20,510 që ju mund të tërheqë një shenjë të barabartë me një linjë me atë për të treguar jo të barabartë. 1106 00:54:20,510 --> 00:54:23,135 Kjo nuk është në përgjithësi një karakter ju mund të shtypni në tastierën tuaj. 1107 00:54:23,135 --> 00:54:26,480 Dhe kështu në shumicën e gjuhëve të programimit, kur ju doni të thoni jo të barabartë, 1108 00:54:26,480 --> 00:54:29,160 ju përdorni një pikë thirrje, i njohur ndryshe si zhurmë. 1109 00:54:29,160 --> 00:54:33,180 Pra, ju thoni zhurmë barabartë, i cili do të thotë nuk është e barabartë, logjikisht. 1110 00:54:33,180 --> 00:54:38,060 Është vetëm si nuk është një i madh se, ose e barabarte me ose me pak se 1111 00:54:38,060 --> 00:54:41,270 ose e barabartë me kyç në tastierën tuaj që e bën të gjitha në një simbol. 1112 00:54:41,270 --> 00:54:44,020 Pra, kjo është arsyeja pse, në shembujt e fundit, keni bërë një parantezë të hapur, dhe më pas 1113 00:54:44,020 --> 00:54:48,670 një shenjë të barabartë, në mënyrë për të bërë më e madhe se ose thotë, më pak se. 1114 00:54:48,670 --> 00:54:49,910 >> Pra, çfarë është takeaway këtu? 1115 00:54:49,910 --> 00:54:53,880 Kjo është thjesht një mënyrë tashmë e futur këtë sintaksë, ky tipar, 1116 00:54:53,880 --> 00:54:57,390 iterating mbi individual karaktere në një varg. 1117 00:54:57,390 --> 00:55:00,260 Dhe ashtu si ato shesh kllapa t'ju lejojë të merrni me ta, 1118 00:55:00,260 --> 00:55:03,790 konsiderojnë këto kllapa katrore si lloj nënkupton në këtë themelor 1119 00:55:03,790 --> 00:55:06,040 dizajn, ku çdo Karakteri brenda një varg 1120 00:55:06,040 --> 00:55:10,180 është lloj i boxed në diku nën individualitet në kujtesën e kompjuterit tuaj. 1121 00:55:10,180 --> 00:55:12,340 >> Por le të bëjë një variant të kësaj. 1122 00:55:12,340 --> 00:55:14,880 Ajo rezulton se kjo program është i saktë. 1123 00:55:14,880 --> 00:55:18,810 Pra per akset CS50-së për vlerësimin e kodi, kjo është e saktë tani. 1124 00:55:18,810 --> 00:55:22,959 Sidomos tani që unë jam duke kontrolluar për null, ky program nuk duhet rrëzuar. 1125 00:55:22,959 --> 00:55:24,500 Dhe unë vetëm e di se nga përvoja. 1126 00:55:24,500 --> 00:55:28,040 Por nuk ka asgjë tjetër që ne mund të vërtetë të shkojnë keq këtu. 1127 00:55:28,040 --> 00:55:31,860 Por kjo nuk është shumë e mirë-projektuar, sepse le të kthehemi në bazat. 1128 00:55:31,860 --> 00:55:34,450 >> Së pari, principles-- çfarë një për lak të bëjë? 1129 00:55:34,450 --> 00:55:36,290 Një për lak bën tre gjëra. 1130 00:55:36,290 --> 00:55:39,340 Ajo initializes disa vlera, nëse ti i pyet atë për të. 1131 00:55:39,340 --> 00:55:41,770 Ajo kontrollon një kusht. 1132 00:55:41,770 --> 00:55:45,380 Dhe pastaj pas çdo përsëritje, pas çdo cikli, 1133 00:55:45,380 --> 00:55:49,330 ajo increments disa vlera, apo vlerat, këtu. 1134 00:55:49,330 --> 00:55:50,600 >> Pra, çfarë do të thotë kjo? 1135 00:55:50,600 --> 00:55:52,940 Ne nisja i të 0. 1136 00:55:52,940 --> 00:55:58,610 Ne kontrolluar dhe të sigurt i është më pak se gjatësia e s, e cila është Z-A-M-Y-L-A, 1137 00:55:58,610 --> 00:55:59,900 kështu që është më pak se 6. 1138 00:55:59,900 --> 00:56:02,590 Dhe, me të vërtetë, 0, kur më pak se 6. 1139 00:56:02,590 --> 00:56:05,580 >> Ne të shtypura nga Z nga emri Zamyla së. 1140 00:56:05,580 --> 00:56:08,080 Pastaj ne ardhura i nga 0 deri 1. 1141 00:56:08,080 --> 00:56:11,290 Ne atëherë kontrolloni, është 1 më pak se gjatësia e s? 1142 00:56:11,290 --> 00:56:13,270 Gjatësia e s është 6. 1143 00:56:13,270 --> 00:56:13,950 Po kjo është. 1144 00:56:13,950 --> 00:56:16,880 >> Pra, ne të shtypura një në emër të Zamyla së, ZA. 1145 00:56:16,880 --> 00:56:20,090 Ne rrisim i nga 0, 1, në 2. 1146 00:56:20,090 --> 00:56:23,720 Ne atëherë kontrolloni, është më pak se 2 gjatësia e emrit të Zamyla së. 1147 00:56:23,720 --> 00:56:25,380 6- kështu 2 është më pak se 6. 1148 00:56:25,380 --> 00:56:30,460 Po, le të shtypura nga tani M në Emri Zamyla-së, karakteri i tretë. 1149 00:56:30,460 --> 00:56:34,110 >> Çështja kryesore këtu është se në çdo përsëritje e historisë, unë jam duke kontrolluar, 1150 00:56:34,110 --> 00:56:37,810 është i më pak se gjatësia e Zamyla? 1151 00:56:37,810 --> 00:56:40,350 Por kapur është se Stirling nuk është një pronë. 1152 00:56:40,350 --> 00:56:43,100 Ata prej jush që kanë programuar para në Java apo gjuhë të tjera 1153 00:56:43,100 --> 00:56:46,310 mund të dini gjatësinë e një varg është një pronë, vetëm disa lexuar vetëm vlerë. 1154 00:56:46,310 --> 00:56:50,220 >> Në C në këtë rast, nëse kjo është e një funksion që është fjalë për fjalë 1155 00:56:50,220 --> 00:56:53,520 numëruar numrin e karaktere në Zamyla çdo kohë 1156 00:56:53,520 --> 00:56:54,740 ne e quajmë atë funksion. 1157 00:56:54,740 --> 00:56:58,500 Çdo herë që të pyesni kompjuterin për të përdorur Stirling, ajo është duke marrë një vështrim në Zamyla, 1158 00:56:58,500 --> 00:57:01,960 dhe thënë Z-A-M-Y-L-A, 6. 1159 00:57:01,960 --> 00:57:02,962 Dhe kthehet 6. 1160 00:57:02,962 --> 00:57:04,920 Herën tjetër që ju të telefononi është brenda që për lak, 1161 00:57:04,920 --> 00:57:08,610 ajo do të shikojmë në Zamyla përsëri, të thënë Z-A-M-Y-L-A, 6. 1162 00:57:08,610 --> 00:57:10,320 Dhe ajo do të kthehet 6. 1163 00:57:10,320 --> 00:57:12,980 Pra, çfarë është e trashë në lidhje me këtë dizajn? 1164 00:57:12,980 --> 00:57:17,700 >> Pse është kodi im nuk është me 5 nga 5 për dizajn tani, kështu që të flasin? 1165 00:57:17,700 --> 00:57:20,600 E pra, unë jam duke kërkuar një pyetje të panevojshme. 1166 00:57:20,600 --> 00:57:23,030 Unë jam duke bërë më shumë punë se sa kam nevojë për të. 1167 00:57:23,030 --> 00:57:25,370 >> Pra, edhe pse Përgjigja është e saktë, unë jam 1168 00:57:25,370 --> 00:57:29,560 duke i kërkuar në kompjuter, ajo që është gjatësia e Zamyla përsëri, 1169 00:57:29,560 --> 00:57:31,380 dhe përsëri, dhe përsëri, dhe përsëri? 1170 00:57:31,380 --> 00:57:33,980 Dhe kjo përgjigje është kurrë nuk do të ndryshojë. 1171 00:57:33,980 --> 00:57:35,900 Është gjithmonë do të jetë 6. 1172 00:57:35,900 --> 00:57:39,730 >> Pra, një zgjidhje më të mirë se sa kjo do të jetë ky versioni i ardhshëm. 1173 00:57:39,730 --> 00:57:43,390 Më lejoni të shkojnë përpara dhe të vënë atë në një Skedari i veçantë i quajtur string1.c, 1174 00:57:43,390 --> 00:57:44,990 vetëm për të mbajtur atë të veçantë. 1175 00:57:44,990 --> 00:57:47,260 Dhe kjo rezulton në një për loop, ju mund të vërtetë 1176 00:57:47,260 --> 00:57:50,210 deklarojë variablave të shumta në të njëjtën kohë. 1177 00:57:50,210 --> 00:57:53,460 >> Kështu që unë jam duke shkuar për të mbajtur I dhe e vendosi atë në 0. 1178 00:57:53,460 --> 00:57:56,190 Por unë jam gjithashtu do të shtoni një presje dhe thuaj: 1179 00:57:56,190 --> 00:58:01,050 më jepni një ndryshore të quajtur n, të cilit Vlera është e barabartë me gjatësinë e string s. 1180 00:58:01,050 --> 00:58:09,410 Dhe tani, ju lutem sigurohuni gjendjen time për sa kohë që i është më pak se n. 1181 00:58:09,410 --> 00:58:14,140 >> Pra, në këtë mënyrë, logjika është identike në fund të ditë. 1182 00:58:14,140 --> 00:58:18,280 Por unë jam duke kujtuar vlera 6, në këtë rast. 1183 00:58:18,280 --> 00:58:19,780 Çfarë është gjatësia e emrit të Zamyla-së? 1184 00:58:19,780 --> 00:58:20,860 Dhe unë jam vënë atë në n. 1185 00:58:20,860 --> 00:58:23,050 >> Dhe unë jam ende duke kontrolluar gjendja çdo kohë. 1186 00:58:23,050 --> 00:58:24,300 0 më pak se 6? 1187 00:58:24,300 --> 00:58:25,600 Është 1 më pak se 6? 1188 00:58:25,600 --> 00:58:28,600 Është 2 më pak se 6, e kështu me radhë? 1189 00:58:28,600 --> 00:58:31,914 >> Por unë nuk jam duke kërkuar kompjuterin përsëri, dhe përsëri, çfarë është 1190 00:58:31,914 --> 00:58:33,080 gjatësia e emrit të Zamyla-së? 1191 00:58:33,080 --> 00:58:34,320 Çfarë është gjatësia e emrit të Zamyla-së? 1192 00:58:34,320 --> 00:58:35,986 Çfarë është gjatësia e emrit të këtij Zamyla-së? 1193 00:58:35,986 --> 00:58:40,440 Unë fjalë për fjalë të kujtohet se për herë të parë dhe vetëm përgjigjem në këtë n e dytë të ndryshueshme. 1194 00:58:40,440 --> 00:58:45,280 Pra, kjo tani do të jetë jo vetëm e saktë, por edhe të mirë-projektuar. 1195 00:58:45,280 --> 00:58:46,670 >> Tani, ajo që për stilin e? 1196 00:58:46,670 --> 00:58:48,866 Unë e kam quajtur variabla e mia mjaft mirë, unë do të thoja. 1197 00:58:48,866 --> 00:58:50,240 Ata janë super ngjeshur tani. 1198 00:58:50,240 --> 00:58:52,090 Dhe kjo është krejtësisht në rregull. 1199 00:58:52,090 --> 00:58:55,120 >> Nëse keni vetëm një të tillë string në një program, 1200 00:58:55,120 --> 00:58:56,860 si edhe ju mund të telefononi ajo s për varg. 1201 00:58:56,860 --> 00:58:59,370 Nëse keni vetëm një variabël për numërim në një program, 1202 00:58:59,370 --> 00:59:00,710 si edhe ju mund të telefononi atë i. 1203 00:59:00,710 --> 00:59:03,500 Nëse ju keni një gjatësi, n është super e zakonshme si. 1204 00:59:03,500 --> 00:59:05,800 Por unë nuk kam komentuar asnjë kodin tim. 1205 00:59:05,800 --> 00:59:09,200 >> Unë nuk e kam informuar reader-- nëse kjo është TF ime, ose TA, 1206 00:59:09,200 --> 00:59:12,460 ose vetëm colleague-- atë që është menduar të ndodh në këtë program. 1207 00:59:12,460 --> 00:59:15,760 Dhe kështu për të marrë stil të mirë, ajo që unë do të duan të bëjnë 1208 00:59:15,760 --> 00:59:24,580 është diçka this-- si kërkojë përdoruesit për të dhëna. 1209 00:59:24,580 --> 00:59:26,670 Dhe unë mund të rishkruaj kjo ndonjë numër të mënyra. 1210 00:59:26,670 --> 00:59:35,630 >> Sigurohuni s-- të siguruar get string kthyer një varg. 1211 00:59:35,630 --> 00:59:40,280 Dhe pastaj në here-- dhe kjo është ndoshta iterate më e rëndësishme comment-- 1212 00:59:40,280 --> 00:59:44,450 mbi personazhet në s një në një kohë. 1213 00:59:44,450 --> 00:59:47,060 Dhe unë mund të përdorni ndonjë Zgjedhja e gjuhës angleze 1214 00:59:47,060 --> 00:59:49,650 këtu për të përshkruar njëri- nga këto chunks të kodit. 1215 00:59:49,650 --> 00:59:52,740 >> Vini re se unë nuk kam vënë një komentuar mbi çdo linjë të kodit, 1216 00:59:52,740 --> 00:59:55,690 me të vërtetë vetëm në anën interesante ato të, ato që 1217 00:59:55,690 --> 00:59:59,460 kanë disa domethënie që unë mund të duan të bëjnë super të qartë për dikë 1218 00:59:59,460 --> 01:00:00,460 duke lexuar kodin tim. 1219 01:00:00,460 --> 01:00:02,920 Dhe pse jeni duke e quajtur të string pyesni përdorues të dhëna? 1220 01:00:02,920 --> 01:00:05,450 Edhe kjo nuk është domosdoshmërisht të gjitha që përshkrues. 1221 01:00:05,450 --> 01:00:09,340 Por ajo ndihmon tregoj një histori, për shkak se Linja e dytë në histori është, sigurohuni që 1222 01:00:09,340 --> 01:00:10,740 marrë string kthyer një varg. 1223 01:00:10,740 --> 01:00:14,260 >> Dhe vija e tretë në histori është, iterate mbi personazhet në një s 1224 01:00:14,260 --> 01:00:15,380 ne nje kohe. 1225 01:00:15,380 --> 01:00:17,920 Dhe tani vetëm për masë të mirë, Unë jam duke shkuar për të shkuar përpara dhe për të shtuar 1226 01:00:17,920 --> 01:00:24,560 një koment më shumë se vetëm të thotë print karakter i-th në s. 1227 01:00:24,560 --> 01:00:26,520 Tani, çfarë të kam bërë në fund të ditës? 1228 01:00:26,520 --> 01:00:29,190 >> Unë kam shtuar disa English fjalë në formën e komenteve. 1229 01:00:29,190 --> 01:00:32,700 Simboli plagë plagë do të thotë, hej, kompjuter kjo eshte per njeriut, 1230 01:00:32,700 --> 01:00:33,820 jo për ty, kompjuter. 1231 01:00:33,820 --> 01:00:35,119 Pra, ata janë injoruar në mënyrë logjike. 1232 01:00:35,119 --> 01:00:35,910 Ata janë vetëm atje. 1233 01:00:35,910 --> 01:00:39,830 >> Dhe, me të vërtetë, CS50 IDE tregon ato si gri, si të dobishëm, por jo kryesore 1234 01:00:39,830 --> 01:00:41,000 me programin. 1235 01:00:41,000 --> 01:00:42,570 Vini re atë që ju tani mund të bëni. 1236 01:00:42,570 --> 01:00:44,950 Nëse ju e dini C programimi apo jo, ju 1237 01:00:44,950 --> 01:00:47,722 vetëm mund të qëndrojë prapa në këtë program, dhe cek komentet. 1238 01:00:47,722 --> 01:00:50,180 Pyetni përdoruesit për të dhëna, të sigurt marrë string kthyer një varg, 1239 01:00:50,180 --> 01:00:53,009 iterate mbi personazhet në s një në një kohë, të shtypura karakterin 1240 01:00:53,009 --> 01:00:55,550 Karakteri i-th në s-- ju nuk e bëni edhe duhet të shikoni në kodin 1241 01:00:55,550 --> 01:00:57,270 për të kuptuar se çfarë ky program bën. 1242 01:00:57,270 --> 01:01:00,280 Dhe, më mirë akoma, në qoftë se ju vetë shikoni në këtë program në një javë ose dy, 1243 01:01:00,280 --> 01:01:02,280 ose një muaj, apo një vit, edhe ju nuk keni 1244 01:01:02,280 --> 01:01:04,420 për të ia ngul sytë në kodin, duke u përpjekur për të kujtuar, 1245 01:01:04,420 --> 01:01:06,630 çfarë po unë duke u përpjekur të bëjë me këtë kod? 1246 01:01:06,630 --> 01:01:07,770 >> Ju keni thënë vetes. 1247 01:01:07,770 --> 01:01:11,660 Ju keni përshkruar atë për veten tuaj, apo ndonjë koleg apo AT, ose TF. 1248 01:01:11,660 --> 01:01:14,860 Dhe kështu që kjo tani do të jetë saktë, dhe dizajn të mirë, 1249 01:01:14,860 --> 01:01:18,210 dhe përfundimisht style mirë po ashtu. 1250 01:01:18,210 --> 01:01:19,990 Pra, bëni të mbani në mend. 1251 01:01:19,990 --> 01:01:22,200 >> Pra, ka një tjetër gjë që unë jam duke shkuar për të bërë këtu 1252 01:01:22,200 --> 01:01:28,240 se tani mund të zbulojë saktësisht se çfarë është ndodh nën kapuç. 1253 01:01:28,240 --> 01:01:30,390 Pra, nuk ka ky tipar në C, dhe në gjuhë të tjera, 1254 01:01:30,390 --> 01:01:33,010 quajtur typecasting se ose implicite 1255 01:01:33,010 --> 01:01:37,250 ose në mënyrë të qartë ju lejon të konvertohet nga një lloj të dhënave në një tjetër. 1256 01:01:37,250 --> 01:01:39,800 Ne kemi qenë që kanë të bëjnë në mënyrë tani sot me vargjet. 1257 01:01:39,800 --> 01:01:41,250 >> Dhe vargjet janë karaktere. 1258 01:01:41,250 --> 01:01:44,910 Por kujtoj që nga java e 0, cilat janë personazhet? 1259 01:01:44,910 --> 01:01:49,334 Personazhet janë vetëm një abstraksion në krye të numrave numbers-- dhjetore, 1260 01:01:49,334 --> 01:01:52,500 dhe numrat dhjetore janë me të vërtetë vetëm një Nxjerrja në krye të numrave binare, 1261 01:01:52,500 --> 01:01:53,720 si ne përkufizuar atë. 1262 01:01:53,720 --> 01:01:55,540 >> Pra, personazhet janë numra. 1263 01:01:55,540 --> 01:01:58,410 Dhe numrat janë karaktere, vetëm në varësi të kontekstit. 1264 01:01:58,410 --> 01:02:01,250 Dhe kjo rezulton se brenda e një programi kompjuterik, 1265 01:02:01,250 --> 01:02:06,830 mund të specifikoni se si ju dëshironi të shikoni në copa brenda e këtij programi? 1266 01:02:06,830 --> 01:02:10,400 >> Recall nga java 0 që kemi pasur Ascii, e cila është vetëm ky kod 1267 01:02:10,400 --> 01:02:11,620 Letrat e hartës për numrat. 1268 01:02:11,620 --> 01:02:13,660 Dhe ne thamë, kryeqyteti A është 65. 1269 01:02:13,660 --> 01:02:15,860 Capital B është 66, e kështu me radhë. 1270 01:02:15,860 --> 01:02:20,500 >> Dhe vini re, ne thelb kemi chars në në radhën e lartë këtu, si C do të thërrasë ato, 1271 01:02:20,500 --> 01:02:23,400 karaktere, dhe pastaj Ints në rreshtin e dytë. 1272 01:02:23,400 --> 01:02:28,180 Dhe kjo rezulton se ju mund të konvertohet seamlessly në mes të dy, në mënyrë tipike. 1273 01:02:28,180 --> 01:02:30,042 Dhe në qoftë se ne duam të bëjmë këtë qëllim, ne 1274 01:02:30,042 --> 01:02:31,750 mund të dëshironi për të trajtuar diçka si kjo. 1275 01:02:31,750 --> 01:02:33,590 >> Ne mund të dëshironi për të kthyer Rasti sipërme të ulët 1276 01:02:33,590 --> 01:02:35,330 rast, ose rasti më i ulët në rastin e sipërm. 1277 01:02:35,330 --> 01:02:38,000 Dhe kjo rezulton se ka në fakt një model këtu 1278 01:02:38,000 --> 01:02:39,900 ne mund të përqafojë në një moment të vetëm. 1279 01:02:39,900 --> 01:02:44,120 Por le të shohim së pari në një Shembull për të bërë këtë në mënyrë eksplicite. 1280 01:02:44,120 --> 01:02:46,340 >> Unë jam duke shkuar për të shkuar mbrapa në CS50 IDE. 1281 01:02:46,340 --> 01:02:50,640 Unë jam duke shkuar për të krijuar një file i quajtur Ascii 0.c. 1282 01:02:50,640 --> 01:02:55,960 Dhe unë jam duke shkuar për të shkuar përpara dhe për të shtuar tim io.h standarde në krye, e pavlefshme int main 1283 01:02:55,960 --> 01:02:57,370 në majë të funksionit tim. 1284 01:02:57,370 --> 01:03:02,700 Dhe atëherë unë jam vetëm duke shkuar për të bërë të following-- një për lak nga i barabartë, 1285 01:03:02,700 --> 01:03:04,610 le të themi, 65. 1286 01:03:04,610 --> 01:03:10,460 >> Dhe pastaj i do të jetë më pak se 65, plus 26 shkronja në alfabetin. 1287 01:03:10,460 --> 01:03:12,640 Kështu që unë do të le kompjuterin bëjë matematikë për mua atje. 1288 01:03:12,640 --> 01:03:15,100 Dhe pastaj brenda këtij loop, çfarë jam unë do të shtypura? 1289 01:03:15,100 --> 01:03:19,230 >> % C është% i backslash n. 1290 01:03:19,230 --> 01:03:21,290 Dhe tani unë dua të plug në dy vlera. 1291 01:03:21,290 --> 01:03:24,530 Unë e kam vënë përkohësisht pyetje shënon atje për të ftuar pyetje. 1292 01:03:24,530 --> 01:03:29,940 >> Dua të iterate nga 65 e tutje për 26 shkronjat e alfabetit, 1293 01:03:29,940 --> 01:03:35,190 shtypjen jashtë në çdo përsëritje që ekuivalente integrale karakter. 1294 01:03:35,190 --> 01:03:38,299 Me fjalë të tjera, unë dua të iterate mbi 26 numra printim 1295 01:03:38,299 --> 01:03:41,590 çfarë karakteri Ascii është, letra, dhe çfarë is-- numri korrespondues 1296 01:03:41,590 --> 01:03:44,650 me të vërtetë vetëm rikrijimin grafiku nga kjo rrëshqitje. 1297 01:03:44,650 --> 01:03:47,010 Pra, çfarë duhet të jenë këto pikëpyetje? 1298 01:03:47,010 --> 01:03:51,760 >> E pra, ajo rezulton se të dytë duhet të jetë vetëm i ndryshueshëm. 1299 01:03:51,760 --> 01:03:53,860 Unë dua të shoh se si një numër. 1300 01:03:53,860 --> 01:03:58,920 Dhe argumenti mesme këtu, unë mund të them kompjuterin 1301 01:03:58,920 --> 01:04:03,470 për të trajtuar atë numër i plotë i si një karakter, në mënyrë që 1302 01:04:03,470 --> 01:04:05,880 ta zëvendësojnë atë këtu për qind C. 1303 01:04:05,880 --> 01:04:07,990 >> Me fjalë të tjera, në qoftë se unë, programues të njeriut, e di 1304 01:04:07,990 --> 01:04:09,865 këto janë vetëm numra në fund të ditës. 1305 01:04:09,865 --> 01:04:12,500 Dhe unë e di se 65 duhet hartë të një karakter. 1306 01:04:12,500 --> 01:04:15,310 Me këtë cast të qartë, me kllapa, 1307 01:04:15,310 --> 01:04:18,840 emri i tipit të të dhënave që ju doni të konvertohet në dhe një kllapa mbyllur, 1308 01:04:18,840 --> 01:04:21,200 ju mund të them kompjuter, hey, kompjuter, 1309 01:04:21,200 --> 01:04:24,130 kthyer këtë numër të plotë në një char. 1310 01:04:24,130 --> 01:04:26,250 >> Kështu që kur kam drejtuar këtë program pas përpilimit, 1311 01:04:26,250 --> 01:04:29,740 le të shohim se çfarë kam bërë get-- ascii 0. 1312 01:04:29,740 --> 01:04:33,020 Mallkuar atë, ajo që ka të bëj gabim këtu? 1313 01:04:33,020 --> 01:04:35,884 Përdorni të identifikues padeklaruar, të gjithë të drejtë, jo të qëllimshme, 1314 01:04:35,884 --> 01:04:37,800 por le të shohim nëse ne nuk mund të Arsyeja me këtë. 1315 01:04:37,800 --> 01:04:41,220 >> Pra, linja five-- kështu që unë nuk e kam marrë shumë larg para vidhosje deri. 1316 01:04:41,220 --> 01:04:42,140 Eshte ne rregull. 1317 01:04:42,140 --> 01:04:46,560 Kështu Linja 5 për i barabartë 65-- shoh. 1318 01:04:46,560 --> 01:04:50,130 Pra, mos harroni se në C, ndryshe nga disa Gjuhët në qoftë se ju keni programimit paraprak 1319 01:04:50,130 --> 01:04:52,190 Përvoja, ju keni për të të treguar kompjuterin, 1320 01:04:52,190 --> 01:04:55,040 ndryshe nga Scratch, çfarë lloji i variablit është. 1321 01:04:55,040 --> 01:04:56,860 >> Dhe kam harruar një frazë kyçe këtu. 1322 01:04:56,860 --> 01:04:59,200 Në përputhje pesë, unë kam filluar përdorimin i. 1323 01:04:59,200 --> 01:05:01,560 Por unë nuk e kam thënë C çfarë të dhënat lloji është. 1324 01:05:01,560 --> 01:05:04,570 Kështu që unë jam duke shkuar për të shkuar në këtu dhe thonë, ah, e bëjnë atë një numër të plotë. 1325 01:05:04,570 --> 01:05:07,050 >> Tani unë jam duke shkuar për të shkuar përpara dhe të përpiluar. 1326 01:05:07,050 --> 01:05:08,080 Kjo fikse se. 1327 01:05:08,080 --> 01:05:12,660 ./ascii0 Enter, kjo është lloj i ftohtë. 1328 01:05:12,660 --> 01:05:15,360 Jo vetëm që është e super të shpejtë për pyesni kompjuterin këtë pyetje, 1329 01:05:15,360 --> 01:05:18,885 në vend se duke kërkuar atë në një rrëshqitje, të shtypur një për çdo rresht, A është 65, 1330 01:05:18,885 --> 01:05:24,860 B është 66, të gjithë rrugën që down-- I e bëri këtë 26 Times-- me shkronja z, 1331 01:05:24,860 --> 01:05:25,630 që është 90. 1332 01:05:25,630 --> 01:05:27,790 Dhe, në fakt, pak më inteligjente do të 1333 01:05:27,790 --> 01:05:31,030 kanë qenë për mua të mos mbështeten në kompjuter për të shtuar 26. 1334 01:05:31,030 --> 01:05:34,060 Unë mund të ketë bërë vetëm 90 si edhe, për aq kohë 1335 01:05:34,060 --> 01:05:37,390 si unë nuk do të bëjë të njëjtin gabim dy herë. 1336 01:05:37,390 --> 01:05:41,880 Unë dua të shkoj deri me z, jo vetëm deri me y. 1337 01:05:41,880 --> 01:05:44,000 >> Pra, kjo është një cast qartë. 1338 01:05:44,000 --> 01:05:47,860 Ajo rezulton se kjo nuk është edhe e nevojshme. 1339 01:05:47,860 --> 01:05:52,480 Më lejoni të shkojnë përpara dhe përsëritje kjo përpilues, dhe përsëritje Ascii 0. 1340 01:05:52,480 --> 01:05:54,940 Ajo rezulton se C është shumë e zgjuar. 1341 01:05:54,940 --> 01:05:57,150 >> Dhe printf, në veçanti, është shumë e zgjuar. 1342 01:05:57,150 --> 01:06:01,260 Nëse ju vetëm të kalojë një I dy herë për të dy placeholders, printf 1343 01:06:01,260 --> 01:06:04,510 do të kuptojë, oh, edhe unë ju njoh i dha mua një integer-- një numër, 1344 01:06:04,510 --> 01:06:06,380 si 65, ose 90, ose çfarëdo. 1345 01:06:06,380 --> 01:06:10,170 Por unë shoh se ju doni mua për të format këtë numër si një karakter. 1346 01:06:10,170 --> 01:06:16,460 Dhe kështu printf mund të hedhin në mënyrë implicite int në një char për ju si. 1347 01:06:16,460 --> 01:06:19,360 Pra, kjo nuk është një problem në të gjitha. 1348 01:06:19,360 --> 01:06:23,100 >> Por vini re, për shkak të këtij ekuivalencë ne fakt mund ta bëjë këtë si. 1349 01:06:23,100 --> 01:06:26,520 Më lejoni të shkojnë përpara dhe të bëjë një të tillë version tjetër i this-- 1.c. ascii 1350 01:06:26,520 --> 01:06:31,800 Dhe në vend të iterating mbi integers, të vërtetë mund të fryj mendjen tuaj 1351 01:06:31,800 --> 01:06:33,610 nga iterating mbi karaktere. 1352 01:06:33,610 --> 01:06:37,660 Në qoftë se një char c merr kapital A, I duan të shkojnë përpara dhe të bëjë këtë, 1353 01:06:37,660 --> 01:06:41,740 aq sa C është më e vogël se ose e barabartë në Z. e kapitalit dhe në çdo përsëritje 1354 01:06:41,740 --> 01:06:45,690 Dua të ardhura C, unë mund të tani në përputhje tim printf këtu 1355 01:06:45,690 --> 01:06:51,320 të themi, për qind C është për qind i përsëri, presje C. 1356 01:06:51,320 --> 01:06:57,200 >> Dhe tani, unë mund të shkojnë në drejtimin tjetër, hedh karakterin në mënyrë të qartë 1357 01:06:57,200 --> 01:06:58,500 në një numër të plotë. 1358 01:06:58,500 --> 01:07:00,560 Pra, përsëri, pse do të bëni këtë? 1359 01:07:00,560 --> 01:07:03,830 Kjo është një çuditshëm pak për të zgjidhur të llogarisin në aspektin e karaktereve. 1360 01:07:03,830 --> 01:07:07,430 >> Por në qoftë se ju e kuptoni se çfarë është ndodh nën kapuç, 1361 01:07:07,430 --> 01:07:08,430 nuk ka të vërtetë ka magji. 1362 01:07:08,430 --> 01:07:13,060 Ju jeni vetëm duke thënë, hej, kompjuteri japin me një ndryshore të quajtur C e tipit char. 1363 01:07:13,060 --> 01:07:16,520 Nisja atë të kapitalit A. And vëreni vetëm çështje quotes. 1364 01:07:16,520 --> 01:07:19,580 >> Për personazhet në C, kujtohet nga javën e kaluar, se ju përdorni këto apostrofa. 1365 01:07:19,580 --> 01:07:23,720 Për vargjet, për fjalë, frazat, ju përdorni kuotat e dyfishtë. 1366 01:07:23,720 --> 01:07:27,210 OK, kompjuteri, të vazhdojmë të bëjmë këtë, kështu që gjatë si karakter është më pak se 1367 01:07:27,210 --> 01:07:28,050 ose e barabartë me z. 1368 01:07:28,050 --> 01:07:32,640 Dhe unë e di nga tryezën time ascii që të gjithë nga këto kode ASCII janë puqur. 1369 01:07:32,640 --> 01:07:33,400 >> Nuk ka boshllëqe. 1370 01:07:33,400 --> 01:07:36,737 Pra, kjo është vetëm një anë Z, të ndara nga një numër secili. 1371 01:07:36,737 --> 01:07:38,820 Dhe atëherë unë mund të rrisim një char, në qoftë se unë me të vërtetë dëshironi. 1372 01:07:38,820 --> 01:07:40,390 Në fund të ditës, kjo është vetëm një numër. 1373 01:07:40,390 --> 01:07:41,030 Unë e di këtë. 1374 01:07:41,030 --> 01:07:43,670 Kështu që unë vetëm mund të marr me mend për të shtuar 1 për të. 1375 01:07:43,670 --> 01:07:46,940 >> Dhe pastaj kjo kohë, unë të shtypura c, dhe pastaj ekuivalente integrale. 1376 01:07:46,940 --> 01:07:50,170 Dhe unë nuk duhet edhe të hedhura qartë. 1377 01:07:50,170 --> 01:07:52,680 Unë mund të le printf dhe figura kompjuter gjëra jashtë, 1378 01:07:52,680 --> 01:07:57,300 kështu që tani, nëse unë të drejtuar të Ascii1./ascii1, 1379 01:07:57,300 --> 01:08:01,520 Unë të marrë të njëjtën gjë e saktë si. 1380 01:08:01,520 --> 01:08:04,530 >> Programi i kotë, though-- askënd do të në fakt të shkruar software 1381 01:08:04,530 --> 01:08:07,549 në mënyrë që të kuptoj, çfarë ishte numër që harta të A ose B, ose Z? 1382 01:08:07,549 --> 01:08:10,340 Ju jeni vetëm duke shkuar për të Google atë, ose shikoni atë deri në internet, apo të shikoni atë 1383 01:08:10,340 --> 01:08:11,650 në një rrëshqitje, apo të tjera si këto. 1384 01:08:11,650 --> 01:08:13,520 Pra, ku e bën këtë të vërtetë të dobishme? 1385 01:08:13,520 --> 01:08:15,960 >> E pra, duke folur për këtë rrëshqitje, vini re ka 1386 01:08:15,960 --> 01:08:20,890 një model i vërtetë këtu në mes të uppercase dhe të vogla që nuk ishte aksidentale. 1387 01:08:20,890 --> 01:08:23,760 Vini re se kapitali A është 65. 1388 01:08:23,760 --> 01:08:25,830 Vogle a është 97. 1389 01:08:25,830 --> 01:08:29,649 Dhe sa larg është rasti më i ulët një? 1390 01:08:29,649 --> 01:08:32,649 >> Pra, 65 është se si shumë hapa larg nga 97? 1391 01:08:32,649 --> 01:08:36,210 Pra, 97 minus 65 është 32. 1392 01:08:36,210 --> 01:08:37,910 Pra, një kapital është 65. 1393 01:08:37,910 --> 01:08:39,939 Nëse ju shtoni 32 të kësaj, ju merrni vogle a. 1394 01:08:39,939 --> 01:08:43,729 Dhe, në mënyrë ekuivalente, në qoftë se ju zbres 32, që ju të merrni përsëri në kryeqytetin A-- njëjtë me B 1395 01:08:43,729 --> 01:08:46,380 për pak b, C e madhe për pak c. 1396 01:08:46,380 --> 01:08:50,670 >> Të gjitha këto boshllëqe janë 32 veç e veç. 1397 01:08:50,670 --> 01:08:54,450 Tani, kjo do të duket të na lejojë që të të bëjë diçka si Microsoft Word, 1398 01:08:54,450 --> 01:08:57,729 ose Google Docs funksion, ku ju mund të zgjidhni çdo gjë e pastaj thonë: 1399 01:08:57,729 --> 01:09:00,520 ndryshojë të gjitha jo kapitale, ose ndryshojë të gjitha në rastin e sipërm, 1400 01:09:00,520 --> 01:09:03,840 ose të ndryshojë vetëm fjalën e parë të dënimit me rastin e sipërme. 1401 01:09:03,840 --> 01:09:07,390 Ne në fakt mund të bëjë diçka si kjo veten. 1402 01:09:07,390 --> 01:09:12,645 >> Më lejoni të shkojnë përpara dhe për të ruajtur një skedar këtu quhet germa 0.c. 1403 01:09:12,645 --> 01:09:15,770 Dhe le të shkojnë përpara dhe nxit një program që bën pikërisht këtë si më poshtë. 1404 01:09:15,770 --> 01:09:18,460 Kështu që përfshijnë bibliotekën CS50. 1405 01:09:18,460 --> 01:09:21,430 Dhe përfshijnë standarde I / O. 1406 01:09:21,430 --> 01:09:22,787 >> Dhe unë e di se kjo po vjen së shpejti. 1407 01:09:22,787 --> 01:09:24,870 Kështu që unë jam duke shkuar për të vënë atë në atje tashmë, string, 1408 01:09:24,870 --> 01:09:26,960 kështu që unë të kenë qasje në gjëra të tilla si Stirling, 1409 01:09:26,960 --> 01:09:29,620 dhe pastaj int pavlefshme kryesore, si zakonisht. 1410 01:09:29,620 --> 01:09:33,420 Dhe atëherë unë jam duke shkuar për të shkuar përpara dhe të bëjë vargjet merr marrë varg, 1411 01:09:33,420 --> 01:09:35,032 vetëm për të marrë një varg nga përdoruesit. 1412 01:09:35,032 --> 01:09:36,740 Dhe atëherë unë jam duke shkuar për të bëjë kontroll time mendje e shëndoshë. 1413 01:09:36,740 --> 01:09:40,510 Nëse string nuk ka null barabartë, atëherë është e sigurt për të vazhduar. 1414 01:09:40,510 --> 01:09:42,000 Dhe çfarë unë dua të bëj? 1415 01:09:42,000 --> 01:09:48,700 Unë do të iterate nga i barabartë me 0, dhe n deri në gjatësinë varg të s. 1416 01:09:48,700 --> 01:09:51,899 >> Dhe unë jam duke shkuar për të bërë këtë për aq kohë sa i është më pak se n dhe i plus plus. 1417 01:09:51,899 --> 01:09:55,060 Deri më tani, unë jam me të vërtetë vetëm huazuar ide nga më parë. 1418 01:09:55,060 --> 01:09:57,010 Dhe tani unë jam duke shkuar për të futur një degë. 1419 01:09:57,010 --> 01:09:59,635 >> Pra, mendoj se përsëri në Scratch, ku kemi pasur këto forks në rrugë, 1420 01:09:59,635 --> 01:10:05,110 dhe javën e kaluar në C. Unë do të E them këtë, në qoftë se karakteri i-th në s 1421 01:10:05,110 --> 01:10:09,250 është më e madhe se ose e e barabartë me rastin e një të ulët, 1422 01:10:09,250 --> 01:10:13,340 and-- në Scratch ju do të vërtetë thonë dhe, por në C ju thonë simbol, 1423 01:10:13,340 --> 01:10:19,830 ampersand-- dhe karakteri i-th në s është më pak se ose e barabartë për të ulur rast z, 1424 01:10:19,830 --> 01:10:21,780 le të bëjë diçka interesante. 1425 01:10:21,780 --> 01:10:27,020 Le të në fakt të shtypura nga një Karakteri pa NEWLINE 1426 01:10:27,020 --> 01:10:31,760 që është karakter në varg, karakteri i-th në varg. 1427 01:10:31,760 --> 01:10:37,420 >> Por le të shkojnë përpara dhe të zbres 32 nga ajo. 1428 01:10:37,420 --> 01:10:42,120 Tjetër në qoftë se karakteri në string se ne jemi duke kërkuar 1429 01:10:42,120 --> 01:10:45,950 nuk është mes pak a dhe pak z, të shkojnë përpara 1430 01:10:45,950 --> 01:10:48,610 dhe vetëm të shtypura it out pandryshuar. 1431 01:10:48,610 --> 01:10:50,840 Pra, ne kemi prezantuar ky simbol kllapa 1432 01:10:50,840 --> 01:10:53,560 për vargjet tona për të marrë më së i-th karakter në varg. 1433 01:10:53,560 --> 01:10:57,520 >> Unë kam shtuar disa logjikën e kushtëzuar, si Scratch në një javë e javës së kaluar, ku 1434 01:10:57,520 --> 01:10:59,880 Unë jam vetëm duke përdorur themelore im kuptim të asaj që është 1435 01:10:59,880 --> 01:11:01,130 ndodh nën kapuç. 1436 01:11:01,130 --> 01:11:04,190 Është karakteri i-th es më e madhe se ose e barabartë me një? 1437 01:11:04,190 --> 01:11:08,290 Si, a është 97 apo 98, ose 99, e kështu me radhë? 1438 01:11:08,290 --> 01:11:11,940 >> Por ajo është edhe më pak se ose e barabartë me vlerën e z vogle? 1439 01:11:11,940 --> 01:11:16,210 Dhe nëse po, çfarë do të thotë kjo linjë? 1440 01:11:16,210 --> 01:11:20,250 14, kjo është lloj i embrion i tërë idesë, 1441 01:11:20,250 --> 01:11:23,840 germa letrën me thjesht zbritur 32 prej saj, 1442 01:11:23,840 --> 01:11:29,370 në këtë rast, sepse unë e di, per se tabelë, si numrat e mi janë të përfaqësuara. 1443 01:11:29,370 --> 01:11:33,925 Pra, le të shkojnë përpara dhe të drejtuar këtë, pas përpilimit germa 0.c, 1444 01:11:33,925 --> 01:11:36,210 dhe drejtuar germa 0. 1445 01:11:36,210 --> 01:11:40,300 >> Le të shkruani diçka si Zamyla në të gjitha Fjala hyjnë. 1446 01:11:40,300 --> 01:11:42,780 Dhe tani ne kemi Zamyla në të gjitha uppercase. 1447 01:11:42,780 --> 01:11:45,050 Le të shkruani Rob në të gjitha Fjala. 1448 01:11:45,050 --> 01:11:46,674 Le të përpiqemi në të gjitha Jason Fjala. 1449 01:11:46,674 --> 01:11:48,590 Dhe do të vazhdojmë duke marrë kapitalizimit të detyruar. 1450 01:11:48,590 --> 01:11:50,960 Ka një bug të vogla që unë lloj nuk e parashikojnë. 1451 01:11:50,960 --> 01:11:54,050 Njoftim të shpejtë im i ri është duke përfunduar në të njëjtën linjë si emrat e tyre, 1452 01:11:54,050 --> 01:11:55,520 i cili ndjen një çrregullt pak. 1453 01:11:55,520 --> 01:11:59,170 >> Kështu që unë jam duke shkuar për të shkuar këtu, dhe në fakt, në fund të këtij programi 1454 01:11:59,170 --> 01:12:02,110 shtypura nga një karakter NEWLINE. 1455 01:12:02,110 --> 01:12:03,160 Kjo eshte e gjitha. 1456 01:12:03,160 --> 01:12:06,120 Me printf, ju nuk keni nevojë të të kalojë në variablat ose kodin format. 1457 01:12:06,120 --> 01:12:08,460 Ju mund të vërtetë vetëm të shtypura diçka si një newline. 1458 01:12:08,460 --> 01:12:13,529 >> Pra, le të shkojnë përpara dhe të bëjë germa 0 herë, përsëritje atë, Zamyla. 1459 01:12:13,529 --> 01:12:14,820 Dhe tani kjo është një prettier pak. 1460 01:12:14,820 --> 01:12:17,274 Tani, të shpejtë im është në linjë e saj të ri. 1461 01:12:17,274 --> 01:12:18,440 Pra, kjo është e gjitha mirë dhe të mirë. 1462 01:12:18,440 --> 01:12:19,910 Kështu që është një shembull i mirë. 1463 01:12:19,910 --> 01:12:22,700 Por unë nuk e bëj edhe domosdoshmërisht duhet të kodit të vështirë 32. 1464 01:12:22,700 --> 01:12:23,350 Ju e dini se çfarë? 1465 01:12:23,350 --> 01:12:26,350 Unë mund të say-- unë nuk kurrë mbani mend se çfarë është dallimi. 1466 01:12:26,350 --> 01:12:29,330 >> Por unë e di se në qoftë se unë kanë një germë të vogël, 1467 01:12:29,330 --> 01:12:34,430 Unë në thelb dua të zbres off çfarëdo që distanca është mes pak 1468 01:12:34,430 --> 01:12:39,160 një dhe të mëdha A, sepse në qoftë se unë të supozojmë se të gjithë nga letra e tjera janë të njëjtë, 1469 01:12:39,160 --> 01:12:41,045 që duhet të marrë punë të bërë. 1470 01:12:41,045 --> 01:12:42,670 Por në vend se të bëni këtë, ju e dini se çfarë? 1471 01:12:42,670 --> 01:12:44,240 Ka një mënyrë tjetër akoma. 1472 01:12:44,240 --> 01:12:48,090 >> Nëse kjo është germa 1.c-- nëse unë për të vënë atë në një skedar të veçantë. 1473 01:12:48,090 --> 01:12:51,030 le të mos germa 2.c si më poshtë. 1474 01:12:51,030 --> 01:12:53,060 Unë do të të vërtetë të pastruar këtë deri këtu. 1475 01:12:53,060 --> 01:12:57,420 Dhe në vend të pasur nevojë të di ose kujdesen për ato nivel të ulët 1476 01:12:57,420 --> 01:13:01,090 Detajet e zbatimit, unë jam në vend vetëm duke shkuar për të shkruar një karakter, 1477 01:13:01,090 --> 01:13:04,610 quote mbyll thonjëzat, qind C, dhe atëherë telefononi një funksion që 1478 01:13:04,610 --> 01:13:09,950 ekziston që merr një argument, i cili është një karakter, si kjo. 1479 01:13:09,950 --> 01:13:12,630 >> Kjo rezulton në C, nuk ka një tjetër telefonatë funksion 1480 01:13:12,630 --> 01:13:15,550 të sipërme, e cila si emrin e saj sugjeron merr një karakter 1481 01:13:15,550 --> 01:13:19,350 dhe e bën atë në rastin e saj e sipërme ekuivalente, dhe pastaj kthen 1482 01:13:19,350 --> 01:13:21,410 në mënyrë që printf mund të plug atë në atje. 1483 01:13:21,410 --> 01:13:25,484 Dhe kështu për të bërë këtë, edhe pse, unë nevojë për të futur një fotografi të tjera. 1484 01:13:25,484 --> 01:13:28,400 Ajo rezulton se ka një tjetër fotografi që ju do të dini vetëm nga klasa, 1485 01:13:28,400 --> 01:13:33,020 ose një tekst, ose një në internet reference, i quajtur type.h. C 1486 01:13:33,020 --> 01:13:38,570 >> Pra, nëse unë shtoj se deri në mesin e kokë tim fotografi, dhe tani ri-hartojnë këtë program, 1487 01:13:38,570 --> 01:13:43,040 capitalize2, ./capitalize2 Enter. 1488 01:13:43,040 --> 01:13:46,690 Le të shkruani në Zamyla në të gjitha të vogla, ende punon njëjtë. 1489 01:13:46,690 --> 01:13:48,040 Por ju e dini se çfarë? 1490 01:13:48,040 --> 01:13:55,590 Ajo rezulton se të sipërme ka disa funksionalitetin tjetër. 1491 01:13:55,590 --> 01:13:58,410 >> Dhe më lejoni të prezantoj këtë urdhëroj këtu, lloj dyluftimi në ajër 1492 01:13:58,410 --> 01:14:00,250 emrin, por njeriu për manual. 1493 01:14:00,250 --> 01:14:03,960 Ajo rezulton se shumica e kompjuterëve Linux, si ne jemi duke përdorur here-- operativ Linux 1494 01:14:03,960 --> 01:14:06,270 system-- kanë një komandë quajtur njeri, i cili thotë: 1495 01:14:06,270 --> 01:14:08,530 hey, kompjuter, jepni manual e kompjuterit. 1496 01:14:08,530 --> 01:14:10,680 Qfare deshironi kërkoni në këtë manual? 1497 01:14:10,680 --> 01:14:13,840 >> Unë dua të shikoni funksionin quajtur të sipërme, Enter. 1498 01:14:13,840 --> 01:14:16,070 Dhe kjo është pak i fshehtë për të lexuar ndonjëherë. 1499 01:14:16,070 --> 01:14:18,780 Por vini re ne jemi në manual programues Linux. 1500 01:14:18,780 --> 01:14:19,530 Dhe kjo është e gjitha tekst. 1501 01:14:19,530 --> 01:14:21,905 Dhe vini re se nuk është emri i funksionit deri këtu. 1502 01:14:21,905 --> 01:14:25,030 Ajo rezulton se ka një kushëri të quajtur për të ulur, i cili bën të kundërtën. 1503 01:14:25,030 --> 01:14:29,710 Dhe njoftimi në përmbledhje, për të përdorur këtë funksionojë faqen njeri, kështu që të flasin, 1504 01:14:29,710 --> 01:14:32,220 është thënë mua se unë duhet të përfshijë c type.h. 1505 01:14:32,220 --> 01:14:33,630 Dhe e dija se nga praktika. 1506 01:14:33,630 --> 01:14:36,210 >> Këtu, ajo është treguar mua dy prototipa për funksionin, 1507 01:14:36,210 --> 01:14:39,070 kështu që nëse unë ndonjëherë të dëshironi të përdorni këtë Unë e di se çfarë ata e marrin si të dhëna, 1508 01:14:39,070 --> 01:14:40,652 dhe atë që ata kthehen si output. 1509 01:14:40,652 --> 01:14:42,360 Dhe pastaj, nëse kam lexuar përshkrimi, unë shoh 1510 01:14:42,360 --> 01:14:44,820 më në detaje çfarë funksioni. 1511 01:14:44,820 --> 01:14:48,100 Por më e rëndësishmja, në qoftë se I shikoni nën vlerën e kthimit, 1512 01:14:48,100 --> 01:14:51,710 ai thotë se vlera e kthyer është atë të letrës konvertuar, 1513 01:14:51,710 --> 01:14:57,880 ose C, të dhëna origjinale, në qoftë se konvertimi nuk ishte e mundur. 1514 01:14:57,880 --> 01:15:01,992 >> Me fjalë të tjera, për të sipërme do të përpiqet për të kthyer një letër për rastin e sipërme. 1515 01:15:01,992 --> 01:15:03,450 Dhe nëse është kështu, ajo do të kthejë atë. 1516 01:15:03,450 --> 01:15:07,010 Por në qoftë se nuk mund të për disa reason-- ndoshta është rasti tashmë e sipërme, 1517 01:15:07,010 --> 01:15:09,550 ndoshta kjo është një pikë thirrje apo ndonjë punctuation-- tjera 1518 01:15:09,550 --> 01:15:12,200 ajo është vetëm do të kthehen C origjinale, 1519 01:15:12,200 --> 01:15:17,340 që do të thotë unë mund të bëjë kodin tim projektuar mirë si më poshtë. 1520 01:15:17,340 --> 01:15:20,580 >> Unë nuk kanë nevojë për të gjithë këto rreshta të kodit mallkuar. 1521 01:15:20,580 --> 01:15:22,610 Të gjitha linjat e kam vetëm theksuar mund të 1522 01:15:22,610 --> 01:15:28,700 të shembur në vetëm një të thjeshtë line, e cila është this-- printf për qind 1523 01:15:28,700 --> 01:15:33,510 c për S kllapa sipërme i. 1524 01:15:33,510 --> 01:15:36,090 Dhe kjo do të ishte një shembull i dizajnit të mirë. 1525 01:15:36,090 --> 01:15:40,040 >> Pse zbatuar në 7 ose 8 rreshta e kodit, çfarëdo qoftë ajo ishte I vetëm 1526 01:15:40,040 --> 01:15:44,960 fshihet, kur ju mund të rënies në vend të gjithë këtë logjikë dhe vendimmarrje 1527 01:15:44,960 --> 01:15:49,620 në një linjë të vetme, 13 tani, që mbështetet në një bibliotekë function-- 1528 01:15:49,620 --> 01:15:53,430 një funksion që vjen me C, por bën pikërisht ajo që ju doni të bëni. 1529 01:15:53,430 --> 01:15:55,295 Dhe, sinqerisht, edhe në qoftë se ajo nuk ka ardhur me C, 1530 01:15:55,295 --> 01:15:58,880 ju mund të zbatojë atë vetë, si ne kemi parë, me të marrë int negative 1531 01:15:58,880 --> 01:16:01,700 dhe për të marrë pozitiv int javën e kaluar, si dhe. 1532 01:16:01,700 --> 01:16:03,470 >> Ky kod është tani shumë më i lexueshëm. 1533 01:16:03,470 --> 01:16:06,670 Dhe, me të vërtetë, në qoftë se ne lëvizni lart, duken sa më kompakte 1534 01:16:06,670 --> 01:16:08,360 ky version i programit tim është. 1535 01:16:08,360 --> 01:16:11,230 Kjo është një e rëndë pak të lartë tani, me të gjitha këto përfshin. 1536 01:16:11,230 --> 01:16:14,380 Por kjo është në rregull, sepse tani unë jam duke qëndruar mbi supet e programuesit 1537 01:16:14,380 --> 01:16:15,300 para meje. 1538 01:16:15,300 --> 01:16:18,440 Dhe kushdo që ishte ai që zbatuar të sipërme të vërtetë 1539 01:16:18,440 --> 01:16:21,470 më bëri një nder, ashtu si ai që zbatuar Stirling vërtetë 1540 01:16:21,470 --> 01:16:24,790 më bëri një nder disa kohë më parë. 1541 01:16:24,790 --> 01:16:26,970 Dhe kështu që tani ne kemi një Programi më të mirë të projektimit 1542 01:16:26,970 --> 01:16:31,680 që zbaton të njëjtën logjikë të saktë. 1543 01:16:31,680 --> 01:16:35,580 >> Duke folur për Stirling, le të shkoj përpara dhe të bëjë këtë. 1544 01:16:35,580 --> 01:16:38,320 Më lejoni të shkojnë përpara dhe për të shpëtuar kjo skedë si stirling.c. 1545 01:16:38,320 --> 01:16:43,255 Dhe kjo rezulton, ne mund të zhvishem përsëri një shtresë tjetër shumë e thjeshtë tani. 1546 01:16:43,255 --> 01:16:45,630 Unë jam duke shkuar për të shkuar përpara dhe Kryetari i grupit parlamentar up një tjetër program në kryesore 1547 01:16:45,630 --> 01:16:49,759 këtu se thjesht ri-zbaton gjatësia string si më poshtë. 1548 01:16:49,759 --> 01:16:52,300 Kështu që këtu është një linjë e kodit që merr me një varg nga përdoruesit. 1549 01:16:52,300 --> 01:16:53,910 Ne vazhdojmë të përdorur këtë përsëri dhe përsëri. 1550 01:16:53,910 --> 01:16:58,900 Më lejoni të jap vetes një ndryshore të quajtur n të tipit int që ruan një numër. 1551 01:16:58,900 --> 01:17:02,490 >> Dhe më lejoni të shkoj përpara dhe të bëjë logjikën e mëposhtme. 1552 01:17:02,490 --> 01:17:15,610 Ndërsa karakteri n-të në s bën Nuk backslash barabartë 0, të shkojnë përpara 1553 01:17:15,610 --> 01:17:17,930 dhe rritje n. 1554 01:17:17,930 --> 01:17:23,506 Dhe pastaj të shtypura nga printf për qind ni. 1555 01:17:23,506 --> 01:17:29,200 I thonë se ky program këtu, pa e quajtur gjatësi varg, 1556 01:17:29,200 --> 01:17:31,150 shifra se gjatësinë e një varg. 1557 01:17:31,150 --> 01:17:34,600 >> Dhe magjia është plotësisht encapsulated në linjë 8 1558 01:17:34,600 --> 01:17:39,830 këtu me atë që duket si sintaksë të re, kjo backslash 0 në thonjëza të vetme. 1559 01:17:39,830 --> 01:17:41,360 Por pse është kjo? 1560 01:17:41,360 --> 01:17:44,100 E pra, e konsiderojnë atë që ka qenë duke shkuar në të gjithë këtë kohë. 1561 01:17:44,100 --> 01:17:47,990 >> Dhe si një mënjanë, para se të harroj, të kuptojë shumë, se përveç faqet njeriu 1562 01:17:47,990 --> 01:17:50,920 që vijnë me një tipik sistem Linux si CS50 IDE, 1563 01:17:50,920 --> 01:17:53,770 kuptojnë se ne, të Stafi kurs të, kanë edhe 1564 01:17:53,770 --> 01:17:56,030 bëri një version të internetit e kësaj ideje të njëjtë të quajtur 1565 01:17:56,030 --> 01:17:59,940 reference.cs50.net, e cila ka të gjitha ato faqe njëjti njeri, 1566 01:17:59,940 --> 01:18:02,020 të gjithë të njëjtën dokumentacionit, si dhe 1567 01:18:02,020 --> 01:18:05,730 një kuti të vogël në krye që lejon ju për të kthyer të gjitha të drejtë 1568 01:18:05,730 --> 01:18:09,025 Gjuha e errët në më pak të rehatshme mode, ku ne, personeli mësimor, 1569 01:18:09,025 --> 01:18:12,150 kanë kaluar nëpër dhe u përpoq për të lehtësuar disa të gjuhës që të mbani gjërat 1570 01:18:12,150 --> 01:18:14,830 përqendruar në idetë, dhe jo disa prej teknike. 1571 01:18:14,830 --> 01:18:20,070 Pra, mbani në mend, reference.cs50.net si një burim si. 1572 01:18:20,070 --> 01:18:23,800 >> Por pse e bën punën gjatësi string në mënyrën se si unë propozoi një moment më parë? 1573 01:18:23,800 --> 01:18:25,160 Ja emri Zamyla përsëri. 1574 01:18:25,160 --> 01:18:27,690 Dhe këtu është emri Zamyla-së boxed në, si unë të vazhdojmë të bëjmë, 1575 01:18:27,690 --> 01:18:31,360 për të pikturuar një foto e të qenit, me të vërtetë, vetëm një sekuencë e karaktereve. 1576 01:18:31,360 --> 01:18:34,260 Por Zamyla nuk ekziston në mënyrë të izoluar, në një program. 1577 01:18:34,260 --> 01:18:37,420 >> Kur ju shkruani dhe të drejtuar një program, ju jeni duke përdorur Mac apo PC tuaj 1578 01:18:37,420 --> 01:18:40,010 si kujtim, ose RAM mënyrë që të flasin. 1579 01:18:40,010 --> 01:18:42,620 Dhe ju mund të mendoni kompjuterin tuaj si ka 1580 01:18:42,620 --> 01:18:44,730 shumë gigabajt të memories këto ditë. 1581 01:18:44,730 --> 01:18:47,700 Dhe një koncert të thotë miliarda, kështu miliarda bytes. 1582 01:18:47,700 --> 01:18:48,910 >> Por le të Rewind në kohë. 1583 01:18:48,910 --> 01:18:51,530 Dhe mendoj se ne jemi duke përdorur një kompjuter të vërtetë e vjetër që 1584 01:18:51,530 --> 01:18:55,150 ka vetëm 32 byte memorje. 1585 01:18:55,150 --> 01:18:59,310 Unë mund të, në ekranin e kompjuterit tim, thjesht të tërheqë këtë, si më poshtë. 1586 01:18:59,310 --> 01:19:05,240 >> Unë thjesht mund të them se tim kompjuter ka gjithë këtë kujtesë. 1587 01:19:05,240 --> 01:19:08,830 Dhe kjo është si një shkop të kujtesës, në qoftë se ju kujtohet foto tonë nga hera e fundit. 1588 01:19:08,830 --> 01:19:11,670 Dhe në qoftë se unë vetëm të ndarë këtë në kohë të mjaftueshme, 1589 01:19:11,670 --> 01:19:15,040 I thonë se unë kam 32 bytes e kujtesës në ekran. 1590 01:19:15,040 --> 01:19:18,239 >> Tani, në të vërtetë, unë vetëm mund të nxjerrë deri më tani në këtë ekran këtu. 1591 01:19:18,239 --> 01:19:20,280 Kështu që unë jam duke shkuar për të shkuar përpara, dhe vetëm nga Konventa, 1592 01:19:20,280 --> 01:19:24,050 nxjerrë kujtesën e kompjuterit tim si grid, jo vetëm si një vijë e drejtë. 1593 01:19:24,050 --> 01:19:28,190 Në mënyrë të veçantë, unë pretendojnë tani që këtë rrjet, kjo 8 nga 4 grid, 1594 01:19:28,190 --> 01:19:31,800 vetëm përfaqëson të gjithë 32 bytes e kujtesës në dispozicion në Mac tim, 1595 01:19:31,800 --> 01:19:33,030 ose në dispozicion në PC tim. 1596 01:19:33,030 --> 01:19:34,780 Dhe ata janë duke i dhënë në të dy linja, vetëm 1597 01:19:34,780 --> 01:19:38,030 sepse kjo i përshtatet më shumë në ekran. 1598 01:19:38,030 --> 01:19:40,800 Por kjo është byte parë. 1599 01:19:40,800 --> 01:19:41,990 Kjo është bajt dytë. 1600 01:19:41,990 --> 01:19:43,300 Kjo është byte tretë. 1601 01:19:43,300 --> 01:19:45,310 >> Dhe kjo është byte 32. 1602 01:19:45,310 --> 01:19:52,910 Ose, në qoftë se ne mendojmë si një kompjuter shkencëtar, kjo është bajt 0, 1, 2, 3, 31. 1603 01:19:52,910 --> 01:19:55,950 Kështu që ju duhet 0 në 31, në qoftë se të fillojë numërimi në 0. 1604 01:19:55,950 --> 01:19:59,830 >> Pra, nëse ne përdorim një program se thirrjet merrni string, 1605 01:19:59,830 --> 01:20:05,280 dhe ne kemi marrë një varg nga njeriu si I e quajtur Zamyla, Z-A-M-Y-L-A, 1606 01:20:05,280 --> 01:20:09,430 si në botë bën mbani kompjuterin udhë e cila byte, 1607 01:20:09,430 --> 01:20:12,230 e cila copë e kujtesës, takon cilat string? 1608 01:20:12,230 --> 01:20:16,270 Me fjalë të tjera, në qoftë se ne të vazhdojë të shtypni një emër tjetër në kompjuter, 1609 01:20:16,270 --> 01:20:19,890 si ky Andi, duke e quajtur marrë string për herë të dytë, 1610 01:20:19,890 --> 01:20:23,030 A-N-D-I duhet të përfundojë deri në memorie kompjuteri, si dhe. 1611 01:20:23,030 --> 01:20:23,850 Por si? 1612 01:20:23,850 --> 01:20:29,700 >> E pra, ajo rezulton se nën të individualitet, çfarë bën kur C ruajtjen strings 1613 01:20:29,700 --> 01:20:35,080 se llojet e njeriut, ose atë vijnë nga ndonjë burim tjetër, është ajo 1614 01:20:35,080 --> 01:20:39,190 përcakton fundin e tyre me një backslash veçantë character-- 1615 01:20:39,190 --> 01:20:44,750 0, e cila është vetëm një mënyrë të veçantë për të thënë 80 bit në një rresht. 1616 01:20:44,750 --> 01:20:47,950 >> Pra A-- ky është kujtojnë numrin 97. 1617 01:20:47,950 --> 01:20:51,770 Pra, disa model i 8 bit paraqet numrin decimal 97. 1618 01:20:51,770 --> 01:20:58,070 Kjo backslash 0 është fjalë për fjalë numri 0, nul alias, N-U-L, ndryshe nga më parë, 1619 01:20:58,070 --> 01:20:59,630 N-U-L-L, të cilën kemi biseduar rreth. 1620 01:20:59,630 --> 01:21:05,700 Por tani për tani, vetëm e di se kjo backslash 0 është vetëm 80 bit në një rresht. 1621 01:21:05,700 --> 01:21:09,810 >> Dhe kjo është vetëm kjo linjë në rërë që thotë se asgjë në të majtë 1622 01:21:09,810 --> 01:21:12,610 i takon një varg, apo një lloj të dhënave. 1623 01:21:12,610 --> 01:21:15,480 Dhe çdo gjë në të djathtë takon diçka tjetër. 1624 01:21:15,480 --> 01:21:17,440 emri Andi, ndërkohë, e cila sapo visually 1625 01:21:17,440 --> 01:21:21,310 ndodh për të përfunduar për në linjën tjetër, por kjo është vetëm një detaj estetike, 1626 01:21:21,310 --> 01:21:23,990 në mënyrë të ngjashme është nul ndërpritet. 1627 01:21:23,990 --> 01:21:29,290 >> Kjo është një varg i një karaktere A-N-D-I, plus një karakter të fshehtë i pestë, 1628 01:21:29,290 --> 01:21:33,560 të gjitha 0 bit, që vetëm Në kufirin në fund të emrit të andi si. 1629 01:21:33,560 --> 01:21:37,120 Dhe në qoftë se ne e quajmë të string për të tretën herë në kompjuter për të marrë një varg të tillë 1630 01:21:37,120 --> 01:21:44,210 Maria, M-A-R-I-A, në mënyrë të ngjashme është Maria së Emri nul ndërpritet me backslash 0. 1631 01:21:44,210 --> 01:21:47,170 >> Kjo është krejtësisht e ndryshme nga se si një kompjuter do të zakonisht 1632 01:21:47,170 --> 01:21:51,850 ruajtur një numër të plotë ose një noton, ose tjetër Llojet e të dhënave ende, sepse kujtojnë, 1633 01:21:51,850 --> 01:21:57,420 një numër i plotë është zakonisht 32 bit, ose 4 bytes, ose ndoshta edhe 64 bit, 1634 01:21:57,420 --> 01:21:59,100 ose tetë bytes. 1635 01:21:59,100 --> 01:22:02,620 Por shumë primitives në një kompjuter në një gjuhë programimi 1636 01:22:02,620 --> 01:22:05,550 kanë një numër të caktuar të bytes nën hood-- 1637 01:22:05,550 --> 01:22:08,100 ndoshta 1, ndoshta 2, ndoshta 4, ndoshta 8. 1638 01:22:08,100 --> 01:22:13,250 >> Por vargjet, me dashje, kanë një Numri dinamike e karaktereve. 1639 01:22:13,250 --> 01:22:16,980 Ju nuk e dini që më parë, deri në llojet e njeriut në Z-A-M-Y-L-A, 1640 01:22:16,980 --> 01:22:21,400 ose M-A-R-I-A, ose A-N-D-I. Ju nuk e dini sa herë përdoruesi është duke shkuar për të goditur 1641 01:22:21,400 --> 01:22:22,070 tastierë. 1642 01:22:22,070 --> 01:22:26,490 Prandaj, ju nuk e dini se si shumë karaktere paraprakisht 1643 01:22:26,490 --> 01:22:27,540 ju do të jeni nevojë. 1644 01:22:27,540 --> 01:22:31,840 >> Dhe kështu C vetëm lloji i lë si një Breadcrumb sekret nën kapuç 1645 01:22:31,840 --> 01:22:32,960 ne fund te vargut. 1646 01:22:32,960 --> 01:22:39,280 Pas ruajtjes Z-A-M-Y-L-A në memories, ajo gjithashtu vetëm vë ekuivalentin 1647 01:22:39,280 --> 01:22:40,210 e një periudhë. 1648 01:22:40,210 --> 01:22:45,060 Në fund të dënimit, kjo e vë 80 pjesë, në mënyrë që 1649 01:22:45,060 --> 01:22:49,120 të mbani mend se ku Zamyla fillon dhe mbaron. 1650 01:22:49,120 --> 01:22:51,490 >> Pra, çfarë është lidhja, pra, për këtë program? 1651 01:22:51,490 --> 01:22:55,190 Ky program këtu, Stirling, është thjesht një mekanizëm 1652 01:22:55,190 --> 01:22:57,970 për marrjen e një varg nga ana e përdoruesit, linjë 6. 1653 01:22:57,970 --> 01:23:01,160 Linja 7, unë deklaroj një ndryshore quajtur n dhe vendosur ajo e barabartë me 0. 1654 01:23:01,160 --> 01:23:08,680 >> Dhe pastaj në linjë 8, unë thjesht e pyeti Pyetja, ndërsa karakteri N-th bën 1655 01:23:08,680 --> 01:23:12,120 jo të barabartë të gjithë 0 bits-- me fjalë të tjera, nuk ka 1656 01:23:12,120 --> 01:23:14,500 barabartë kjo special Karakteri, backslash 0, e cila 1657 01:23:14,500 --> 01:23:18,470 ishte vetëm se character-- veçantë nul të shkojnë përpara dhe vetëm ardhura n. 1658 01:23:18,470 --> 01:23:21,460 >> Dhe vazhdojmë të bëjmë atë, dhe për të mbajtur duke e bërë atë, dhe për të mbajtur duke bërë atë. 1659 01:23:21,460 --> 01:23:23,430 Dhe kështu, edhe pse në e kaluara ne kemi përdorur i, 1660 01:23:23,430 --> 01:23:25,181 është e përkryer gjobë semantikisht për të përdorur n, 1661 01:23:25,181 --> 01:23:27,430 në qoftë se ju jeni vetëm duke u përpjekur për numërimin këtë herë me qëllim, 1662 01:23:27,430 --> 01:23:28,720 dhe vetëm dëshironi të telefononi atë n. 1663 01:23:28,720 --> 01:23:34,720 Pra, kjo vetëm e mban duke i kërkuar pyetjen, është karakteri N-th e s të gjitha 0s? 1664 01:23:34,720 --> 01:23:38,470 Nëse jo, shikoni me sy tjetër, shikoni të ardhshëm, të shohim në një tjetër, 1665 01:23:38,470 --> 01:23:39,460 shikoni të ardhshëm. 1666 01:23:39,460 --> 01:23:45,540 >> Por, sa më shpejt që ju shihni backslash 0, kjo linjë loop-- 9 nëpërmjet 11-- ndalet. 1667 01:23:45,540 --> 01:23:49,640 Ju thyer nga lak, ndërsa, duke lënë brenda asaj n ndryshueshme 1668 01:23:49,640 --> 01:23:54,530 një akuzë total prej të gjitha të karaktere në vargun e keni parë, 1669 01:23:54,530 --> 01:23:55,660 duke shtypjen atë. 1670 01:23:55,660 --> 01:23:56,760 Pra, le të provoni këtë. 1671 01:23:56,760 --> 01:23:59,500 >> Më lejoni të shkojnë përpara dhe, pa duke përdorur funksionin Stirling, 1672 01:23:59,500 --> 01:24:04,240 por vetëm duke përdorur versionin tim homegrown këtu quhet Stirling, më lejoni të shkoj përpara 1673 01:24:04,240 --> 01:24:07,700 dhe të drejtuar Stirling, shkruani diçka si Zamyla, të cilën unë e di që më parë 1674 01:24:07,700 --> 01:24:08,670 është gjashtë karaktere. 1675 01:24:08,670 --> 01:24:10,080 Le të shohim nëse ajo punon. 1676 01:24:10,080 --> 01:24:10,920 Në të vërtetë, kjo është gjashtë. 1677 01:24:10,920 --> 01:24:15,257 Le të përpiqemi me Rob, tre karaktere, tre karaktere, si edhe, dhe kështu me radhë. 1678 01:24:15,257 --> 01:24:17,340 Pra, kjo është e gjitha që po ndodh në nën kapuç. 1679 01:24:17,340 --> 01:24:19,548 Dhe vini re lidhjet, pastaj me jave parë 1680 01:24:19,548 --> 01:24:22,370 e klasës, ku kemi biseduar për diçka si abstraksion, 1681 01:24:22,370 --> 01:24:26,960 e cila është vetëm ky layering e ideve, ose kompleksitetin, në krye të parimeve themelore. 1682 01:24:26,960 --> 01:24:30,710 Këtu, ne jemi lloj i kërkuar nën kapuç e Stirling, 1683 01:24:30,710 --> 01:24:33,510 kështu që të flasin, të kuptoj se, si do të zbatohet? 1684 01:24:33,510 --> 01:24:35,232 >> Dhe ne mund të ri-zbatuar atë vetë. 1685 01:24:35,232 --> 01:24:37,440 Por ne jemi duke shkuar kurrë të ri-zbatuar Stirling. 1686 01:24:37,440 --> 01:24:39,780 Ne jemi vetëm duke shkuar për të përdorin Stirling në mënyrë 1687 01:24:39,780 --> 01:24:42,100 që në fakt të marrë disa strings gjatësi. 1688 01:24:42,100 --> 01:24:44,200 >> Por nuk ka asnjë magji nën kapuç. 1689 01:24:44,200 --> 01:24:46,716 Nëse ju e dini se nën individualitet, një varg 1690 01:24:46,716 --> 01:24:48,090 është vetëm një sekuencë e karaktereve. 1691 01:24:48,090 --> 01:24:51,090 Dhe kjo sekuencë e karaktere të gjithë mund të adresohen numerikisht 1692 01:24:51,090 --> 01:24:53,330 me kllapa 0, kllapa 1, 2 kllapa, dhe ju 1693 01:24:53,330 --> 01:24:57,420 e di që në fund të një varg është një karakter të veçantë, ju mund të kuptoj se 1694 01:24:57,420 --> 01:25:01,710 se si të bëjë më asgjë në një program, pasi të gjitha ajo boils poshtë për 1695 01:25:01,710 --> 01:25:03,400 është lexim dhe shkrim kujtesës. 1696 01:25:03,400 --> 01:25:06,130 Kjo është, duke ndryshuar dhe duke kërkuar në kujtesë, ose duke lëvizur gjërat 1697 01:25:06,130 --> 01:25:10,940 rreth në kujtesë, shtypjen gjëra në ekran, e kështu me radhë. 1698 01:25:10,940 --> 01:25:14,800 >> Pra, tani le të përdorim këtë newfound të kuptuarit e asaj që në fakt vargjet 1699 01:25:14,800 --> 01:25:17,910 janë nën kapuç, dhe zhvishem përsëri një shtresë tjetër 1700 01:25:17,910 --> 01:25:20,080 se deri tani ne kemi janë injoruar krejtësisht. 1701 01:25:20,080 --> 01:25:22,650 Në veçanti, çdo kohë ne kemi zbatuar një program, 1702 01:25:22,650 --> 01:25:25,930 ne kemi pasur këtë linjë të kodit pranë krye deklaruar kryesore. 1703 01:25:25,930 --> 01:25:27,810 Dhe ne kemi specifikuar pavlefshme int kryesore. 1704 01:25:27,810 --> 01:25:31,240 >> Dhe kjo pavlefshëm brenda kllapa ka qenë duke thënë gjithë këtë kohë që kryesore 1705 01:25:31,240 --> 01:25:33,440 vetë nuk ka marrë ndonjë argumente. 1706 01:25:33,440 --> 01:25:36,210 Çdo input që kryesor është do të marrë nga përdoruesi 1707 01:25:36,210 --> 01:25:39,020 duhet të vijë nga disa të tjera mekanizëm, si get int, 1708 01:25:39,020 --> 01:25:42,040 ose të merrni noton, ose të merrni varg, apo ndonjë funksion tjetër. 1709 01:25:42,040 --> 01:25:44,710 Por kjo rezulton se Kur ju shkruani një program, 1710 01:25:44,710 --> 01:25:47,690 në të vërtetë ju mund të specifikoni se ky program do të 1711 01:25:47,690 --> 01:25:51,730 marrë inpute nga njeriu në vetë rreshtin e komandave. 1712 01:25:51,730 --> 01:25:56,310 >> Me fjalë të tjera, edhe pse deri tani kanë qenë në drejtimin e vetëm ./hello përshëndetje 1713 01:25:56,310 --> 01:26:00,312 ose programe të ngjashme, të gjithë e programe të tjera që ne kemi qenë duke përdorur, 1714 01:26:00,312 --> 01:26:02,770 që ne vetë nuk ka shkruar, kanë qenë duke marrë, me sa duket, 1715 01:26:02,770 --> 01:26:05,210 command line argumente të gjëra të tilla si make. 1716 01:26:05,210 --> 01:26:07,450 Ju thoni diçka si make, dhe pastaj një fjalë të dytë. 1717 01:26:07,450 --> 01:26:10,950 Ose tingëllimë, që thonë tingëllimë, dhe pastaj një fjalë të dytë, emri i një file. 1718 01:26:10,950 --> 01:26:14,410 >> Ose edhe RM, ose CP, si ju mund të kanë parë ose përdorur tashmë 1719 01:26:14,410 --> 01:26:15,880 të fshijnë ose kopje fotografi. 1720 01:26:15,880 --> 01:26:18,920 Të gjithë ata që marrin të ashtuquajturit command line argumente të 1721 01:26:18,920 --> 01:26:21,130 fjalë të tjera në ftim terminal. 1722 01:26:21,130 --> 01:26:23,260 Por deri tani, ne vetë nuk kanë pasur 1723 01:26:23,260 --> 01:26:27,080 ky luks të marrë të dhëna nga Përdorues kur ai ose ajo në fakt shkon 1724 01:26:27,080 --> 01:26:29,120 programi vetë në rreshtin e komandave. 1725 01:26:29,120 --> 01:26:33,710 >> Por ne mund ta bëjmë këtë duke ri-deklaruar kryesore duke shkuar përpara, jo si ka 1726 01:26:33,710 --> 01:26:36,750 pavlefshme në kllapa, por këto dy argumente 1727 01:26:36,750 --> 01:26:40,600 instead-- parë një numër të plotë, dhe diçka e dytë 1728 01:26:40,600 --> 01:26:44,170 e re, diçka që ne jemi duke shkuar për të thirrur një grup, diçka e ngjashme në frymë 1729 01:26:44,170 --> 01:26:49,220 me atë që pamë në Scratch si një listë, por një grup i vargjeve, si ne së shpejti do të shohim. 1730 01:26:49,220 --> 01:26:51,790 Por le të shohim këtë duke Për shembull, para se ne 1731 01:26:51,790 --> 01:26:53,690 dallojë saktësisht se çfarë do të thotë. 1732 01:26:53,690 --> 01:26:56,520 >> Pra, nëse unë shkoj në CS50 IDE këtu, unë kam shkuar përpara 1733 01:26:56,520 --> 01:27:01,840 dhe ka deklaruar në një skedar të quajtur argv0.c template në vijim. 1734 01:27:01,840 --> 01:27:04,120 Dhe vini re e vetmja gjë kjo është e ndryshme deri tani 1735 01:27:04,120 --> 01:27:08,570 është që unë kam ndryshuar pavlefshme të int argc string argv kllapa të hapur, të ngushtë 1736 01:27:08,570 --> 01:27:09,070 kllapa. 1737 01:27:09,070 --> 01:27:11,730 Dhe vini re tani për tani, nuk ka asgjë brenda këtyre kllapa. 1738 01:27:11,730 --> 01:27:12,620 >> Nuk ka asnjë numër. 1739 01:27:12,620 --> 01:27:15,070 Dhe nuk ka asnjë i, ose n, apo ndonjë letër tjetër. 1740 01:27:15,070 --> 01:27:17,010 Unë jam vetëm duke përdorur kllapa katrore për tani, 1741 01:27:17,010 --> 01:27:19,510 për arsye ne do të vijnë kthehet në një moment të vetëm. 1742 01:27:19,510 --> 01:27:21,330 >> Dhe tani ajo që unë jam duke shkuar për të bërë është kjo. 1743 01:27:21,330 --> 01:27:26,680 Nëse argc barabartë barabartë 2-- dhe kujtojnë se është e barabartë është e barabartë 1744 01:27:26,680 --> 01:27:30,040 është operatori barazia krahasuar të majtë dhe të djathtë për barazi. 1745 01:27:30,040 --> 01:27:31,790 Kjo nuk është detyrë operator, i cili është 1746 01:27:31,790 --> 01:27:36,510 shenja e vetme të barabartë, që do të thotë kopje nga e drejta për të majtë disa vlera. 1747 01:27:36,510 --> 01:27:42,840 >> Nëse argc barabartë është e barabartë me 2, unë dua të të themi, printf, hello, për qind, linjë e re, 1748 01:27:42,840 --> 01:27:47,340 dhe pastaj plug in-- dhe këtu është e re bracket trick-- argv 1, për arsye 1749 01:27:47,340 --> 01:27:48,840 që ne do të kthehen në një moment. 1750 01:27:48,840 --> 01:27:52,110 Tjetër në qoftë se nuk ka argc të barabartë 2, ju e dini se çfarë? 1751 01:27:52,110 --> 01:27:57,400 Le të shkojnë përpara dhe, si zakonisht, të shtypura nga Hello World pa zëvendësim. 1752 01:27:57,400 --> 01:28:02,710 >> Pra, kjo do të duket se në qoftë se argc, e cila qëndron për numërimin e argumentit, është e barabartë me 2, 1753 01:28:02,710 --> 01:28:04,740 Unë jam duke shkuar për të shkruar përshëndetje diçka ose të tjera. 1754 01:28:04,740 --> 01:28:07,560 Përndryshe, si parazgjedhje, unë jam do të shtypura përshëndetje botën. 1755 01:28:07,560 --> 01:28:08,770 Pra, çfarë do të thotë kjo? 1756 01:28:08,770 --> 01:28:15,550 >> E pra, më lejoni të shkojnë përpara dhe për të shpëtuar këtë fotografi, dhe pastaj të bëjë të argv0, 1757 01:28:15,550 --> 01:28:18,940 dhe pastaj ./argv0, Enter. 1758 01:28:18,940 --> 01:28:20,300 Dhe ai thotë Hello World. 1759 01:28:20,300 --> 01:28:21,260 Tani, pse është kjo? 1760 01:28:21,260 --> 01:28:24,730 >> E pra, ajo rezulton çdo kohë që ju drejtuar një program në rreshtin e komandave, 1761 01:28:24,730 --> 01:28:29,570 ju jeni të mbushur në atë që ne do të në përgjithësi e quajnë një vektor argumentin. 1762 01:28:29,570 --> 01:28:33,100 Me fjalë të tjera, automatikisht kompjuter, sistemi operativ, 1763 01:28:33,100 --> 01:28:38,340 do të dorëzojë për programin tuaj në vetvete një listë e të gjitha fjalët 1764 01:28:38,340 --> 01:28:40,850 se njeriut shtypur në e shpejtë, në rast se ju 1765 01:28:40,850 --> 01:28:43,790 programues doni të bëni diçka me këtë informacion. 1766 01:28:43,790 --> 01:28:48,540 Dhe në këtë rast, vetëm fjalë Unë e kam shtypur në ftim është ./argv0. 1767 01:28:48,540 --> 01:28:55,420 >> Dhe kështu që numri i argumenteve që është duke kaluar në programin tim është vetëm një. 1768 01:28:55,420 --> 01:28:58,880 Me fjalë të tjera, argumenti numërimin, i njohur ndryshe si argc 1769 01:28:58,880 --> 01:29:00,970 këtu si një numër i plotë, është vetëm një. 1770 01:29:00,970 --> 01:29:03,000 Një, natyrisht, nuk ka të barabartë me dy. 1771 01:29:03,000 --> 01:29:05,980 Dhe kështu kjo është ajo që shtyp, përshëndetje botën. 1772 01:29:05,980 --> 01:29:08,170 >> Por më lejoni të përfitoj nga ky diku. 1773 01:29:08,170 --> 01:29:09,930 Më lejoni të them, argv0. 1774 01:29:09,930 --> 01:29:12,740 Dhe pastaj si për Maria? 1775 01:29:12,740 --> 01:29:14,990 Dhe pastaj goditi Enter. 1776 01:29:14,990 --> 01:29:18,020 >> Dhe njoftim se çfarë magjike ndodh këtu. 1777 01:29:18,020 --> 01:29:22,640 Tani, në vend të botës përshëndetje, unë kam ndryshuar sjelljen e këtij programi 1778 01:29:22,640 --> 01:29:26,310 duke marrë të dhëna jo nga get string apo ndonjë funksion tjetër, 1779 01:29:26,310 --> 01:29:30,570 por nga, me sa duket, komandën e mia në vetvete, atë që unë fillimisht shtypur në. 1780 01:29:30,570 --> 01:29:35,720 Dhe unë mund të luajë këtë lojë përsëri ndryshuar atë për Stelios, për shembull. 1781 01:29:35,720 --> 01:29:38,400 >> Dhe tani shoh një emër tjetër ende. 1782 01:29:38,400 --> 01:29:40,540 Dhe këtu, unë mund të them Andi. 1783 01:29:40,540 --> 01:29:42,137 Dhe unë mund të them Zamyla. 1784 01:29:42,137 --> 01:29:45,220 Dhe ne mund të luajnë këtë lojë gjatë gjithë ditës, vetëm me mbylljen në vlera të ndryshme, 1785 01:29:45,220 --> 01:29:49,550 deri sa do të sigurojë tamam dy fjalë në e shpejtë, 1786 01:29:49,550 --> 01:29:52,260 të tilla që argc, argumenti im numërimin, është 2. 1787 01:29:52,260 --> 01:29:57,240 >> A shihni se emri i mbyllën në printf, për këtë gjendje këtu? 1788 01:29:57,240 --> 01:30:00,550 Pra, ne duket se kanë tani aftësia ekspresive 1789 01:30:00,550 --> 01:30:04,410 të marrë të dhëna nga një tjetër mekanizëm, nga e ashtuquajtura command line, 1790 01:30:04,410 --> 01:30:07,000 në vend që të presin derisa përdoruesi shkon programi, 1791 01:30:07,000 --> 01:30:10,220 dhe pastaj të shpejtë atij ose asaj duke përdorur diçka si get varg. 1792 01:30:10,220 --> 01:30:11,230 >> Pra, çfarë është kjo? 1793 01:30:11,230 --> 01:30:15,010 Argc, përsëri, është vetëm një numër të plotë, numri i words-- argumente të 1794 01:30:15,010 --> 01:30:18,540 që përdoruesi dhënë më së shpejtë, në dritaren e terminalit, 1795 01:30:18,540 --> 01:30:20,110 duke përfshirë edhe emrin e programit. 1796 01:30:20,110 --> 01:30:23,340 Pra ./argv0 ynë është, në mënyrë efektive, emri i programit, 1797 01:30:23,340 --> 01:30:24,520 ose si unë të drejtuar programin. 1798 01:30:24,520 --> 01:30:25,810 >> Që ka rëndësi si një fjalë. 1799 01:30:25,810 --> 01:30:27,080 Pra argc do të jetë 1. 1800 01:30:27,080 --> 01:30:29,750 Por, kur unë shkruaj Stelios, ose Andi, ose Zamyla, apo Maria, 1801 01:30:29,750 --> 01:30:31,660 kjo do të thotë numërimi argumenti është dy. 1802 01:30:31,660 --> 01:30:33,910 Dhe kështu që tani ka dy fjalë kaluar në. 1803 01:30:33,910 --> 01:30:36,070 >> Dhe njoftimi, ne mund të vazhdojmë këtë logjikë. 1804 01:30:36,070 --> 01:30:39,050 Nëse unë them në fakt diçka si Zamyla Chan, 1805 01:30:39,050 --> 01:30:42,200 një emër i plotë, duke kaluar tre argumente në total, 1806 01:30:42,200 --> 01:30:47,410 tani ajo thotë parazgjedhur përsëri, sepse, natyrisht, 3 nuk ka të barabartë 2. 1807 01:30:47,410 --> 01:30:54,080 >> Dhe kështu në këtë mënyrë, nuk kam qasje nëpërmjet argv këtë argument të ri 1808 01:30:54,080 --> 01:30:56,080 që ne mund teknikisht të telefononi çdo gjë që duam. 1809 01:30:56,080 --> 01:30:58,940 Por nga Konventa, është e argv dhe argc, respektivisht. 1810 01:30:58,940 --> 01:31:04,470 Argv, argumenti vektoriale, është lloji e një sinonim për një programim 1811 01:31:04,470 --> 01:31:07,140 funksion në C quhet një grup. 1812 01:31:07,140 --> 01:31:14,410 >> Një grup është një listë e vlerave të ngjashme përsëri, për të mbështetur, për të mbështetur, për të pasme. 1813 01:31:14,410 --> 01:31:17,810 Me fjalë të tjera, në qoftë se një është e drejtë këtu në RAM, një tjetër është e drejtë tjetër për të, 1814 01:31:17,810 --> 01:31:18,800 dhe të drejtë tjetër për të. 1815 01:31:18,800 --> 01:31:20,101 Ata nuk janë të gjithë vendin. 1816 01:31:20,101 --> 01:31:23,100 Dhe se skenari i fundit, ku gjëra janë në të gjithë vendin në kujtesë, 1817 01:31:23,100 --> 01:31:25,082 në fakt mund të jetë një tipar i fuqishëm. 1818 01:31:25,082 --> 01:31:28,040 Por ne do të kthehen për të se kur flasim për strukturat e njohës të dhënave. 1819 01:31:28,040 --> 01:31:32,260 Tani për tani, një grup është vetëm një copë e kujtesës afërt, 1820 01:31:32,260 --> 01:31:36,520 secila nga elementet e të cilit janë përsëri, për të mbështetur, për të mbështetur, për të mbështetur, 1821 01:31:36,520 --> 01:31:38,050 dhe në përgjithësi të të njëjtit lloj. 1822 01:31:38,050 --> 01:31:42,630 >> Pra, nëse ju mendoni rreth, nga një moment më parë, ajo është një varg? 1823 01:31:42,630 --> 01:31:50,460 E pra, një varg, si Zamyla, Z-A-M-Y-L-A është, teknikisht, 1824 01:31:50,460 --> 01:31:51,400 vetëm një grup. 1825 01:31:51,400 --> 01:31:53,700 Është një grup të karaktereve. 1826 01:31:53,700 --> 01:31:59,250 >> Dhe kështu që nëse ne me të vërtetë të tërheqë këtë, si unë bëri më parë, si një copë e kujtesës, 1827 01:31:59,250 --> 01:32:04,510 rezulton se secili prej tyre Karakteret merr një bajt. 1828 01:32:04,510 --> 01:32:07,630 Dhe pastaj nuk ka që të veçantë Karakteri sentinel, backslash 0, 1829 01:32:07,630 --> 01:32:12,360 ose të gjitha tetë 0 bit, që Në kufirin fundin e atë varg. 1830 01:32:12,360 --> 01:32:15,090 Pra, një string, ajo kthehet jashtë, të japin kuotën varg siç janë quajtur ato, 1831 01:32:15,090 --> 01:32:20,580 është vetëm një grup i chara-- char qenë një lloj aktuale e të dhënave. 1832 01:32:20,580 --> 01:32:24,560 >> Dhe tani argv, meanwhile-- le të kthehemi në program. 1833 01:32:24,560 --> 01:32:29,582 Argv, edhe pse ne shohim fjalën string këtu, nuk është një varg në vetvete. 1834 01:32:29,582 --> 01:32:33,640 Argv, argumenti vector, është një grup i strings. 1835 01:32:33,640 --> 01:32:37,620 >> Pra, ashtu si ju mund të ketë një rrjet të karaktere, ju mund të ketë nivel më të lartë, 1836 01:32:37,620 --> 01:32:46,279 një grup i strings-- kështu, për shembull, kur kam shtypur një moment më parë ./argv0 1837 01:32:46,279 --> 01:33:00,150 argv0, hapësirë ​​Z-A-M-Y-L-A, I pretendohet se argv kishte dy vargje në ./argv0 arsyetimet tuaja, 1838 01:33:00,150 --> 01:33:03,185 dhe Z-A-M-Y-L-A. Në fjalë të tjera, argc ishte 2. 1839 01:33:03,185 --> 01:33:03,980 Pse eshte ajo? 1840 01:33:03,980 --> 01:33:08,370 >> E pra, në mënyrë efektive, çfarë po ndodh në është se secili nga këto vargjet 1841 01:33:08,370 --> 01:33:13,990 është, natyrisht, një grup të karaktereve si më parë, secili e të cilit karaktere 1842 01:33:13,990 --> 01:33:15,670 merr një byte. 1843 01:33:15,670 --> 01:33:19,720 Dhe mos ngatërruar 0 aktual në emrin e programit me 0, 1844 01:33:19,720 --> 01:33:22,040 që do të thotë të gjitha 80 bit. 1845 01:33:22,040 --> 01:33:27,140 Dhe Zamyla, ndërkohë, është ende edhe një grup të karaktereve. 1846 01:33:27,140 --> 01:33:31,450 >> Pra, në fund të ditës, me të vërtetë duket si ky nën kapuç. 1847 01:33:31,450 --> 01:33:38,800 Por argv, nga natyra se si kryesore Punimet, lejon mua për të përfunduar të gjithë këtë 1848 01:33:38,800 --> 01:33:44,810 deri në, nëse ju do të, një grup më të madh se, në qoftë se ne pak më shumë se të lehtësuar 1849 01:33:44,810 --> 01:33:48,180 ajo foto duket si dhe nuk mjaft të nxjerrë atë në shkallë deri atje, 1850 01:33:48,180 --> 01:33:56,720 ky grup është vetëm i madhësisë 2, i pari element i cili përmban një varg, 1851 01:33:56,720 --> 01:33:59,230 elementi i dytë i i cili përmban një varg. 1852 01:33:59,230 --> 01:34:01,687 Dhe, nga ana tjetër, në qoftë se ju lloj i zoom në çdo 1853 01:34:01,687 --> 01:34:03,770 nga ato vargjet, çfarë shikoni nën kapuç 1854 01:34:03,770 --> 01:34:07,190 është se çdo string është vetëm një grup të karaktereve. 1855 01:34:07,190 --> 01:34:11,680 >> Tani, ashtu si me vargjet, ne ishim në gjendje për të marrë qasje 1856 01:34:11,680 --> 01:34:15,260 për karakterin e i-të në një varg përdorur atë kllapa katrore simbol. 1857 01:34:15,260 --> 01:34:17,320 Në mënyrë të ngjashme, me vargjeve në përgjithësi, mund të presim 1858 01:34:17,320 --> 01:34:22,700 përdorin katror kllapa simbol për të marrë në çdo numër të strings në një grup? 1859 01:34:22,700 --> 01:34:25,100 Për shembull, le të më të shkojnë përpara dhe të bëjë këtë. 1860 01:34:25,100 --> 01:34:32,420 >> Më lejoni të shkojnë përpara dhe për të krijuar argv1.c, e cila është pak më ndryshe këtë herë. 1861 01:34:32,420 --> 01:34:35,635 Në vend të kontrolluar për argc2, Unë jam duke shkuar për të bërë këtë vend. 1862 01:34:35,635 --> 01:34:41,270 Për int marr 0, I është më pak se argc, unë plus plus, 1863 01:34:41,270 --> 01:34:47,920 dhe pastaj të shtypura nga brenda të kësaj, qind s, linjë e re, dhe pastaj 1864 01:34:47,920 --> 01:34:50,740 argv kllapa i. 1865 01:34:50,740 --> 01:34:55,220 >> Pra, me fjalë të tjera, unë nuk jam që kanë të bëjnë me karaktere të veçanta në këtë moment. 1866 01:34:55,220 --> 01:35:00,190 Argv, siç kuptohet nga këto shesh bosh formatimin e teksteve në të djathtë të emrit të argv, 1867 01:35:00,190 --> 01:35:03,320 do të thotë argv është një grup i strings. 1868 01:35:03,320 --> 01:35:04,870 Dhe argc është vetëm një int. 1869 01:35:04,870 --> 01:35:08,800 >> Kjo linjë këtu, 6, është duke thënë grup i barabartë me 0. 1870 01:35:08,800 --> 01:35:11,980 Numërimi të gjithë rrugën deri në, por duke mos përfshirë, argc. 1871 01:35:11,980 --> 01:35:14,010 Dhe pastaj në çdo përsëritje, shtypura nga një varg. 1872 01:35:14,010 --> 01:35:14,800 Çfarë string? 1873 01:35:14,800 --> 01:35:17,270 >> Vargu i-th në argv. 1874 01:35:17,270 --> 01:35:19,530 Pra, ndërsa para se unë kam qenë duke përdorur kllapa katrore 1875 01:35:19,530 --> 01:35:22,180 simbol për të marrë në lth karakter në një varg, tani 1876 01:35:22,180 --> 01:35:27,240 Unë jam duke përdorur simbol kllapa katrore për të marrë në varg ith në një rrjet. 1877 01:35:27,240 --> 01:35:30,310 Pra, kjo është lloj i një shtresë më sipër, konceptualisht. 1878 01:35:30,310 --> 01:35:35,390 >> Dhe kështu që çfarë është zoti në lidhje me këtë Programi tani, në qoftë se unë përpilojnë argv1, 1879 01:35:35,390 --> 01:35:42,067 dhe pastaj të bëjë ./argv1, dhe pastaj shtypni në diçka si foo bar Baz, 1880 01:35:42,067 --> 01:35:45,400 të cilat janë tre fjalët parazgjedhur që një shkencëtar kompjuteri arrin për çdo kohë 1881 01:35:45,400 --> 01:35:51,010 ai ose ajo ka nevojë për disa fjalë placeholder, dhe hit Enter, secila prej këtyre fjalëve, 1882 01:35:51,010 --> 01:35:54,980 duke përfshirë edhe emrin e programit, e cila është në argv në vendin e parë, 1883 01:35:54,980 --> 01:35:58,320 përfundon duke u shtypur në një kohë. 1884 01:35:58,320 --> 01:36:05,290 Dhe në qoftë se kam ndryshuar këtë, dhe unë them diçka si argv1 Zamyla Chan, 1885 01:36:05,290 --> 01:36:08,800 ne kemi marrë të tre nga ata fjalë, e cila është argv0, 1886 01:36:08,800 --> 01:36:14,400 argv1, argv2, sepse në këtë Rasti argc, numërimi, është 3. 1887 01:36:14,400 --> 01:36:20,020 >> Por ajo që është i zoti është në qoftë se ju e kuptoni që argv është vetëm një grup i vargjeve, 1888 01:36:20,020 --> 01:36:24,910 dhe ju e kuptoni se një varg është një grup i karaktereve, 1889 01:36:24,910 --> 01:36:29,470 ne mund të vërtetë lloji i përdorin këtë square bracket Shënim i herë të shumta 1890 01:36:29,470 --> 01:36:33,320 për të zgjedhur një varg, dhe pastaj zgjidhni një karakter në varg, 1891 01:36:33,320 --> 01:36:35,730 zhytjen në thellë si më poshtë. 1892 01:36:35,730 --> 01:36:40,100 Në këtë shembull, më lejoni të shkoj përpara dhe e quajmë këtë argv2.c. 1893 01:36:40,100 --> 01:36:43,920 1894 01:36:43,920 --> 01:36:50,180 Dhe në këtë shembull, më lejoni të shkoj përpara dhe të bëjë following-- për int i merrni 0, 1895 01:36:50,180 --> 01:36:53,286 i është më pak se argc, i plus plus, ashtu si më parë. 1896 01:36:53,286 --> 01:36:55,910 Pra, në words-- tjera dhe tani kjo po bëhet mjaft e komplikuar. 1897 01:36:55,910 --> 01:36:59,940 Atëherë unë jam duke shkuar për të thënë iterate mbi vargjet në argv, 1898 01:36:59,940 --> 01:37:01,294 si një koment për veten time. 1899 01:37:01,294 --> 01:37:03,960 Dhe atëherë unë jam duke shkuar të ketë një mbivendosur për lak, të cilat ju ndoshta 1900 01:37:03,960 --> 01:37:06,290 kanë bërë, ose konsiderohet duke bërë, në Scratch, ku 1901 01:37:06,290 --> 01:37:08,600 Unë jam duke shkuar për të thënë int-- Jam nuk do të përdorin, përsëri, 1902 01:37:08,600 --> 01:37:12,590 sepse unë nuk dua të hije, ose lloj prishësh I ekzistues. 1903 01:37:12,590 --> 01:37:15,780 >> Unë jam duke shkuar për të, në vend të kësaj, thonë j, sepse kjo është go ime për ndryshore pas i, 1904 01:37:15,780 --> 01:37:18,590 kur unë jam vetëm duke u përpjekur për të numërimin e numrave të thjeshtë. 1905 01:37:18,590 --> 01:37:28,850 Për j merr 0-- dhe gjithashtu, n, do të marrë gjatësinë ashpër e kllapa argv i, 1906 01:37:28,850 --> 01:37:36,030 aq sa j është më pak se m, j plus plus, të bëjë të mëposhtme. 1907 01:37:36,030 --> 01:37:37,500 Dhe këtu është pjesa interesante. 1908 01:37:37,500 --> 01:37:46,330 >> Shtypura nga një karakter dhe një linjë të re, mbylljen në kllapa argv i, j kllapa. 1909 01:37:46,330 --> 01:37:47,940 OK, kështu që më lejoni të shtoj disa komente ketu. 1910 01:37:47,940 --> 01:37:54,820 Iterate mbi karaktere në vargun e tanishëm, 1911 01:37:54,820 --> 01:38:02,290 print karakter j-th në vargun e i-të. 1912 01:38:02,290 --> 01:38:04,630 Pra, tani, le të konsiderojmë çfarë do të thotë këto komente. 1913 01:38:04,630 --> 01:38:06,750 >> Iterate mbi vargjet në argv-- sa 1914 01:38:06,750 --> 01:38:09,300 vargjet janë në argv, e cila është një grup? 1915 01:38:09,300 --> 01:38:13,420 Argc shumë, kështu që unë jam iterating nga i barabartë 0 deri në argc. 1916 01:38:13,420 --> 01:38:20,020 Ndërkohë, sa karaktere janë në vargun e i-të në argv? 1917 01:38:20,020 --> 01:38:22,880 >> E pra, për të marrë këtë përgjigje, I vetëm thirrje gjatësi string 1918 01:38:22,880 --> 01:38:26,810 në aktuale string I kujdesit lidhje, e cila është argv kllapa i. 1919 01:38:26,810 --> 01:38:30,090 Dhe unë jam duke shkuar për të ruajtur përkohësisht që Vlera në n, vetëm për qëllime caching, 1920 01:38:30,090 --> 01:38:31,590 për të kujtuar atë për efikasitet. 1921 01:38:31,590 --> 01:38:36,330 Dhe atëherë unë jam duke shkuar nisja j në 0, do të mbajë për aq kohë sa j është më pak se n, 1922 01:38:36,330 --> 01:38:38,430 dhe në çdo j përsëritje rritje. 1923 01:38:38,430 --> 01:38:41,030 >> Dhe pastaj në këtu, për komenti im on line 12, 1924 01:38:41,030 --> 01:38:43,390 shtypura nga një karakter, i ndjekur nga një vijë e re, 1925 01:38:43,390 --> 01:38:48,140 kllapa specifike argv i më jep varg i-th 1926 01:38:48,140 --> 01:38:51,690 në argv-- kështu fjalën e parë, Fjala e dytë, fjala e tretë, çfarëdo. 1927 01:38:51,690 --> 01:38:57,370 Dhe pastaj zhytet j në të thella, dhe merr me karakter j-th e asaj fjale. 1928 01:38:57,370 --> 01:39:02,200 Dhe kështu, në fakt, ju mund të trajtoni argv si një multi-dimensional, 1929 01:39:02,200 --> 01:39:06,050 si një dy-dimensionale, grup, ku çdo fjalë lloj duket 1930 01:39:06,050 --> 01:39:08,580 si kjo në mendjen e juaj sy, dhe çdo karakter 1931 01:39:08,580 --> 01:39:10,930 është lloj i përbërë në një kolonë, në qoftë se ndihmon. 1932 01:39:10,930 --> 01:39:13,260 >> Në të vërtetë, kur ne vë në lojë kjo përveç në javët e ardhshme, 1933 01:39:13,260 --> 01:39:15,580 ajo do të jetë pak më të sofistikuara se kaq. 1934 01:39:15,580 --> 01:39:17,800 Por ju mund të vërtetë mendojnë se, tani për tani, 1935 01:39:17,800 --> 01:39:22,110 pasi vetëm këtë dy-dimensionale array, ku një nivel i saj 1936 01:39:22,110 --> 01:39:23,260 është e gjitha vargjet. 1937 01:39:23,260 --> 01:39:26,760 Dhe pastaj nëse ju zhyten në më të thellë, ju mund të merrni në karaktere të veçanta 1938 01:39:26,760 --> 01:39:29,600 aty duke përdorur këtë simbol këtu. 1939 01:39:29,600 --> 01:39:31,620 >> Pra, çfarë është efekti neto? 1940 01:39:31,620 --> 01:39:34,970 Më lejoni të shkojnë përpara dhe të mallkuar argv2-- atë. 1941 01:39:34,970 --> 01:39:36,210 Kam bërë një gabim këtu. 1942 01:39:36,210 --> 01:39:40,160 Implicite shpalljen e Funksioni Biblioteka Stirling. 1943 01:39:40,160 --> 01:39:42,190 Pra, të gjithë këtë kohë, është e ndoshta e përshtatshme 1944 01:39:42,190 --> 01:39:45,130 që ne jemi lloj i përfunduar pikërisht aty ku kemi filluar. 1945 01:39:45,130 --> 01:39:48,160 >> I dehur, në mënyrë implicite deklaruar Funksioni Biblioteka Stirling. 1946 01:39:48,160 --> 01:39:48,987 OK, prit një minutë. 1947 01:39:48,987 --> 01:39:51,070 Mbaj mend se, në veçanti që është e drejtë këtu. 1948 01:39:51,070 --> 01:39:54,490 Unë kam nevojë për të përfshirë string në ky version i programit. 1949 01:39:54,490 --> 01:40:00,050 >> Më lejoni të shkojnë përpara dhe të përfshijë string, përveç kësaj, të shkojnë përpara 1950 01:40:00,050 --> 01:40:04,460 dhe përpiluar argv2. 1951 01:40:04,460 --> 01:40:08,390 Dhe tani, këtu ne do të shkojmë, të argv2, Enter. 1952 01:40:08,390 --> 01:40:10,590 Dhe pse kjo është pak fshehtë në shikim të parë, 1953 01:40:10,590 --> 01:40:15,690 vini re se, në të vërtetë, ajo që është shtypur është dot argv2. 1954 01:40:15,690 --> 01:40:19,970 >> Por në qoftë se unë lloji disa fjalë pas të shpejtë, si argv2 Zamyla Chan, 1955 01:40:19,970 --> 01:40:22,560 Enter, edhe pak fshehtë në shikim të parë. 1956 01:40:22,560 --> 01:40:30,540 Por nëse ne lëviz back up, ./argv2 Z-A-M-Y-L-A C-H-A-N. 1957 01:40:30,540 --> 01:40:32,190 Pra, ne kemi përsëritur shumë se çdo fjalë. 1958 01:40:32,190 --> 01:40:37,770 Dhe, nga ana tjetër, ne kemi përsëritur gjatë çdo karakter në një fjalë. 1959 01:40:37,770 --> 01:40:40,040 >> Tani, pas gjithë kësaj, të kuptojë se nuk ka 1960 01:40:40,040 --> 01:40:43,120 një detaj tjetër që kemi qenë e llojit e injoruar këtë herë të gjithë. 1961 01:40:43,120 --> 01:40:46,180 Ne vetëm ngacmohem përveç asaj që inputet kryesore mund të jetë? 1962 01:40:46,180 --> 01:40:47,780 Po në lidhje me prodhimin kryesor të? 1963 01:40:47,780 --> 01:40:50,540 >> E gjithë kjo kohë, ne kemi qenë vetëm kopjimi dhe pasting 1964 01:40:50,540 --> 01:40:53,870 int fjala para kryesore, edhe pse ju mund të shihni online, 1965 01:40:53,870 --> 01:40:58,340 nganjëherë gabimisht në versionet më të vjetra e C dhe hartuesit, që ata thonë se i pavlefshëm, 1966 01:40:58,340 --> 01:40:59,410 ose asgjë në të gjitha. 1967 01:40:59,410 --> 01:41:01,580 Por, në të vërtetë, për versioni i C që ne jemi duke përdorur, 1968 01:41:01,580 --> 01:41:06,180 C 11, apo 2011 të realizuar se ajo duhet të jetë int. 1969 01:41:06,180 --> 01:41:09,300 Dhe kjo duhet të jetë ose pavlefshme ose argc dhe argv këtu. 1970 01:41:09,300 --> 01:41:10,790 >> Por pse int main? 1971 01:41:10,790 --> 01:41:12,480 Çfarë është ajo në të vërtetë kthyer? 1972 01:41:12,480 --> 01:41:16,280 E pra, ajo rezulton të gjithë këtë kohë, çdo herë që ju keni shkruar një kryesore të programit 1973 01:41:16,280 --> 01:41:18,440 është gjithmonë e kthyer diçka. 1974 01:41:18,440 --> 01:41:19,960 Por ajo është bërë në mënyrë të fshehtë. 1975 01:41:19,960 --> 01:41:23,350 >> Kjo gjë është një int, si linjë 5 sugjeron. 1976 01:41:23,350 --> 01:41:24,225 Por çfarë int? 1977 01:41:24,225 --> 01:41:26,100 E pra, nuk është kjo konventë në programimin, 1978 01:41:26,100 --> 01:41:29,790 ku në qoftë se asgjë nuk ka shkuar keq dhe të gjithë është i mirë, 1979 01:41:29,790 --> 01:41:34,250 Programet dhe funksionet në përgjithësi return-- disi counterintuitively-- 1980 01:41:34,250 --> 01:41:35,230 0. 1981 01:41:35,230 --> 01:41:38,070 0 në përgjithësi nënkupton gjithë është i mirë. 1982 01:41:38,070 --> 01:41:40,610 Pra, edhe pse ju mendoni se e atë si false në shumë kontekste, 1983 01:41:40,610 --> 01:41:42,930 ai në fakt në përgjithësi do të thotë një gjë e mirë 1984 01:41:42,930 --> 01:41:49,560 >> Ndërkohë, nëse një program kthehet 1, ose negative 1, ose 5, ose negative 42, 1985 01:41:49,560 --> 01:41:52,941 ose çdo non-0 vlerë, që në përgjithësi nënkupton 1986 01:41:52,941 --> 01:41:54,190 se diçka ka shkuar keq. 1987 01:41:54,190 --> 01:41:56,700 Në fakt, në tuaj Mac ose PC, ju mund të keni parë në të vërtetë 1988 01:41:56,700 --> 01:42:01,050 një mesazh gabimi, ku atë thotë diçka apo të tjera, gabim 1989 01:42:01,050 --> 01:42:04,940 Kodi negative 42, apo gabim kodin 23, ose diçka të tillë. 1990 01:42:04,940 --> 01:42:08,980 Ky numër është zakonisht vetëm një aluzion për programues, ose në kompani 1991 01:42:08,980 --> 01:42:11,174 që e bëri software, çfarë shkoi keq dhe pse, 1992 01:42:11,174 --> 01:42:13,590 në mënyrë që ata mund të shikojnë nëpërmjet Dokumentacioni ose kodi i tyre, 1993 01:42:13,590 --> 01:42:15,465 dhe të kuptoj se çfarë Gabim në fakt do të thotë. 1994 01:42:15,465 --> 01:42:18,400 Kjo nuk është në përgjithësi e dobishme për ne fund përdoruesit. 1995 01:42:18,400 --> 01:42:20,550 >> Por kur kthehet kryesore 0, gjithçka është mirë. 1996 01:42:20,550 --> 01:42:23,770 Dhe në qoftë se ju nuk e specifikon çfarë kryesor duhet të kthehen, 1997 01:42:23,770 --> 01:42:26,950 ajo do vetëm automatikisht kthehet 0 për ju. 1998 01:42:26,950 --> 01:42:30,870 Por, duke u kthyer diçka tjetër fakt është e dobishme. 1999 01:42:30,870 --> 01:42:34,660 >> Në këtë program të fundit, më lejoni të shkojnë përpara dhe të quajmë këtë exit.c, 2000 01:42:34,660 --> 01:42:38,630 dhe futjen e fundit të sotme tema, i njohur si një kod gabimi. 2001 01:42:38,630 --> 01:42:42,930 Më lejoni të shkojnë përpara dhe të përfshijë tonë njohur files deri të lartë, të bëjë int main. 2002 01:42:42,930 --> 01:42:49,500 Dhe këtë herë, le ta bëjmë int argc, string argv, dhe me kllapa e mia 2003 01:42:49,500 --> 01:42:50,836 të thotë se kjo është në rrjet. 2004 01:42:50,836 --> 01:42:52,460 Dhe pastaj më lejoni vetëm të bëjë një kontroll mendje e shëndoshë. 2005 01:42:52,460 --> 01:42:56,640 Këtë herë, në qoftë se nuk ka argc të barabartë 2, atëherë ju e dini se çfarë? 2006 01:42:56,640 --> 01:42:57,520 Harroje. 2007 01:42:57,520 --> 01:43:03,170 Unë jam duke shkuar për të thënë se, hej, user, ju jeni të humbur argumentin linjë komandës 2008 01:43:03,170 --> 01:43:04,210 n backslash. 2009 01:43:04,210 --> 01:43:05,230 >> Dhe pastaj kjo është ajo. 2010 01:43:05,230 --> 01:43:06,130 Unë dua të dalë. 2011 01:43:06,130 --> 01:43:11,030 Unë jam duke shkuar për të preemptively, dhe para kohe me të vërtetë, kthimi 2012 01:43:11,030 --> 01:43:12,810 diçka tjetër se sa numri 1. 2013 01:43:12,810 --> 01:43:15,360 Go vlerës për herë të parë gabim që mund të ndodhë është 1. 2014 01:43:15,360 --> 01:43:17,860 Nëse ju keni disa të tjera të gabuara situata që mund të ndodhë, 2015 01:43:17,860 --> 01:43:21,390 ju mund të thoni kthimin 2 ose kthimin 3, ose ndoshta edhe negative 1 ose negative 2. 2016 01:43:21,390 --> 01:43:23,750 >> Këto janë vetëm kodet e daljes që janë, në përgjithësi, 2017 01:43:23,750 --> 01:43:27,770 vetëm të dobishme për programuese, ose Kompania që është anijeve software. 2018 01:43:27,770 --> 01:43:30,500 Por fakti që kjo është Nuk 0 është ajo që është e rëndësishme. 2019 01:43:30,500 --> 01:43:34,310 Pra, nëse në këtë program, unë dua të të garantojë se ky program vetëm 2020 01:43:34,310 --> 01:43:38,190 punon në qoftë se përdoruesi jep mua me një akuzë e argumentit të dy, 2021 01:43:38,190 --> 01:43:42,880 emri i programit, dhe disa të tjera fjalë, unë mund të zbatojë sa më shumë si më poshtë, 2022 01:43:42,880 --> 01:43:46,110 çirrem në përdorues me printf thënë, humbur argumentin command line, 2023 01:43:46,110 --> 01:43:46,970 kthehen 1. 2024 01:43:46,970 --> 01:43:49,940 Kjo thjesht do të menjëherë lë programin. 2025 01:43:49,940 --> 01:43:55,840 >> Vetëm në qoftë se argc është e barabartë me 2 do të merrni poshtë këtu, në të cilën pikë unë jam duke shkuar për të thënë, 2026 01:43:55,840 --> 01:44:00,410 përshëndetje për qind s, backslash n, argv1. 2027 01:44:00,410 --> 01:44:03,827 Me fjalë të tjera, unë jam mos shkuar pas argv 0, 2028 01:44:03,827 --> 01:44:05,410 e cila është vetëm emri i programit. 2029 01:44:05,410 --> 01:44:09,450 Unë dua të shtypura nga hello, presje, fjala e dytë që njeriu shtypur. 2030 01:44:09,450 --> 01:44:12,580 Dhe në këtë rast në line 13, gjithçka është mirë. 2031 01:44:12,580 --> 01:44:15,920 >> Unë e di se argc është 2 logjikisht nga ky program. 2032 01:44:15,920 --> 01:44:17,770 Unë jam duke shkuar për të shkuar përpara dhe të kthehet 0. 2033 01:44:17,770 --> 01:44:21,230 Si një mënjanë, mbani në mend se kjo është e vërtetë në Scratch si. 2034 01:44:21,230 --> 01:44:24,760 >> Logjikisht, unë mund ta bëjë këtë dhe encapsulate këto rreshta 2035 01:44:24,760 --> 01:44:27,020 i kodit në këtë klauzolë tjetër këtu. 2036 01:44:27,020 --> 01:44:29,420 Por kjo është lloj i panevojshme indenting kodin tim. 2037 01:44:29,420 --> 01:44:31,800 Dhe unë dua të bëjë super qartë se pa marrë parasysh se çfarë, 2038 01:44:31,800 --> 01:44:34,670 nga default, përshëndetje diçka do të shtypura, 2039 01:44:34,670 --> 01:44:36,050 për aq kohë sa përdoruesi bashkëpunon. 2040 01:44:36,050 --> 01:44:39,360 >> Kështu që është shumë e zakonshme për të përdorur një kusht, vetëm një rast, 2041 01:44:39,360 --> 01:44:41,870 për të kapur disa të gabuar Situata, dhe pastaj dalje. 2042 01:44:41,870 --> 01:44:45,690 Dhe pastaj, për sa kohë të gjitha është mirë, nuk kanë një tjetër, 2043 01:44:45,690 --> 01:44:48,060 por vetëm të ketë kodin e jashtë se në qoftë se, për shkak se është 2044 01:44:48,060 --> 01:44:51,060 ekuivalente në këtë rast i veçantë, logjikisht. 2045 01:44:51,060 --> 01:44:54,480 Kështu që unë jam kthyer 0, vetëm për të në mënyrë të qartë tregon gjithë është i mirë. 2046 01:44:54,480 --> 01:44:58,480 >> Nëse unë harruar kthimin 0, kjo do të të supozohet automatikisht për mua. 2047 01:44:58,480 --> 01:45:00,890 Por tani që unë jam kthyer një në të paktën këtë rast, 2048 01:45:00,890 --> 01:45:04,940 Unë jam duke shkuar për të, për masë të mirë dhe qartësia, kthehet 0 në këtë rast. 2049 01:45:04,940 --> 01:45:09,690 Kështu që tani më lejoni të shkoj përpara dhe të bëjë dalje, e cila është një Segue përkryer për të lënë vetëm. 2050 01:45:09,690 --> 01:45:14,401 >> Por të bëjë dalje, dhe më lejoni të shkoj përpara dhe të bëjë ./exit, Enter. 2051 01:45:14,401 --> 01:45:16,900 Dhe programi yelled në mua, humbur argumentin command line. 2052 01:45:16,900 --> 01:45:18,120 OK, më lejoni të bashkëpunojnë. 2053 01:45:18,120 --> 01:45:23,810 >> Më lejoni në vend të bëjë ./exit, David, Enter. 2054 01:45:23,810 --> 01:45:25,190 Dhe tani ai thotë, përshëndetje David. 2055 01:45:25,190 --> 01:45:27,300 Dhe normalisht ju nuk do të shihni këtë. 2056 01:45:27,300 --> 01:45:30,650 >> Por kjo rezulton se ka një mënyrë të veçantë në Linux që në fakt të parë 2057 01:45:30,650 --> 01:45:34,470 me atë dalje code një program exited. 2058 01:45:34,470 --> 01:45:37,184 Ndonjëherë në një grafik Bota si Mac OS ose Windows, 2059 01:45:37,184 --> 01:45:40,100 ju shikoni vetëm këto numra kur një mesazh gabimi pops up në ekran 2060 01:45:40,100 --> 01:45:41,940 dhe programues ju tregon këtë numër. 2061 01:45:41,940 --> 01:45:44,773 Por në qoftë se ne duam të shohim se çfarë gabimi mesazhi është, ne mund të bëjmë atë here-- 2062 01:45:44,773 --> 01:45:48,100 kështu ./exit, Enter, print humbur argumentin command line. 2063 01:45:48,100 --> 01:45:54,590 >> Nëse unë tani të bëjë $ echo ?, e cila është ridiculously fshehtë kërkim. 2064 01:45:54,590 --> 01:45:56,590 Por $? 2065 01:45:56,590 --> 01:45:59,220 është yshtje magjike që thotë, hej, kompjuter, 2066 01:45:59,220 --> 01:46:01,900 më tregoni se çfarë të mëparshme Kodi dalja programit ishte. 2067 01:46:01,900 --> 01:46:03,410 Dhe unë hit Enter. 2068 01:46:03,410 --> 01:46:07,520 Shoh 1, sepse kjo është ajo që unë tha funksionin tim kryesor për t'u kthyer. 2069 01:46:07,520 --> 01:46:12,310 >> Ndërkohë, në qoftë se unë bëj ./exit Davidin, dhe hit Enter, unë shoh, Hello Davidin. 2070 01:46:12,310 --> 01:46:16,800 Dhe në qoftë se unë tani bëj $ echo ?, shoh përshëndetje 0. 2071 01:46:16,800 --> 01:46:19,080 Dhe kështu kjo në fakt do të jetë informacion të vlefshëm 2072 01:46:19,080 --> 01:46:23,420 në kontekstin e Rregullues, jo kështu më shumë se ju, njeriu, do të kujdesit. 2073 01:46:23,420 --> 01:46:26,060 Por Rregullues dhe të tjera Programet ne do të përdorim këtë semestër 2074 01:46:26,060 --> 01:46:29,420 shpesh do të shikojmë në atë numër, edhe pse është e fshehur lloj larg 2075 01:46:29,420 --> 01:46:32,780 nëse ju shikoni për atë, për të të përcaktuar nëse një program të apo jo 2076 01:46:32,780 --> 01:46:37,050 Ekzekutimi i saktë apo i pasaktë. 2077 01:46:37,050 --> 01:46:40,450 >> Dhe kështu që na sjell në kjo, në fund të ditë. 2078 01:46:40,450 --> 01:46:43,917 Ne kemi filluar sot duke shikuar në debugging, dhe nga ana tjetër në kurs 2079 01:46:43,917 --> 01:46:46,750 në vetvete, dhe pastaj shumë interesant, teknikisht nën kapuç 2080 01:46:46,750 --> 01:46:49,490 në atë vargjet janë, të cilat zgjasin Javën ne vetëm mori për të dhënë, 2081 01:46:49,490 --> 01:46:51,900 dhe sigurisht mori me vete për të dhënë në Scratch. 2082 01:46:51,900 --> 01:46:56,040 >> Ne pastaj shikoi se si ne mund të hyni karaktere individuale në një varg, 2083 01:46:56,040 --> 01:47:00,310 dhe pastaj përsëri mori një nivel më të lartë shikoni në gjëra, duke kërkuar se si well-- 2084 01:47:00,310 --> 01:47:04,226 në qoftë se ne duam që të merrni në individuale elemente në një listë si strukturë, 2085 01:47:04,226 --> 01:47:05,850 Nuk mund ta bëjmë këtë me vargjet e shumta? 2086 01:47:05,850 --> 01:47:08,050 Dhe ne mund të me argumente command line. 2087 01:47:08,050 --> 01:47:12,800 Por kjo foto këtu i vetëm kuti është demonstrative e kësaj ideje të përgjithshme 2088 01:47:12,800 --> 01:47:14,451 e një grup, ose një lista, ose nje vektor. 2089 01:47:14,451 --> 01:47:16,450 Dhe në varësi të konteksti, të gjitha këto fjalë 2090 01:47:16,450 --> 01:47:17,880 thotë gjëra paksa të ndryshme. 2091 01:47:17,880 --> 01:47:20,060 Pra në C, ne jemi vetëm duke shkuar për të folur për një grup. 2092 01:47:20,060 --> 01:47:23,840 Dhe një koleksion është një copë e memories, secili prej të cilëve është 2093 01:47:23,840 --> 01:47:27,720 Elementet janë puqur, mbrapa, për të mbështetur, për të mbështetur, për të pasme. 2094 01:47:27,720 --> 01:47:31,970 >> Dhe këto elemente janë, në përgjithësi, të të njëjtit lloj të të dhënave, karakteri, 2095 01:47:31,970 --> 01:47:35,966 karakter, karakter, karakter, ose string, string, string, string, ose int, 2096 01:47:35,966 --> 01:47:38,600 int, int, çfarëdo qoftë ajo ne jemi duke u përpjekur për të ruajtur. 2097 01:47:38,600 --> 01:47:42,540 Por në fund të ditës, kjo eshte ajo që duket si konceptualisht. 2098 01:47:42,540 --> 01:47:44,530 Ju jeni duke marrë tuaj memorie kompjuteri ose RAM. 2099 01:47:44,530 --> 01:47:48,590 Dhe ju jeni gdhendje atë në kuti identike mesme, të cilat 2100 01:47:48,590 --> 01:47:50,920 janë kthyer, për të mbështetur, për të përsëri, për të mbështetur në këtë mënyrë. 2101 01:47:50,920 --> 01:47:53,200 >> Dhe çfarë është e bukur për kjo ide, dhe fakti 2102 01:47:53,200 --> 01:47:58,580 që ne mund të shprehin vlerat në këtë mënyrë me të parë të strukturave tona të të dhënave 2103 01:47:58,580 --> 01:48:02,520 në klasë, do të thotë që ne mund të fillojë për të zgjidhur problemet me kodin 2104 01:48:02,520 --> 01:48:04,079 që erdhi në mënyrë intuitive në javë 0. 2105 01:48:04,079 --> 01:48:05,870 Ju do të kujtojnë në telefon shembull libër, ku 2106 01:48:05,870 --> 01:48:09,110 kemi përdorur një ndarje dhe të pushtuar, ose një kërkim algorithm binar, 2107 01:48:09,110 --> 01:48:13,220 të analizoj me një e tërë bandë e emra dhe numra. 2108 01:48:13,220 --> 01:48:18,220 Por ne supozuar, risjell, se kjo Libri i telefonit është renditur tashmë, 2109 01:48:18,220 --> 01:48:21,630 se dikush tjetër kishte tashmë artistikisht dhënë out-- një listë të emrave 2110 01:48:21,630 --> 01:48:24,430 dhe numbers-- si të rendin alfabetik ato. 2111 01:48:24,430 --> 01:48:26,950 Dhe tani që në C ne, gjithashtu, kanë aftësinë 2112 01:48:26,950 --> 01:48:30,290 për të hedhur gjërat, të mos fizikisht në një libër telefoni 2113 01:48:30,290 --> 01:48:34,220 por praktikisht në një kompjuter të kujtesës, do të jemi në gjendje javën e ardhshme 2114 01:48:34,220 --> 01:48:38,470 për të futur përsëri this-- parë e strukturave tona të të dhënave në një array-- 2115 01:48:38,470 --> 01:48:43,530 por më e rëndësishmja, kompjuter aktuale algoritme shkenca zbatuar 2116 01:48:43,530 --> 01:48:47,720 në kod, me të cilat ne mund të ruajë të dhëna në strukturat si kjo, 2117 01:48:47,720 --> 01:48:50,730 dhe pastaj të fillojë për të manipuluar atë, dhe që në fakt zgjidhjen e problemeve me të, 2118 01:48:50,730 --> 01:48:53,570 dhe për të ndërtuar në krye të kësaj, në fund të fundit, programe në C, 2119 01:48:53,570 --> 01:48:56,730 në Python, në JavaScript, querying bazat e të dhënave me SQL? 2120 01:48:56,730 --> 01:48:59,980 >> Dhe ne do të shohim se të gjitha këto ide të ndryshme bashkoj. 2121 01:48:59,980 --> 01:49:04,100 Por tani për tani, kujtojnë se domain që ne kemi prezantuar sot 2122 01:49:04,100 --> 01:49:06,920 ishte kjo gjë këtu, dhe botën e kriptografisë. 2123 01:49:06,920 --> 01:49:11,200 Dhe në mesin e problemeve të ardhshme ju veten do të zgjidhë është arti i kriptografisë, 2124 01:49:11,200 --> 01:49:13,630 përpiqen dhe të përpiqen de- informacionit dhe ciphering 2125 01:49:13,630 --> 01:49:15,930 dhe deshifrimin tekst, dhe duke marrë në fund të fundit 2126 01:49:15,930 --> 01:49:18,970 se ju tani e dini se çfarë është nën kapuç 2127 01:49:18,970 --> 01:49:21,860 kështu që kur ju shikoni ose për të marrë një mesazh si ky, ju 2128 01:49:21,860 --> 01:49:24,060 vetë mund të deshifroj atë. 2129 01:49:24,060 --> 01:49:26,740 E gjithë kjo, dhe koha më e ardhshme. 2130 01:49:26,740 --> 01:49:29,890 2131 01:49:29,890 --> 01:49:30,790 >> [VIDEO rishikim] 2132 01:49:30,790 --> 01:49:32,970 >> -Mover Vetëm arriti. 2133 01:49:32,970 --> 01:49:35,146 Unë jam duke shkuar për të shkuar vizitë profesor i tij kolegj. 2134 01:49:35,146 --> 01:49:37,611 Yep. 2135 01:49:37,611 --> 01:49:40,080 Hi. 2136 01:49:40,080 --> 01:49:40,660 Kjo është që ju. 2137 01:49:40,660 --> 01:49:44,125 2138 01:49:44,125 --> 01:49:45,110 Prisni! 2139 01:49:45,110 --> 01:49:45,610 David. 2140 01:49:45,610 --> 01:49:53,936 2141 01:49:53,936 --> 01:49:56,060 Unë jam vetëm duke u përpjekur të kuptoj se çfarë ka ndodhur me ju. 2142 01:49:56,060 --> 01:49:58,130 Ju lutemi, çdo gjë mund të ndihmojë. 2143 01:49:58,130 --> 01:50:05,020 2144 01:50:05,020 --> 01:50:08,354 Ju keni qenë kolegji i tij shokun, apo jo? 2145 01:50:08,354 --> 01:50:10,770 Ti ishe aty me të kur ai përfundoi projektin CS50? 2146 01:50:10,770 --> 01:50:13,770 2147 01:50:13,770 --> 01:50:15,765 >> [MUSIC Duke luajtur] 2148 01:50:15,765 --> 01:50:32,110 2149 01:50:32,110 --> 01:50:33,150 >> -Kjo Ishte CS50. 2150 01:50:33,150 --> 01:50:42,690 2151 01:50:42,690 --> 01:50:44,770 >> Unë e dua këtë vend. 2152 01:50:44,770 --> 01:50:45,854 >> -Eat Up. 2153 01:50:45,854 --> 01:50:47,020 Ne jemi duke shkuar nga biznesi. 2154 01:50:47,020 --> 01:50:52,120 2155 01:50:52,120 --> 01:50:53,970 >> [END rishikim]