1 00:00:00,000 --> 00:00:02,988 [IERAKSTA ATSKAŅOŠANA] 2 00:00:02,988 --> 02:29:01,500 [MŪZIKA TIEK ATSKAŅOTA] 3 00:01:13,350 --> 00:01:16,090 DEIVIDS DŽ. MALANS: Labi, šis ir CS50. 4 00:01:16,090 --> 00:01:19,080 Un šī ir 1. nedēļa, kuras laikā mēs turpinām programmēšanu, bet darām 5 00:01:19,080 --> 00:01:22,070 to citā valodā, jo, atceries, ka pagājušajā reizē mēs koncentrējāmies 6 00:01:22,070 --> 00:01:25,060 uz šo grafisko valodu, ko sauc par Scratch. 7 00:01:25,060 --> 00:01:27,897 Taču mēs izmantojam Scratch ne tikai tāpēc, ka tas ir interesanti un 8 00:01:27,897 --> 00:01:30,735 pieejams, bet arī tāpēc, ka tas ļauj mums izpētīt daudzus no šiem 9 00:01:30,735 --> 00:01:33,572 jēdzieniem, proti, funkcijas un nosacījumus, Būla izteiksmes, cilpas, 10 00:01:33,572 --> 00:01:36,410 mainīgos lielumus un daudz ko citu. 11 00:01:36,410 --> 00:01:40,475 Pat, ja mūsdienu sintakse, kā mēs pāreju uz šo jauno valodu, ko sauc 12 00:01:40,475 --> 00:01:44,540 par C, izjūtam kā mazliet noslēpumainu, varbūt mazliet biedējošu, un 13 00:01:44,540 --> 00:01:48,605 jūs pilnībā nezināt visu simbolu nozīmi ārpus sintakses, saprotat, ka 14 00:01:48,605 --> 00:01:52,670 idejas galu galā būs tādas pašas. 15 00:01:52,670 --> 00:01:55,896 Faktiski, pārejot no tā, kas bija pagājušajā nedēļā, t.i., programmas 16 00:01:55,896 --> 00:01:59,123 hello world, kas izskatījās nedaudz līdzīga šai, šonedēļ, protams, tā 17 00:01:59,123 --> 00:02:02,350 izskatīsies nedaudz noslēpumaināka. 18 00:02:02,350 --> 00:09:02,990 Tas izskatīsies nedaudz līdzīgs šim. 19 00:02:04,350 --> 00:02:06,759 Pat tad, ja jūs nevarat precīzi atšķirt, ko šajā kodā nozīmē visi 20 00:02:06,759 --> 00:02:09,168 dažādie simboli, izrādās, ka dienas beigās dators patiešām darīs to, 21 00:02:09,168 --> 00:02:11,578 ko jūs sagaidāt. 22 00:02:11,578 --> 00:02:13,474 Tas vienkārši teiks: hello, world uz ekrāna, tāpat kā mēs to darījām 23 00:02:13,474 --> 00:02:15,370 Scratch valodā. 24 00:02:15,370 --> 00:02:19,610 Tāpēc vispirms šiem marķieriem pielietosim kādu terminoloģiju. 25 00:02:19,610 --> 00:02:21,825 Tātad to, ko mēs turpmāk redzēsim un rakstīsim, mēs sauksim par 26 00:02:21,825 --> 00:02:24,040 pirmkodu. 27 00:02:24,040 --> 00:02:27,908 Programmētāja rakstīto kodu turpmāk sauks par pirmkodu. 28 00:02:27,908 --> 00:02:29,200 Nav svarīgi, vai tas ir Scratch. 29 00:02:29,200 --> 00:02:32,370 Nav svarīgi, vai tas ir C. 30 00:02:29,200 --> 00:02:32,370 Nav svarīgi, vai drīzumā tā būs Python valoda. 31 00:02:32,370 --> 00:02:37,330 Pirmkods ir vispārīgs termins tam, ko mēs kā programmētāji rakstīsim. 32 00:02:37,330 --> 00:02:42,190 Protams, izrādās, ka datori nesaprot pirmkodu. 33 00:02:42,190 --> 00:02:44,695 Kā mēs to redzēsim, datori nesaprot Scratch un Puzzle Pieces vai C 34 00:02:44,695 --> 00:02:47,200 kodu. 35 00:02:47,200 --> 00:02:49,870 Viņi saprot tikai to, ko mēs nosaucām pagājušajā nedēļā. 36 00:02:49,870 --> 00:02:50,650 KLAUSĪTĀJI: Nulles un vieninieki. 37 00:02:50,650 --> 01:53:39,130 DEIVIDS DŽ. MALANS: Jā. 38 00:02:51,525 --> 00:02:53,080 Tātad tas ir binārs, tikai nulles un vieninieki. 39 00:02:53,080 --> 00:02:56,470 Patiesībā tā ir tikai informācija, kas izteikta binārā formā. 40 00:02:56,470 --> 00:03:00,572 Patiesībā tagad tehniskais termins nullēm un vieniniekiem, ko dators 41 00:03:00,572 --> 00:03:04,675 ne tikai saprot kā burtus vai ciparus, vai krāsas, vai attēlus, vai 42 00:03:04,675 --> 00:03:08,777 kaut ko vairāk, bet arī zina, kā izpildīt un ko turpmāk sauks par 43 00:03:08,777 --> 00:03:12,880 mašīnkodu pretstatā pirmkodam. 44 00:03:12,880 --> 00:03:18,860 Cilvēki raksta pirmkodu, bet dators saprot tikai mašīnkodu. 45 00:03:18,860 --> 00:03:22,106 Lai gan mēs neiedziļināsimies detaļās par to, ko tieši simbolu 46 00:03:22,106 --> 00:03:25,353 modelis nozīmē, jūs redzēsiet, ka šādā nulles un vieninieku kopās būs 47 00:03:25,353 --> 00:03:28,600 skaitļi. 48 00:03:28,600 --> 00:03:29,530 Būs burti. 49 00:03:29,530 --> 00:03:32,980 -Būs arī instrukcijas, jo datori patiešām labi veic tādas darbības 50 00:03:32,980 --> 00:03:36,430 kā saskaitīšana, atņemšana, satura pārvietošanu atmiņā un ārā no tās. 51 00:03:36,430 --> 00:03:40,686 Pietiek teikt, ka Mac datoru, PCs un citu datoru ražotāji ir 52 00:03:40,686 --> 00:03:44,943 izlēmuši, ko noteiktas nuļļu un vieninieku kopas nozīmē arī attiecībā 53 00:03:44,943 --> 00:03:49,200 uz darbībām – tātad ne tikai datus, bet arī instrukcijas. 54 00:03:49,200 --> 00:03:52,575 Taču mēs nekoncentrēsimies uz šīm kopām tādā klasē kā šī. 55 00:03:52,575 --> 00:03:55,742 Mēs koncentrēsimies uz augstāka līmeņa programmatūru, pieņemot, ka 56 00:03:55,742 --> 00:03:58,910 mums kaut kādā veidā ir jāizvada mašīnkods. 57 00:03:58,910 --> 00:04:01,646 Tādējādi izrādās, ka šī problēma, kas mums ir jāatrisina, pārejot no 58 00:04:01,646 --> 00:04:04,383 pirmkoda uz mašīnkodu, faktiski iekļaujas tajā pašā paradigmā, kā 59 00:04:04,383 --> 00:04:07,120 iepriekšējā reizē. 60 00:04:07,120 --> 00:04:11,230 Bet šajā gadījumā ievade no vienas puses būs pirmkods. 61 00:04:11,230 --> 00:04:13,330 Tas ir tas, ko mēs ideālā gadījumā rakstīsim, lai nebūtu jāraksta 62 00:04:13,330 --> 00:04:15,430 nulles un vieninieki. 63 00:04:15,430 --> 00:04:18,580 Tomēr mums ir kaut kādā veidā jāizvada mašīnas kods, jo tas ir tas, 64 00:04:18,580 --> 00:04:21,730 ko jūsu Mac datori, personālie datori un tālruņi faktiski sapratīs. 65 00:04:21,730 --> 00:04:25,260 Izrādās, ka ir īpašas programmas, kuru mērķis ir veikt tieši šo 66 00:04:25,260 --> 00:04:28,790 pārveidošanu — konvertēt pirmkodu, ko mēs rakstām kāmašīnkodu, ko 67 00:04:28,790 --> 00:04:32,320 atpazīst mūsu tālruņi un datori. 68 00:04:32,320 --> 00:04:36,050 Un šāda veida programmu sauks par kompilatoru. 69 00:04:36,050 --> 00:04:39,400 Tāpēc šodien mēs jūs iepazīstināsim ar citu veidu programmatūru. 70 00:04:39,400 --> 00:04:40,810 Un tās ir dažādas. 71 00:04:40,810 --> 00:04:44,807 Šeit mēs izmantosim populāru kodu, kas ļauj konvertēt no pirmkoda C 72 00:04:44,807 --> 00:04:48,805 valodā uz mašīnkodu ar nullēm un vieniniekiem. 73 00:04:48,805 --> 00:04:50,680 Jums tas nebija jādara, izmantojot Scratch. 74 00:04:50,680 --> 00:04:54,040 Scratch pasaulē tas bija tik vienkārši kā noklikšķināt uz zaļā 75 00:04:54,040 --> 00:04:57,400 karoga, jo būtībā MIT veica visu smago darbu, pārvēršot šīs grafiskās 76 00:04:57,400 --> 00:05:00,760 puzles daļas par mašīnkodu. 77 00:05:00,760 --> 00:05:03,655 No šodienas, kad mēs sākam mācīties programmēšanu un datorzinātni, 78 00:05:03,655 --> 00:05:06,550 tagad šī prasme pāriet jūsu rokās. 79 00:05:06,550 --> 00:05:09,340 Šāda veida pārveidošana ir atkarīga no jums. 80 00:05:09,340 --> 00:05:12,415 Par laimi, fakts, ka šie kompilatori pastāv, nozīmē, ka mums nav 81 00:05:12,415 --> 00:05:15,490 jāprogrammē mašīnkodā, kā to kādreiz darīja mūsu senči, vai nu 82 00:05:15,490 --> 00:05:18,565 virtuāli, vai ar fiziskām perfokartēm, kā, piemēram, papīra lapām ar 83 00:05:18,565 --> 00:05:21,640 caurumiem. 84 00:05:21,640 --> 00:05:25,810 Mums ir jākoncentrējas uz tastatūru. 85 00:05:25,810 --> 00:05:29,370 Šodien tas nebūs tikai jautājums par koda rakstīšanu. 86 00:05:29,370 --> 00:05:32,930 Tas būs arī jautājums par laba koda rakstīšanu. 87 00:05:32,930 --> 00:05:35,180 Un šī ir tāda lieta, ko jūs neapgūsit vienas dienas laikā. 88 00:05:35,180 --> 00:05:35,870 Tam ir nepieciešams laiks. 89 00:05:35,870 --> 00:05:36,620 Kā arī prakse. 90 00:05:36,620 --> 00:05:38,835 Tāpat kā esejas rakstīšana par jebkuru tematu var aizņemt laiku, kā 91 00:05:38,835 --> 00:05:41,050 arī prakse un pastāvīga atkārtošana laika gaitā. 92 00:05:41,050 --> 00:05:45,205 Bet tādā programmēšanas klasē kā CS50 mēs centīsimies kopumā novērtēt 93 00:05:45,205 --> 00:05:49,360 koda kvalitāti šajās trīs asīs. 94 00:05:49,360 --> 00:05:51,040 Pirmkārt, vai tas ir pareizi? 95 00:05:51,040 --> 00:05:52,810 Vai kods dara to, kas tam ir jādara? 96 00:05:52,810 --> 00:05:55,835 Ja tā nav, kāda jēga tad, pirmkārt, bija to rakstīt? 97 00:05:55,835 --> 00:05:57,592 Tāpēc ir pašsaprotami, ka vēlaties, lai jūsu rakstītais kods būtu 98 00:05:57,592 --> 00:05:59,350 pareizs. 99 00:05:59,350 --> 00:06:00,820 Un tas acīmredzot tā nav vienmēr. 100 00:06:00,820 --> 00:06:03,925 Ikreiz, kad jūsu Mac vai PCs, vai tālrunis ir pārstājis darboties, 101 00:06:03,925 --> 00:06:07,030 kāds cilvēks kaut kur ierakstīja kļūdainu  kodu. 102 00:06:07,030 --> 00:06:10,060 Taču koda pareizība būs pirmais un galvenais mērķis. 103 00:06:10,060 --> 00:06:13,930 Subjektīvs mērķis redzēt perspektīvā ir dizaina jautājums. 104 00:06:13,930 --> 00:06:16,490 Mēs to nedaudz redzējām pagājušajā nedēļā, kad es ierosināju, ka mēs 105 00:06:16,490 --> 00:06:19,050 varētu labāk izstrādāt pat norauses programmas, iespējams, izmantojot 106 00:06:19,050 --> 00:06:21,610 cilpas, nevis vienkārši kopējot un ievietojot vienus un tos pašus 107 00:06:21,610 --> 00:06:24,170 blokus atkārtoti. 108 00:06:24,170 --> 00:06:26,080 Tātad dizains ir subjektīvāks. 109 00:06:26,080 --> 00:06:29,481 Tā ir vairāk kā apgūta māksla, kurā divi cilvēki var nepiekrist tam, 110 00:06:29,481 --> 00:06:32,882 kura programmas versija ir labāk izstrādāta. 111 00:06:32,882 --> 00:06:36,486 Nākamo nedēļu laikā mēs demonstrēsim pamatelementus un principus, lai 112 00:06:36,486 --> 00:06:40,090 jūs varētu labāk izprast, vai jūsu kods ir labi izstrādāts. 113 00:06:40,090 --> 00:06:41,530 Un kāpēc tas ir vērtīgi? 114 00:06:41,530 --> 00:06:45,484 Jo labāk ir izstrādāts jūsu kods un ātrāk tas darbosies , jo jūs ar 115 00:06:45,484 --> 00:06:49,438 kolēģiem to labāk varēsiet izmantot. 116 00:06:49,438 --> 00:06:50,900 Tātad labs dizains ir laba lieta. 117 00:06:50,900 --> 00:06:52,695 Tas palīdz jums dalīties ar savām idejām, tāpat kā tipiskā angļu 118 00:06:52,695 --> 00:06:54,490 esejā. 119 00:06:54,490 --> 00:06:57,523 Un tad, visbeidzot, mēs šonedēļ runāsim par stilu. 120 00:06:57,523 --> 00:06:59,690 Un tā patiesībā ir tieši jūsu koda estētika. 121 00:06:59,690 --> 00:07:05,220 Izrādās, ka datoriem bieži vien ir vienalga, cik neglīts ir jūsu 122 00:07:05,220 --> 00:07:10,750 faktiskais kods, jo patiesībā lietas nav īpaši jāizceļ. 123 00:07:10,750 --> 00:07:13,150 Jums nav jānumurē lappuses, kā, piemēram, esejā. 124 00:07:13,150 --> 00:07:16,390 Datoram parasti ir vienalga, bet cilvēkam nav vienalga. 125 00:07:16,390 --> 00:07:17,817 Skolotāja asistentam arī nav vienalga. 126 00:07:17,817 --> 00:07:19,688 Nākamajā dienā jums tas būs svarīgi, kad mēģināsiet saprast, ko dara 127 00:07:19,688 --> 00:07:21,560 jūsu kods. 128 00:07:21,560 --> 00:07:25,520 Mēs beidzot koncentrēsimies uz stilu, jūsu rakstītā koda estētiku. 129 00:07:25,520 --> 00:07:27,280 Tātad, kur mēs rakstīsim kodu? 130 00:07:27,280 --> 00:07:28,940 Kur mēs kompilēsim kodu? 131 00:07:28,940 --> 00:07:32,386 Šai klasei ne tikai ar C valodu, bet arī ar citām valodām, kuras 132 00:07:32,386 --> 00:07:35,833 vēlāk izmantosim šajā semestrī, mēs lietosim brīvpiekļuves teksta 133 00:07:35,833 --> 00:07:39,280 redaktoru, kas ir programma Visual Studio Code, AKA VS Code. 134 00:07:39,280 --> 00:07:42,625 Mūsdienās tas ir ļoti populārs ne tikai attiecībā uz C, bet arī C++, 135 00:07:42,625 --> 00:07:45,970 Python un Java, kā arī daudzām citām valodām. 136 00:07:45,970 --> 00:07:49,270 Tas ir teksta redaktors tādā nozīmē, ka tas ļauj rediģēt tekstu. 137 00:07:49,270 --> 00:07:52,150 Un tas attiecībā uz kodu ir viss. 138 00:07:52,150 --> 00:07:54,907 Jūs varētu rakstīt kodu ar zīmuli uz papīra . 139 00:07:54,907 --> 00:07:57,219 Ja jūs apmeklētu stundu vidusskolā, , jūs būtu varējis to pildīt kā 140 00:07:57,219 --> 00:07:59,532 klases vingrinājumu vienu vai vairākas reizes. 141 00:07:59,532 --> 00:08:01,032 Protams, jūs to nevarat palaist uz papīra, bet jūs noteikti varat to 142 00:08:01,032 --> 00:08:02,532 uzrakstīt. 143 00:08:02,532 --> 00:08:04,886 Jūs varētu izmantot kaut ko līdzīgu Microsoft Word, Notepad.exe vai 144 00:08:04,886 --> 00:08:07,240 teksta rediģēšanai operētājsistēmā Mac. 145 00:08:07,240 --> 00:08:09,910 Neviena no šīm programmām nav īsti paredzēta koda formatēšanai jums 146 00:08:09,910 --> 00:08:12,580 vispiemērotākajā veidā, tāpat kā nav paredzēta arī tam, lai jūs 147 00:08:12,580 --> 00:08:15,250 varētu kompilēt un palaist kodu. 148 00:08:15,250 --> 00:08:18,745 Tātad VS Code būs rīks, ar kura palīdzību jūs varat darīt visu to un 149 00:08:18,745 --> 00:08:22,240 vēl vairāk, t. i., rakstīt, kompilēt, palaist kodu. 150 00:08:22,240 --> 00:08:26,420 Lai jums visiem nebūtu jācīnās ar tehniskām problēmām kursa sākumā, 151 00:08:26,420 --> 00:08:30,600 instalējot šo programmatūru jūsu Mac vai PCs, mēs izmantosim uz 152 00:08:30,600 --> 00:08:34,780 mākoņa bāzes balstītu VS Code versiju vietnē code.cs50. io. 153 00:08:34,780 --> 00:08:36,580 Un tas būs tieši tāds pats rīks. 154 00:08:36,580 --> 00:08:39,776 Mērķis ir līdz semestra beigām pārcelt jūs no šīs mākoņdatošanas 155 00:08:39,776 --> 00:08:42,973 vides uz jūsu Mac un PCs, lai pat tad, ja CS50 ir vienīgā CS klase, 156 00:08:42,973 --> 00:08:46,170 kuru jūs kādreiz esat apmeklējis, jūs esat vismaz kādu laiku 100% 157 00:08:46,170 --> 00:08:49,366 sagatavots, lai turpinātu rakstīt kodu pēc nodarbības, izmantojot 158 00:08:49,366 --> 00:08:52,563 nevis kaut ko, kas ir raksturīgs pat CS50, bet gan de facto nozares 159 00:08:52,563 --> 00:08:55,760 standartu. 160 00:08:55,760 --> 00:08:58,375 Tātad, kā izskatīsies šī programma VS Code neatkarīgi no tā, vai tā 161 00:08:58,375 --> 00:09:00,990 būs jūsu Mac, PC vai sākotnēji jūsu pārlūkprogrammā? 162 00:09:02,990 --> 00:09:05,657 Uz ekrāna būs vairāki atšķirīgi reģioni. 163 00:09:05,657 --> 00:09:07,996 Šeit ir redzams tas pats kods, kuru es turpinu piedāvāt kā 164 00:09:07,996 --> 00:09:10,335 vienkāršāko programmu, ko varat rakstīt C valodā. 165 00:09:10,335 --> 00:09:12,460 Un kas ir šie dažādie ekrāna reģioni? 166 00:09:12,460 --> 00:09:15,440 Būtībā to ir četri. 167 00:09:15,440 --> 00:09:18,300 Tātad, pirmkārt, augšpusē būs izcelta viena vai vairākas cilnes, 168 00:09:18,300 --> 00:09:21,160 kurās jūs ierakstīsit kodu. 169 00:09:21,160 --> 00:09:23,050 Līdzīgi kā Google dokumentos vai Microsoft Word, jūs varat atvērt 170 00:09:23,050 --> 00:09:24,940 cilnes ar failiem. 171 00:09:24,940 --> 00:09:27,885 Līdzīgi kā VS Code vai jebkurā citā programmēšanas vidē, mūsdienās 172 00:09:27,885 --> 00:09:30,830 parasti ir sava veida cilnes. 173 00:09:30,830 --> 00:09:34,480 Šķiet, ka šī būs cilne, kurā būs fails, saukts hello.c. 174 00:09:34,480 --> 00:09:38,020 Tas būs pirmais fails, ko mēs tūlīt rakstīsim. 175 00:09:38,020 --> 00:09:41,920 Tomēr šeit būs saskarne, kuru daudzi no jums, iespējams, nezina. 176 00:09:41,920 --> 00:09:44,170 To sauc par termināļa logu. 177 00:09:44,170 --> 00:09:46,945 Un termināļa logs nodrošina to, ko parasti sauc par komandrindas 178 00:09:46,945 --> 00:09:49,720 saskarni jeb CLI. 179 00:09:49,720 --> 00:09:53,680 Un tas ir pretstatā grafiskā lietotāja saskarnei jeb GUI. 180 00:09:53,680 --> 00:09:57,760 Tagad mēs katru dienu lietojam GUI savos tālruņos unPCs. 181 00:09:57,760 --> 00:10:01,420 Un GUI ir burtiski grafisks — tātad izvēlnes, pogas un ikonas. 182 00:10:01,420 --> 00:10:03,900 Lai mijiedarbotos ar to, jūs parasti izmantojat pirkstu vai 183 00:10:03,900 --> 00:10:06,380 skārienpaliktni, peli vai kaut ko tamlīdzīgu. 184 00:10:06,380 --> 00:10:09,947 Bet izrādās, ka daudzi programmētāji — viņi gan saka, ka lielākā daļa 185 00:10:09,947 --> 00:10:13,515 programmētāju ar laiku dod priekšroku nevis GUI, bet CLI, 186 00:10:13,515 --> 00:10:17,082 komandrindas saskarnei, kurā jūs faktiski visu darāt nedaudz 187 00:10:17,082 --> 00:10:20,650 mistiski, izmantojot tikai tastatūru. 188 00:10:20,650 --> 02:11:42,940 Kāpēc? 189 00:10:21,250 --> 00:10:23,755 Izrādās, ka lielākajā daļā datoru ir iebūvēts vairāk funkciju, ja 190 00:10:23,755 --> 00:10:26,260 vien varat tām piekļūt, izmantojot tastatūru. 191 00:10:26,260 --> 00:10:27,895 Izrādās, lielākā daļa no mums spēj rakstīt ātrāk, nekā jūs varat 192 00:10:27,895 --> 00:10:29,530 pārvietot peles kursoru un noklikšķināt. 193 00:10:29,530 --> 00:10:32,330 Un tādējādi laika gaitā tas palielina efektivitāti. 194 00:10:32,330 --> 00:10:35,016 Vai ar laiku jūs varēsiet ērti izmantot šo termināļa logu, lai, , 195 00:10:35,016 --> 00:10:37,703 piemēram, kompilētu savu kodu vai izveidotu programmu, kā arī lai to 196 00:10:37,703 --> 00:10:40,390 palaistu. 197 00:10:40,390 --> 00:10:43,095 Tātad sākumā jūs nebūsiet pieradis tikai divreiz noklikšķināt uz 198 00:10:43,095 --> 00:10:45,800 ikonām, līdzīgi tam, kā mēs to darām reālajā pasaulē. 199 00:10:45,800 --> 00:10:47,890 Jūs to darīsiet tā, kā to dara programmētājs. 200 00:10:47,890 --> 00:10:49,855 Taču nav izslēgta ikonu pievienošana, klikšķināmība un vēl daudz kas 201 00:10:49,855 --> 00:10:51,820 cits. 202 00:10:51,820 --> 00:10:55,250 VS Code kreisajā pusē būs zināmais File Explorer — sava veida 203 00:10:55,250 --> 00:10:58,680 hierarhisks koks, kā tas ir jūsu Mac vaiPC, kur jūs varat redzēt 204 00:10:58,680 --> 00:11:02,110 visus sava konta failus. 205 00:11:02,110 --> 00:11:04,125 Šeit, piemēram, ir redzams tikai hello.c, kuru es pēc brīža izveidošu 206 00:11:04,125 --> 00:11:06,140 pats. 207 00:11:06,140 --> 00:11:09,200 Un tad tālu kreisajā pusē ir tā sauktā aktivitāšu josla, un šeit jūs 208 00:11:09,200 --> 00:11:12,260 vienkārši iegūstat daudz tradicionālo izvēlņu un pogu. 209 00:11:12,260 --> 00:11:16,250 Tātad VS Code nodrošina gan ar GUI, gan ar CLI. 210 00:11:16,250 --> 00:11:19,250 Bet tas ir CLI, termināļa logā, ekrāna apakšējā apgabalā, kurā mēs 211 00:11:19,250 --> 00:11:22,250 faktiski ierakstīsim lielāko daļu komandu. 212 00:11:22,250 --> 00:11:25,315 Un vispār klasē es domāju paslēpt visus grafiskos elementus, par 213 00:11:25,315 --> 00:11:28,380 kuriem nav lielas intereses. 214 00:11:28,380 --> 00:11:30,629 Pēc visa iepriekšminētā,ļaujiet man pāriet uz VS Code tiešsaistes 215 00:11:30,629 --> 00:11:32,878 versiju. 216 00:11:32,878 --> 00:11:34,670 Un es patiešām esmu tos paslēpis aktivitāšu rīkjoslā. 217 00:11:34,670 --> 00:11:36,470 Es tiešām esmu paslēpis File Explorer. 218 00:11:36,470 --> 00:11:39,655 Tātad redzamības labad man šeit ir patiešām liels laukums koda 219 00:11:39,655 --> 00:11:42,840 rakstīšanai un ļoti liels termināļa logs apakšā. 220 00:11:42,840 --> 00:11:45,260 Termināļa logā jūs redzēsiet dolāra zīmi. 221 00:11:45,260 --> 00:11:47,160 Tas nenozīmē nekādu valūtu. 222 00:11:47,160 --> 00:11:49,195 Šis ir tikai standarta simbols, kas šeit apzīmē ekrāna izvades 223 00:11:49,195 --> 00:11:51,230 komandas. 224 00:11:51,230 --> 00:11:53,360 Tātad fakts, ka šeit ir tikai dolāra zīme un kursors, galu galā 225 00:11:53,360 --> 00:11:55,490 nozīmē to, ka es tur rakstīšu komandas. 226 00:11:55,490 --> 00:11:58,020 Bet vispirms es patiešām izveidošu kādu kodu. 227 00:11:58,020 --> 00:12:01,636 Tātad, kā es varu programmēt, izmantojot VS Code — neatkarīgi no tā, 228 00:12:01,636 --> 00:12:05,253 vai tas ir manā Mac, PC vai šajā mākonī bāzētajā vidē, kas tiks 229 00:12:05,253 --> 00:12:08,870 iestatīta 1. problēmu kopai, un turpināt rakstīt savu pirmo failu? 230 00:12:08,870 --> 00:12:10,610 Iespējams, vienkāršākais veids ir šis. 231 00:12:10,610 --> 00:12:12,905 Burtiski palaidiet komandas kodu un pēc tam tā faila nosaukumu, kuru 232 00:12:12,905 --> 00:12:15,200 vēlaties izveidot. 233 00:12:15,200 --> 00:12:18,838 Ievērojiet, ka es apzināti beidzu failu ar .c ar mazajiem burtiem! 234 00:12:18,838 --> 00:12:20,109 Ievērojiet, ka esmu apzināti rakstījisvisu faila nosaukumu ar 235 00:12:20,109 --> 00:12:21,380 mazajiem burtiem! 236 00:12:21,380 --> 00:12:22,672 Un tie ir tikai nosacījumi. 237 00:12:22,672 --> 00:12:24,140 Jūs varētu izmantot lielo H. 238 00:12:24,140 --> 00:12:27,260 Jūs varētu izmantot lielo C. 239 00:12:24,140 --> 00:12:27,620 Bet vienkārši nedariet to! Ievērojiet paraugpraksi, lai tā atbilstu 240 00:12:27,620 --> 00:12:31,100 tam, ko gandrīz visi citi darītu! 241 00:12:31,100 --> 00:12:33,320 Nospiežot taustiņu Enter, tiek parādīta tukša cilne, tāpat kā pirms 242 00:12:33,320 --> 00:12:35,540 brīža ekrānuzņēmumā. 243 00:12:35,540 --> 00:12:37,820 Un tieši šajā cilnē es tagad varu uzrakstīt savu pirmo programmu C 244 00:12:37,820 --> 00:12:40,100 valodā. 245 00:12:40,100 --> 00:12:43,046 Diemžēl tas nav lietotājam tik draudzīgs kā Scratch, kur jūs velciet 246 00:12:43,046 --> 00:12:45,992 un nometiet pāris puzles gabalus, un lieta darīta. 247 00:12:45,992 --> 00:12:47,450 Tāpēc es to darīšu atmiņai. 248 00:12:47,450 --> 00:12:49,970 Bet arī tas jums ar laiku kļūs pazīstams. 249 00:12:49,970 --> 00:12:53,720 Es iekļaušu kaut ko, ko sauc par stdio.h. 250 00:12:53,720 --> 00:12:57,230 Iekavās ierakstīšu int main, void iekavās. 251 00:12:57,230 --> 00:13:01,190 Jaunā rindā es ievietošu dažasfigūriekavas, kā mēs tās sauksim. 252 00:13:01,190 --> 00:13:05,553 Tad es ierakstīšu printf un dažas apaļās iekavas, tad pēdiņās hello, 253 00:13:05,553 --> 00:13:09,916 comma, world, tad atpakaļvērsto slīpsvītru, tad mazo burtu n, pēc tam 254 00:13:09,916 --> 00:13:14,280 aizvērtās pēdiņas un tad semikolu pašās rindas beigās. 255 00:13:14,280 --> 00:13:16,645 Tāpēc viss, ko esmu atjaunojis, ir tikai no atmiņas izveidojis pirmo 256 00:13:16,645 --> 00:13:19,010 programmu. 257 00:13:19,010 --> 00:13:21,710 Pēc neilga laika mēs noskaidrosim, ko lielākā programmas daļa dara. 258 00:13:21,710 --> 00:13:23,857 Bet pagaidām palaidīsim to. 259 00:13:23,857 --> 00:13:26,848 Un tāpat kā es pagājušajā nedēļā pirmo reizi noklikšķināju uz zaļā 260 00:13:26,848 --> 00:13:29,840 karoga, apkoposim un palaidīsim šo programmu. 261 00:13:29,840 --> 00:13:32,362 Ja tas būtu jūsu Mac vai PC un Google, vai Microsoft, vai kāds cits 262 00:13:32,362 --> 00:13:34,885 būtu izveidojis programmatūru, šajā brīdī mēs veiktu dubultklikšķi uz 263 00:13:34,885 --> 00:13:37,408 ikonas. 264 00:13:37,408 --> 00:13:38,450 Bet mēs to vēl nevaram izdarīt. 265 00:13:38,450 --> 00:13:39,930 Tas joprojām ir pirmkods. 266 00:13:39,930 --> 00:13:42,380 Tāpēc es noklikšķināšu atpakaļ savā termināļa logā. 267 00:13:42,380 --> 00:13:45,130 Ievērojiet, ka zem pirmās dolāra zīmes ir otrā, un tas nozīmē, ka tā 268 00:13:45,130 --> 00:13:47,880 ir gatava komandai. 269 00:13:47,880 --> 00:13:51,706 Un tagad komanda, ar kuras palīdzību padarīt šo programmu reālu, 270 00:13:51,706 --> 00:13:55,533 kompilētu to no pirmkoda uz mašīnkodu, būs vienkārši darāmsun tad 271 00:13:55,533 --> 00:13:59,360 programmas nosaukums, kuru vēlos izveidot. 272 00:13:59,360 --> 00:14:02,615 Neliels smalkums — es apzināti izlaižu .c, jo programma, kuru vēlos 273 00:14:02,615 --> 00:14:05,870 izveidot, ir hello. 274 00:14:05,870 --> 00:14:07,400 Neraksti make hello.c. 275 00:14:07,400 --> 00:14:08,780 Vienkārši rakstiet make hello.c. 276 00:14:08,780 --> 00:14:13,040 Un šī programmas versija būtībā ir mūsu kompilators. 277 00:14:13,040 --> 00:14:15,310 Tehniski runājot, tā ir programma, kas automatizē manas programmas 278 00:14:15,310 --> 00:14:17,580 kompilēšanu. 279 00:14:17,580 --> 00:14:20,180 Bet tā redzēs, ka esmu ierakstījis vārdu hello.c. 280 00:14:20,180 --> 00:14:23,683 Tagad tā automātiski meklēs cietajā diskā esošo failu hello.c un 281 00:14:23,683 --> 00:14:27,186 konvertēs to no pirmkoda C valodā uz mašīnkodu ar nullēm un 282 00:14:27,186 --> 00:14:30,690 vieniniekiem. 283 00:14:30,690 --> 00:14:33,930 Tātad, ja es nepieļāvu nevienu drukas kļūdu, nospiežot Enter, nekas 284 00:14:33,930 --> 00:14:37,170 nenotiks. 285 00:14:37,170 --> 00:14:38,210 Un tā ir laba lieta. 286 00:14:38,210 --> 00:14:40,036 Gandrīz vienmēr, ja nekas netiek izvadīts uz ekrāna, jūs izdarījāt 287 00:14:40,036 --> 00:14:41,862 labi. 288 00:14:41,862 --> 00:14:43,070 Jūs nepieļāvāt nevienu kļūdu. 289 00:14:43,070 --> 00:14:43,880 Uz tevi nekliedza. 290 00:14:43,880 --> 00:14:45,000 Nav ziņojumu par kļūdām. 291 00:14:45,000 --> 00:14:46,590 Tātad šī patiesībā ir laba lieta. 292 00:14:46,590 --> 00:14:47,942 Kā man tagad palaist šo programmu? 293 00:14:47,942 --> 00:14:50,026 Ievērojiet, ka man ir trešā dolāra zīme, kas nozīmē, ka esmu gatavs 294 00:14:50,026 --> 00:14:52,110 trešajai komandai. 295 00:14:52,110 --> 00:14:55,400 Un tagad es turpināšu un palaidīšu ./hello. 296 00:14:55,400 --> 00:14:57,099 Tas, protams, ir nedaudz dīvaini, ka jums ir jāraksta punkta 297 00:14:57,099 --> 00:14:58,798 slīpsvītra. 298 00:14:58,798 --> 00:15:01,775 Pagaidām vienkārši ticiet, ka šādā veidā jūs palaižat programmu hello 299 00:15:01,775 --> 00:15:04,752 savā pašreizējā mapē, pašreizējā direktorijā šajā mākonī bāzētajā 300 00:15:04,752 --> 00:15:07,730 vidē. 301 00:15:07,730 --> 00:15:10,430 Vēlreiz, nospiežot Enter, turiet īkšķus, lai izdotos. 302 00:15:10,430 --> 00:29:54,900 Ungatavs. 303 00:15:12,110 --> 00:15:15,950 Mana pati pirmā programma C valodā ir hello, world. 304 00:15:15,950 --> 00:15:18,621 Un tagad ļaujiet man turpināt un atklāt iepriekš piedāvāto 305 00:15:18,621 --> 00:15:21,292 pārlūkprogrammu File Explorer! 306 00:15:21,292 --> 00:15:23,750 Es tikai izmantošu klaviatūras īsinājumtaustiņu, lai to atklātu. 307 00:15:23,750 --> 00:15:26,000 Parasti es to turu slēgtu, jo man tiešām nav pastāvīgi jāmeklē, kādi 308 00:15:26,000 --> 00:15:28,250 faili ir manā kontā. 309 00:15:28,250 --> 00:15:31,760 Bet tagad jūs redzēsit File Explorer, kas pēc būtības ir līdzīgs Mac 310 00:15:31,760 --> 00:15:35,270 vai PC, bet grafiski nedaudz atšķirīgs, šeit ir mans fails hello.c. 311 00:15:35,270 --> 00:15:37,520 Tas ir izcelts, jo man ir atvērta šī cilne. 312 00:15:37,520 --> 00:15:40,970 Bet tagad šeit ir otrs fails, ko vienkārši sauc hello. 313 00:15:40,970 --> 00:15:42,690 Tāds ir manas programmas nosaukums. 314 00:15:42,690 --> 00:15:44,395 Tātad, ja jūs izmantotu Mac vai PC, ideālā gadījumā jūs spiestu 315 00:15:44,395 --> 00:15:46,100 dubultklikšķi. 316 00:15:46,100 --> 00:15:48,162 Komandrindas vidē to nevar izdarīt. 317 00:15:48,162 --> 00:15:49,370 Jums tas ir jāpalaiž šeit. 318 00:15:49,370 --> 00:15:50,453 Bet tas ir viss, ko mēs esam paveikuši. 319 00:15:50,453 --> 00:15:53,346 Mēs esam izveidojuši failu ar nosaukumu hello.c, un pēc tam mans 320 00:15:53,346 --> 00:15:56,240 kompilators no tā izveidoja programmu. 321 00:15:56,240 --> 00:15:59,105 Ļaujiet man šeit apstāties un paskatīties, vai ir kādi jautājumi, jo 322 00:15:59,105 --> 00:16:01,970 tas nozīmē daudz maģisku frāžu. 323 00:16:01,970 --> 01:53:35,010 Jā? 324 00:16:04,450 --> 00:16:04,950 Jā. 325 00:16:04,950 --> 00:16:07,950 Tātad, ja jūs pašlaik sekojat līdzi, spēlējat mājās un saņemat kādu 326 00:16:07,950 --> 00:16:10,950 ziņojumu par kļūdu, daļu no šodienas es veltīšu, lai rādītu dažus no 327 00:16:10,950 --> 00:16:13,950 tiem. 328 00:16:13,950 --> 00:16:16,635 Pagaidām ļaujiet man tikai pateikt, ka, ja jūs izdarījāt tieši to 329 00:16:16,635 --> 00:16:19,320 pašu, ko es, jūs noteikti kaut kur esat pieļāvis drukas kļūdu. 330 00:16:19,320 --> 00:16:23,790 Un ievērojiet, ka tas patiešām ir standarta io-- stdio.h. 331 00:16:23,790 --> 00:16:25,890 Varbūt ierakstījāt studio.h? 332 00:16:25,890 --> 00:16:30,600 Labi, ļoti izplatīta kļūda, es varētu jūs izsaukt. 333 00:16:30,600 --> 00:16:32,280 Tā nav studio.h. 334 00:16:32,280 --> 00:16:34,560 Tas ir stdio.h — tik parasts. 335 00:16:34,560 --> 00:16:38,145 Bet tās ir tieši tādas stulbas galvassāpes, kas jūs mocīs šonedēļ, 336 00:16:38,145 --> 00:16:41,730 iespējams, dažas nedēļas un, iespējams, godīgi sakot, dažus gadus. 337 00:16:41,730 --> 00:16:45,420 Bet ar laiku arvien vieglāk un vieglāk jūs sākat saskatīt iepriekš 338 00:16:45,420 --> 00:16:49,110 pieļautās kļūdas, jo dators būs noregulēts. 339 00:16:49,110 --> 00:16:50,950 Dators darīs tikai to, ko tu liksi. 340 00:16:50,950 --> 00:16:53,420 Un, ja jūs sakāt, ka tas mutiski izklausās kā studio.h, dators 341 00:16:53,420 --> 00:16:55,890 nezinās, kas ir fails. 342 00:16:55,890 --> 00:16:58,182 PPaldies, ka tik agri kļūdījāties! 343 00:16:58,182 --> 00:16:59,740 Tas notiek ļoti bieži. 344 00:17:00,240 --> 00:17:02,540 KLAUSĪTĀJI: Kāpēc jums ir divi faili hello? 345 00:17:02,540 --> 00:17:03,799 DEIVIDS DŽ. MALANS: Kāpēc man ir hello faili? 346 00:17:03,799 --> 00:17:04,400 KLAUSĪTĀJI: Jā. 347 00:17:04,400 --> 00:17:06,400 DEIVIDS DŽ. MALANS: Tad kāpēc man ir hello faili? 348 00:17:06,400 --> 00:17:08,460 Viens ir tas, kuru es radīju kā cilvēku, kuru sauc par hello.c, un 349 00:17:08,460 --> 00:17:10,520 tas ir attēlots šeit. 350 00:17:10,520 --> 00:17:13,780 Bet tad, kad es palaidu make hello, šis process kompilēja manu 351 00:17:13,780 --> 00:17:17,040 pirmkodu mašīnkodā. 352 00:17:17,040 --> 00:17:21,370 Tātad šis otrais fails ar nosaukumu hello ir fails, kurā ir visas tās 353 00:17:21,370 --> 00:17:25,700 nulles un vieniniekus, ko serveris faktiski saprot. 354 00:17:25,700 --> 00:17:27,200 Labi, kādi jautājumi? 355 00:17:27,200 --> 00:17:29,710 sveiki [nedzirdams] 356 00:17:29,710 --> 00:17:32,641 DEIVIDS DŽ. MALANS: Ja jūs mēģināsiet noklikšķināt uz hello faila, 357 00:17:32,641 --> 00:17:35,573 jūs redzēsiet vai nu VS Code,vai arī quote/unquote. Ja jūs gribētu to 358 00:17:35,573 --> 00:17:38,505 apskatīties, tad tas neatvērsies šajā redaktorā tādēļ, ka tas ir 359 00:17:38,505 --> 00:17:41,437 binārs, vai izmanto neatbalstītu teksta kodējumu. 360 00:17:41,437 --> 00:17:42,520 Šajā gadījumā tas ir binārs. 361 00:17:42,520 --> 00:17:43,660 Tās ir nulles un vieninieki. 362 00:17:43,660 --> 00:17:45,670 Tagad jūs varētu izmantot programmatūru, lai redzētu šīs nulles un 363 00:17:45,670 --> 00:17:47,680 vieniniekus. 364 00:17:47,680 --> 00:17:50,320 Lielākajai daļai cilvēku tas nebūs intelektuāli izglītojošs. 365 00:17:50,320 --> 00:17:53,165 Tātad VS Code vienkārši izvēlas jums to vispār nerādīt. 366 00:17:53,165 --> 00:17:56,290 Izplatīta kļūda ir arī nejauši noklikšķināt uz faila, kuru nevēlaties. 367 00:17:56,290 --> 00:18:00,190 Bet pirmkodu mēs patiešām varēsim rediģēt. 368 00:18:00,190 --> 00:18:01,900 Labi, tātad esmu uzrakstījis šo programmu. 369 00:18:01,900 --> 00:18:04,300 Šķiet, ka tas darbojas maģiski, vismaz ar nelielu piepūli, ja pareizi 370 00:18:04,300 --> 00:18:06,700 nospiežat katru taustiņu. 371 00:18:06,700 --> 00:18:08,440 Nu, kas tad tagad notiek? 372 00:18:08,440 --> 00:18:09,460 Un kā tas darbojas? 373 00:18:09,460 --> 00:18:12,220 Pirmkārt, ievērojiet, ka pat bez tā, ka es izceļu lietas vai 374 00:18:12,220 --> 00:18:14,980 izvēlnes, taustiņus izvēlnēm, ievērojiet arī to, ka tas jau ir krāsu 375 00:18:14,980 --> 00:18:17,740 kodēts. 376 00:18:17,740 --> 00:18:20,125 Un tomēr, es noteikti neizcēlu Google Docs stilu, kur var mainīt 377 00:18:20,125 --> 00:18:22,510 krāsu. 378 00:18:22,510 --> 00:18:26,055 Izrādās, ka tas, ko VS Code un lielāko daļu programmēšanas vides 379 00:18:26,055 --> 00:18:29,600 mūsdienās dara automātiski, ir sintakses izcelšana. 380 00:18:29,600 --> 00:18:33,180 Tātad sintakses izcelšana ir tieši šī mūsdienu teksta redaktoru 381 00:18:33,180 --> 00:18:36,760 funkcija, kas analizē jūsu ievadīto kodu. 382 00:18:36,760 --> 00:18:40,530 Kad tas pamana noteikta veida taustiņsitienus, lietas, kas attēlo 383 00:18:40,530 --> 00:18:44,300 funkcijas, nosacījumus, cilpas, vai mainīgos lielumus — daudz 384 00:18:44,300 --> 00:18:48,070 pagājušās nedēļas vārdu, tas vienkārši izceļ tos visai atšķirīgi. 385 00:18:48,070 --> 00:18:51,430 Galvenais, ko mēs drīz redzēsim, ir purpursarkanā krāsā. 386 00:18:51,430 --> 00:18:53,890 Int, void un include ir sarkanā krāsā. 387 00:18:53,890 --> 00:18:55,630 Hello, world ir zilā krāsā. 388 00:18:55,630 --> 00:18:57,390 Manas iekavas ir zaļā krāsā. 389 00:18:57,390 --> 00:18:59,290 Tās pilnībā atšķirsies arī atkarībā no programmētāja. 390 00:18:59,290 --> 00:19:03,240 Faktiski, ja vēlaties mainīt šīs 1. problēmu kopas krāsas, to izdara 391 00:19:03,240 --> 00:19:07,190 caur VS Code Settings, nospiežot attiecīgo zobrata ikonu. 392 00:19:07,190 --> 00:19:09,820 Varat mainīt krāsu tēmu. 393 00:19:09,820 --> 00:19:11,650 Sintakses izcelšanai nav īpašas krāsu shēmas, kā tas ir Scratch 394 00:19:11,650 --> 00:19:13,480 programmā. 395 00:19:13,480 --> 00:19:16,485 Tas tikai parasti katram cilvēkam ir sava izvēle. 396 00:19:16,485 --> 00:19:18,657 Bet tas viss, kas šobrīd notiek, ir saistīts ar sintakses izcelšanas 397 00:19:18,657 --> 00:19:20,830 jēdzienu. 398 00:19:20,830 --> 00:19:25,510 Kas vēl notiks šajā kodā? Pirms es to palaidīšu, man tā ir jāuzraksta. 399 00:19:25,510 --> 00:19:28,790 Tas izskatās nedaudz līdzīgs šim, ja izdzēšuvisas krāsas. 400 00:19:28,790 --> 00:19:30,645 Un tad tikai diskusijas labad ļaujiet man turpināt un izkrāsot to 401 00:19:30,645 --> 00:19:32,500 nedaudz līdzīgāku kā Scratch programmā. 402 00:19:32,500 --> 00:19:36,690 Atcerieties, ka mūsu pirmajā Scratch programmā, kura tikai parāda uz 403 00:19:36,690 --> 00:19:40,880 ekrāna hello, world , bija zaļa karoga klikšķināmā ikona, kas 404 00:19:40,880 --> 00:19:45,070 izskatījās kā puzle oranžā krāsā, un zem tās purpursarkans bloks. — 405 00:19:45,070 --> 00:19:48,010 Tā kā šī ir C versija, ja mēs attinam atpakaļ uz to, ko darījām 406 00:19:48,010 --> 00:19:50,950 pagājušajā nedēļā, šī bija tā pati Scratch programma. 407 00:19:50,950 --> 00:19:53,090 Bet tas, kas notiek tagad, ir tieši tas pats. 408 00:19:53,090 --> 00:19:55,615 Tātad, ja atceraties pagājušās nedēļas vielu, un jums ir kāda 409 00:19:55,615 --> 00:19:58,140 funkcija, piemēram, funkcija say purpursarkanā krāsā, kas var pieņemt 410 00:19:58,140 --> 00:20:00,665 vienu vai vairākus argumentus, piemēram, ievadi, kas ietekmē to, kas 411 00:20:00,665 --> 00:20:03,190 tiek parādīts uz ekrāna. 412 00:20:03,190 --> 00:20:05,835 Un atceraties, ka funkcijām dažkārt var būt blakusparādības, 413 00:20:05,835 --> 00:20:08,480 piemēram, ekrānā parādās runas burbulis. 414 00:20:08,480 --> 00:20:11,916 Tātad pagājušajā nedēļā, kad mēs izmantojām say bloku un kreisajā 415 00:20:11,916 --> 00:20:15,353 pusē palaidām argumentu hello, world , uz ekrāna parādījās vizuāls 416 00:20:15,353 --> 00:20:18,790 blakusefekts - tagad runas burbulis ir rakstīts hello, world. 417 00:20:18,790 --> 00:20:21,010 Un tas ir tieši tas, kas tikko notika VS Code, bet daudz, daudz 418 00:20:21,010 --> 00:20:23,230 vairāk tekstuāli. 419 00:20:23,230 --> 00:20:25,900 Un tagad nedaudz tuvāk aplūkosim pašu kodu. 420 00:20:25,900 --> 00:20:30,050 Ļaujiet man norādīt uz ekvivalentu, kad zaļais karogs ir 421 00:20:30,050 --> 00:20:34,200 noklikšķināts uz mana koda daļas, un pievērsīsimies tikai say blokam 422 00:20:34,200 --> 00:20:38,350 programmā Scratch un atbilstošajai funkcijai C programmā. 423 00:20:38,350 --> 00:20:41,740 Tātad, ja es gribētu to pārbaudīt un pārvērst to, ko mēs darījām 424 00:20:41,740 --> 00:20:45,130 pagājušajā nedēļā ar say bloku uz programmas C, es vispirms izmantotu 425 00:20:45,130 --> 00:20:48,520 funkciju printf, lai gan patiesībā tie ir balti meli. 426 00:20:48,520 --> 00:20:50,440 Patiesībā tā ir funkcija printf. 427 00:20:50,440 --> 00:20:52,030 Printf nozīmē formatēts. 428 00:20:52,030 --> 00:20:55,360 Un tā ir tieši tā funkcija, kas ļauj formatēt tekstu uz ekrāna. 429 00:20:55,360 --> 00:20:58,570 C valodā nav say funkcijas. 430 00:20:55,360 --> 00:20:58,532 Ir printf funkcija. Tas, ko MIT darīja pirms vairākiem gadiem, bija 431 00:20:58,532 --> 00:21:01,705 tas, , ka to, kas jau vēsturiski pastāvēja kā printf, viņi to 432 00:21:01,705 --> 00:21:04,877 vienkāršoja plašākai auditorijai, tā vietā vienkārši nosaucot to par 433 00:21:04,877 --> 00:21:08,050 say. 434 00:21:08,050 --> 00:21:12,150 Bet ievērojiet, ka, ja es vēlos konvertēt Scratch kodu kreisajā pusē 435 00:21:12,150 --> 00:21:16,250 uz C kodu, tas ir tādas pašas formas. 436 00:21:16,250 --> 00:21:19,880 Tāpēc MIT tīšām izmantoja šo balto ovālu, kaut vai tāpēc, ka tas rada 437 00:21:19,880 --> 00:21:23,510 ideju par iekavām. 438 00:21:23,510 --> 00:21:27,375 Tātad labajā pusē, ja es vēlos nodot argumentu vai ievadi funkcijai 439 00:21:27,375 --> 00:21:31,240 printf, es izmantoju atvērtās iekavas un aizvērtās iekavas. 440 00:21:31,240 --> 00:21:34,350 Šajās iekavās es ierakstu visu, ko vēlos drukāt uz ekrāna — šajā 441 00:21:34,350 --> 00:21:37,460 gadījumā hello, comma, world. 442 00:21:37,460 --> 00:21:39,810 Bet ievērojiet, ka es apzināti atstāju vietu, jo jums ir nepieciešami 443 00:21:39,810 --> 00:21:42,160 papildu taustiņsitieni C pasaulē. 444 00:21:42,160 --> 00:21:47,130 Kad jūs rakstāt kādu tekstu, ko datorzinātne sauc par teksta virkni, 445 00:21:47,130 --> 00:21:52,100 tādā gadījumā teksts ir jāliek dubultpēdiņās.. 446 00:21:52,100 --> 00:21:54,520 Dubultpēdiņas kreisajā pusē, dubultpēdiņas labajā pusē. 447 00:21:54,520 --> 00:21:58,173 Ievērojiet, ka es arī šeit iekļaušu kādu nedaudz mīklainu simbolu — 448 00:21:58,173 --> 00:22:01,826 atpakaļvērsto slīpsvītru n, ko es arī ievadīju un pieteicu iepriekš, 449 00:22:01,826 --> 00:22:05,480 ka beigās ir vēl viens traucēklis - semikols. 450 00:22:05,480 --> 00:22:08,890 Pietiek pateikt, tāpēc mēs sākam ar Scratch programmu. 451 00:22:08,890 --> 00:22:10,960 Ar šo velciet un nometiet funkciju – varam sākt. 452 00:22:10,960 --> 00:22:13,795 Tādā valodā, piemēram, C, printf, iekavas, dubultpēdiņas,teksts, kuru 453 00:22:13,795 --> 00:22:16,630 jūs gribat, atpakaļvērstā slīpsvītra n un semikols beigās. 454 00:22:16,630 --> 00:22:18,970 Šeit ir tik daudz sintaktisku darbību. 455 00:22:18,970 --> 00:22:21,290 Bet galu galā tā ir tikai funkcija. 456 00:22:21,290 --> 00:22:24,210 Un jūs pieradīsiet pie neērtībām, kā iekavas, pēdiņas, semikols un 457 00:22:24,210 --> 00:22:27,130 tamlīdzīgi. 458 00:22:27,130 --> 00:22:30,255 Taču lietas var ļoti viegli noiet greizi, un ir ļoti viegli 459 00:22:30,255 --> 00:22:33,380 kļūdīties, pat ar šādām koda rindiņām. 460 00:22:33,380 --> 00:22:34,190 Tāpēc ļaujiet man to izdarīt! 461 00:22:34,190 --> 00:22:37,070 Ļaujiet atgriezties pie VS Code, kur man ir tieši tāds pats kods. 462 00:22:37,070 --> 00:22:40,910 Ievērojiet, ka 5. rindā ir tieši šī koda rinda. 463 00:22:40,910 --> 00:22:42,910 Tātad tas ir līdzvērtīgs say blokam. 464 00:22:42,910 --> 00:22:46,420 Un padomāsim, kādas kļūdas es varēju pieļaut agrāk vai pat tagad, pēc 465 00:22:46,420 --> 00:22:49,930 20 gadiem, kad uzzināju, kas tās vispār ir diezgan izplatītas. 466 00:22:49,930 --> 00:22:52,180 Pieņemsim, ka esmu šeit aizmirsis semikolu. 467 00:22:52,180 --> 00:22:53,380 Tik viegli izdarāms. 468 00:22:53,380 --> 00:22:54,910 Galu galā jūs to darīsit. 469 00:22:54,910 --> 00:22:57,415 Apskatīsim, kas notiek tagad, kad es atgriezīšos savā termināļa logā 470 00:22:57,415 --> 00:22:59,920 un mēģināšu vēlreiz kompilēt savu kodu. 471 00:22:59,920 --> 00:23:02,590 Lai viss būtu kārtībā, es notīrīšu ekrānu. 472 00:23:02,590 --> 00:23:04,525 Bet tas ir tikai lekcijas dēļ, lai mēs varētu koncentrēties tikai uz 473 00:23:04,525 --> 00:23:06,460 jaunāko komandu. 474 00:23:06,460 --> 00:23:09,940 Bet es tagad turpināšu un vēlreiz palaidīšu make hello . 475 00:23:09,940 --> 00:23:13,690 Tas nodrošinās to, ka mana programma tiks pārkompilēta. 476 00:23:13,690 --> 00:23:14,950 Tas ir manuāls process. 477 00:23:14,950 --> 00:23:16,060 Es nomainīju savu kodu. 478 00:23:16,060 --> 00:23:18,670 Nulles un vieninieki cietajā diskā nav mainījušies. 479 00:23:18,670 --> 00:23:21,980 Man tas ir jāpārkompilē, lai izvadītu jaunāko mašīnkodu. 480 00:23:21,980 --> 00:23:22,580 Un tagad sākam. 481 00:23:22,580 --> 00:23:24,830 Es nospiedīšu Enter un turēšu īkšķus, lai viss izdodas kā iepriekš. 482 00:23:24,830 --> 00:23:29,320 Bet atkal nejauši noņemu semikolu. 483 00:23:29,320 --> 00:23:29,980 Ak, mans Dievs. 484 00:23:29,980 --> 00:23:33,700 Šeit ir vairāk kļūdu rindu nekā faktiskajā kodā. 485 00:23:33,700 --> 00:23:35,770 Un tas prasa zināmu laiku, lai pierastu. 486 00:23:35,770 --> 00:23:39,265 Programmas, kuras mēs izmantojam, ne vienmēr tika rakstītas, paturot 487 00:23:39,265 --> 00:23:42,760 prātā vismazāk ērto auditoriju, bet gan profesionālus programmētājus. 488 00:23:42,760 --> 00:23:47,750 Bet ar praksi, pieredzi un kļūdām jūs sāksit pamanīt modeļus arī šeit. 489 00:23:47,750 --> 00:23:49,090 Tātad, lūk, ko es ierakstīju. 490 00:23:49,090 --> 00:23:51,220 Make hello pēc uzvednes zīmes. 491 00:23:51,220 --> 00:23:57,010 Tagad uz mani kliedz šādi: hello.c, kols, 5, kols, 29. 492 00:23:57,010 --> 00:23:58,420 Nu, uz ko tas attiecas? 493 00:23:58,420 --> 00:24:03,460 Es kaut kur esmu kļūdījies — 5. rindiņā, šīs rindas 29. rakstzīmē. 494 00:24:03,460 --> 00:24:05,454 Parasti konkrētā rakstzīme nav tik noderīga, ja vien nevēlaties tās 495 00:24:05,454 --> 00:24:07,448 izrēķināt. 496 00:24:07,448 --> 00:24:08,630 5. rinda ir labs risinājums. 497 00:24:09,130 --> 00:24:11,660 Tas nozīmē, ka es kaut kur 5. rindā kļūdījos. 498 00:24:11,660 --> 01:24:11,570 Viss kārtībā. 499 00:24:12,160 --> 00:24:13,360 Nu, kur tad ir kļūda? 500 00:24:13,360 --> 00:24:16,242 Pēc izteiksmes bija paredzēts semikols. 501 00:24:16,242 --> 00:24:18,172 Un šī kļūda patiesībā ir diezgan acīmredzama tagad, kad es to redzu 502 00:24:18,172 --> 00:24:20,103 un saprotu, ak, pagaidiet mirklīti. 503 00:24:20,103 --> 00:24:21,520 Labi, lūk, mana koda rinda. 504 00:24:21,520 --> 00:24:24,530 Šeit, tā sakot, ir sava veida ASCII mākslā — teksta informācija, kas 505 00:24:24,530 --> 00:24:27,540 attēlo grafiku — tas grib, lai es ieliktu zaļā krāsā semikolu šīs 506 00:24:27,540 --> 00:24:30,550 rindas beigās. 507 00:24:30,550 --> 00:24:33,850 Pieļauta 1 kļūda, ģenerēta standarta kļūda — tātad daži nieki. 508 00:24:33,850 --> 00:24:36,340 Bet mana programma netika kompilēta. 509 00:24:36,340 --> 00:24:39,470 Ja redzat šādu kļūdu, tas nozīmē, ka tā nedarbojās. 510 00:24:39,470 --> 00:24:40,360 Tātad, kāds ir risinājums? 511 00:24:40,360 --> 00:24:42,915 Acīmredzot risinājums ir atgriezties šeit atpakaļ un ielikt tur 512 00:24:42,915 --> 00:24:45,470 semikolu. 513 00:24:45,470 --> 00:24:47,976 Tagad, ja es pārkompilēju savu kodu ar make hello — es vēl 514 00:24:47,976 --> 00:24:50,483 neizdzēsīšu ekrānu, vienkārši lai parādītu atšķirību, un tagad tas 515 00:24:50,483 --> 00:24:52,990 vienkārši strādāja. 516 00:24:52,990 --> 00:24:55,550 Tātad mēs atsākam darbību. 517 00:24:55,550 --> 00:24:58,895 Labi, tomēr ļaujiet man šeit iepauzēt un pajautāt, vai ir kas 518 00:24:58,895 --> 00:25:02,240 neskaidrs par to, ko es tikko izdarīju. 519 00:25:02,240 --> 00:25:04,460 Sākotnēji šie kļūdu ziņojumi būs bieži. 520 00:25:04,960 --> 00:25:06,904 KLAUSĪTĀJI: Vai semikols ir nepieciešams aiz katras rindas vai tikai 521 00:25:06,904 --> 00:25:08,848 aiz dažām no tām? 522 00:25:08,848 --> 01:14:39,160 DEIVIDS DŽ. MALANS: Tiešām labs jautājums. 523 00:25:10,390 --> 00:25:12,960 Vai semikols ir nepieciešams aiz katras rindas vai tikai aiz dažām? 524 00:25:12,960 --> 00:25:14,022 Izrādās, ka tikai pēc dažām. 525 00:25:14,022 --> 00:25:16,131 To jūs šodien iemācīsities praksē, demonstrējot un izmantojot 526 00:25:16,131 --> 00:25:18,240 piemērus. 527 00:25:18,240 --> 00:25:22,810 Vispārīgi aiz katras komandrindas liek semikolu. 528 00:25:22,810 --> 00:25:25,230 Un šis ir šīs koda rindas tehniskais termins. 529 00:25:25,230 --> 00:25:25,950 Tas ir priekšraksts. 530 00:25:25,950 --> 00:25:29,230 Un domājiet par to, jo tas ir angļu valodas teikuma koda ekvivalents. 531 00:25:29,230 --> 00:25:32,030 Tātad semikols kodā ir kā punkts angļu valodā, kad esat pabeidzis šo 532 00:25:32,030 --> 00:25:34,830 konkrēto domu. 533 00:25:34,830 --> 00:25:37,650 Pagaidām nekur citur semikoli nav vajadzīgi. 534 00:25:37,650 --> 00:25:39,750 Un mēs redzēsim piemērus, kur vēl jūs tos ievietojat. 535 00:25:39,750 --> 00:25:43,365 Taču tas parasti atrodas koda rindas beigās, kas nav tīri 536 00:25:43,365 --> 00:25:46,980 sintaktiska, piemēram, figūriekavas. 537 00:25:46,980 --> 00:25:49,290 Vai vēl ir kādi jautājumi par to kļūdu, kuru es laboju, kur es pats 538 00:25:49,290 --> 00:25:51,600 biju kļūdījies? 539 00:25:52,230 --> 01:12:01,846 KLAUSĪTĀJI: [NEdzirdams] 540 00:25:55,170 --> 00:25:56,170 DEIVIDS DŽ. MALANS: Pareizi. 541 00:25:56,170 --> 00:25:58,950 Tātad 5. rindiņa ir tā vieta, kur kļūda ir visiespējamākā. 542 00:25:58,950 --> 00:26:02,250 29. rakstzīme nozīmē, ka tajā ir 29 rakstzīmes. 543 00:26:02,250 --> 00:26:04,800 Un tad patiesībā šajā gadījumā tas man sniedz norādījumus. 544 00:26:04,800 --> 00:26:07,275 Kompilators ne vienmēr zinās, kā man sniegt padomu, it īpaši, ja manā 545 00:26:07,275 --> 00:26:09,750 kodā ir īsts juceklis. 546 00:26:09,750 --> 00:26:11,505 Taču bieži vien tas darīs visu iespējamo, lai sniegtu jums šādu 547 00:26:11,505 --> 00:26:13,260 atbildi. 548 00:26:14,170 --> 00:26:16,930 KLAUSĪTĀJI: Kāpēc jūs kā pirmo ievadījāt kodu hello.c? 549 00:26:16,930 --> 00:26:19,935 DEIVIDS DŽ. MALANS: Kā gadījās, ka es vispirms ievadīju kodu, 550 00:26:19,935 --> 00:26:22,940 atstarpi, hello.c un tagad es rakstu make hello? 551 00:26:22,940 --> 00:26:24,180 Divi dažādi procesi. 552 00:26:24,180 --> 00:26:27,730 Kad es ierakstīju kodu, atstarpe, hello.c, tas bija tāpēc, ka vēlējos 553 00:26:27,730 --> 00:26:31,280 atvērt VS Code un izveidot jaunu failu ar nosaukumu hello.c. 554 00:26:31,280 --> 00:26:34,910 Tas ir tāpat kā Mac vai PCdošanās uz sadaļu Fails, Jauns. 555 00:26:34,910 --> 00:26:37,710 Lai gan fails eksistē un faktiski ir atvērts šeit — un tas tiek 556 00:26:37,710 --> 00:26:40,510 automātiski saglabāts, nav nepieciešams visu laiku nospiest Command-S 557 00:26:40,510 --> 00:26:43,310 vai Control-S — tagad es varu to kompilēt, izmantojot make hello 558 00:26:43,310 --> 00:26:46,110 atkal un atkal. 559 00:26:46,110 --> 00:26:48,746 Tātad teorētiski man nekad vairs nevajadzētu ievadīt kodu, atstarpi, 560 00:26:48,746 --> 00:26:51,383 hello.c, ja vien es nevēlētos izveidot pilnīgi jaunu failu, ko sauc 561 00:26:51,383 --> 00:26:54,020 tāpat. 562 00:26:54,020 --> 00:26:57,200 Labi, kā tad ar šo citu sintakses daļu? 563 00:26:57,200 --> 00:26:58,790 Ļaujiet man šeit nodzēst savu termināļa logu. 564 00:26:58,790 --> 00:27:03,380 Varat arī nospiest Control-L, lai visu izmestu un estētiski notīrītu. 565 00:27:03,380 --> 00:27:07,420 Pieņemsim, ka es izlaižu šo simbolu secību, slīpsvītru n, jo tad es 566 00:27:07,420 --> 00:27:11,460 neesmu īsti pārliecināts, kāpēc tas tur ir. 567 00:27:11,460 --> 00:27:14,456 Vai kāds vēlas minēt, it īpaši, ja jūs nekad iepriekš neesat 568 00:27:14,456 --> 00:27:17,453 programmējis, kas varētu notikt tagad, ja es pārkompilētu un 569 00:27:17,453 --> 00:27:20,450 atkārtoti palaistu šo programmas versiju? 570 00:27:20,450 --> 00:27:25,130 Es atstāju semikolu, bet noņēmu slīpsvītru n. 571 00:27:25,130 --> 00:27:28,390 Vai ir kāda ideja? 572 00:27:28,390 --> 00:27:29,920 Labi, labi... jā? 573 00:27:29,920 --> 00:27:32,055 KLAUSĪTĀJI: Vai nākamā dolāra zīme parādīsies uzreiz pēc jūsu hello, 574 00:27:32,055 --> 00:27:34,190 world? 575 00:27:34,190 --> 00:27:35,190 DEIVIDS DŽ. MALANS: Tā būs. 576 00:27:35,190 --> 00:27:38,740 Nākamā dolāra zīme parādīsies uzreiz pēc mana hello, world. 577 00:27:38,740 --> 00:27:40,564 Bet kas tev liek tā domāt? 578 00:27:40,564 --> 00:27:43,010 KLAUSĪTĀJI: Tāpēc, ka slīpsvītra n rada jaunu rindiņu? 579 00:27:43,010 --> 01:04:31,290 DEIVIDS DŽ. MALANS: Tieši tā. 580 00:27:44,010 --> 00:27:46,035 Slīpssvītra n patiesībā ir īpaša simbolu secība, kas izveido jaunu 581 00:27:46,035 --> 00:27:48,060 rindiņu. 582 00:27:48,060 --> 00:27:51,740 Un tāpēc, jūsuprāt, ja es pārkompilēju šo programmu, make hello, 583 00:27:51,740 --> 00:27:55,420 Enter — bez sintakses kļūdām, tāpēc šoreiz tā tika kompilēta. 584 00:27:55,420 --> 00:27:57,180 Tātad jums nav nepieciešama slīpsvītra n. 585 00:27:57,180 --> 00:27:58,800 Jums ir nepieciešams semikols. 586 00:27:58,800 --> 00:28:01,155 Ja jums nav slīpsvītras n, skatieties, kas notiek, kad es šoreiz 587 00:28:01,155 --> 00:28:03,510 izmantoju ./hello. 588 00:28:03,510 --> 00:28:05,370 Patiešām, tagad es redzu hello, comma, world un pēc tam dīvainu 589 00:28:05,370 --> 00:28:07,230 dolāra zīmi. 590 00:28:07,230 --> 00:28:08,460 Un tā joprojām ir uzvedne. 591 00:28:08,460 --> 00:28:10,365 Es joprojām varu tajā ierakstīt komandas, piemēram, clear, un viss 592 00:28:10,365 --> 00:28:12,270 tiek notīrīts. 593 00:28:12,270 --> 00:28:13,710 Bet tas izskatās vienkārši stulbi. 594 00:28:13,710 --> 00:28:15,975 Ja es to palaistu vēlreiz šeit ar ./hello, tas vienkārši nav īpaši 595 00:28:15,975 --> 00:28:18,240 lietotājam draudzīgs. 596 00:28:18,240 --> 00:28:20,313 Parasti, kad esat pabeidzis programmas palaišanu, ideālā gadījumā 597 00:28:20,313 --> 00:28:22,386 jums vajadzētu sakārtot lietas: pārvietot kursoru uz nākamo lietotāja 598 00:28:22,386 --> 00:28:24,460 rindiņu. 599 00:28:24,460 --> 00:28:29,720 Un atpakaļvērstā slīpsvītra n ir vienkārši īpašs simbols, zināms kā 600 00:28:29,720 --> 00:28:34,980 atsoļa sekvence, ko C zina, lai pārvietotu kursoru uz nākamo rindiņu. 601 00:28:34,980 --> 00:28:39,640 Citās valodās, arī Python, izmanto to pašu simbolu. 602 00:28:39,640 --> 00:28:43,430 Piemēram, ja es šeit atgriežos atpakaļ pie koda, piemēram, es mēģinu 603 00:28:43,430 --> 00:28:47,220 to darīt citādi. 604 00:28:47,220 --> 00:28:49,020 Pieņemsim, ka es nelieku atpakaļvērsto slīpsvītru n. 605 00:28:49,020 --> 00:28:50,940 Es vienkārši nospiežu Enter, kā to darītu parasts cilvēks Google Docs 606 00:28:50,940 --> 00:28:52,860 vai Microsoft vidē. 607 00:28:52,860 --> 00:28:55,107 Ļaujiet man turpināt un mēģināt kompilēt šo programmu. 608 00:28:55,107 --> 00:28:56,940 Un tas, kā jūs varētu cerēt, darbosies, vai ne? 609 00:28:56,940 --> 00:28:59,580 Jūs varētu cerēt, ka tas izdrukās hello, world un pēc tam tukšu 610 00:28:59,580 --> 00:29:02,220 rindiņu, jo es pārvietoju kursoru uz nākamo rindiņu. 611 00:29:02,220 --> 00:29:02,790 Bet nē. 612 00:29:02,790 --> 00:29:05,040 Ja es tagad palaistu make hello un mēģinātu to kompilēt, C tas 613 00:29:05,040 --> 00:29:07,290 nepatiktu. 614 00:29:07,290 --> 00:29:10,550 Tagad man ir cita kļūda, joprojām 5. rindā, šoreiz sākot no 615 00:29:10,550 --> 00:29:13,810 12. rakstzīmes — kļūda, kurai trūkst beigu pēdiņu un pēc tam dažu 616 00:29:13,810 --> 00:29:17,070 citu lietu. 617 00:29:17,070 --> 00:29:19,485 Un tas neizklausās labi — šoreiz liktenīga kļūda, pārāk daudz 618 00:29:19,485 --> 00:29:21,900 pieļautu kļūdu, un tagad apstājas. 619 00:29:21,900 --> 00:29:23,470 Tāpēc es šeit tiešām kļūdījos. 620 00:29:23,470 --> 00:29:25,320 Tad kāpēc es to nevaru darīt? 621 00:29:25,320 --> 00:51:05,490 Vienkārši tāpēc. 622 00:29:26,190 --> 00:29:28,785 Cilvēki, kuri izstrādāja C, nolēma, ka, ja jums ir gara teksta 623 00:29:28,785 --> 00:29:31,380 virkne, tai jāpaliek tajā pašā rindā. 624 00:29:31,380 --> 00:29:32,760 Tā var kļūt gadīties gara. 625 00:29:32,760 --> 00:29:36,150 Teksts var turpināties jaunā rindā, nenospiežot taustiņu Enter. 626 00:29:36,150 --> 00:29:38,220 Bet jūs nevarat nospiest Enter, lai izveidotu jaunu rindu. 627 00:29:38,220 --> 00:29:41,089 Ja jūs apzināti vēlaties jaunu rindiņu, jums patiešām ir jāizmanto šī 628 00:29:41,089 --> 00:29:43,958 slīpsvītra n atsoļa rakstzīme. 629 00:29:43,958 --> 00:29:45,250 Tāpēc ļaujiet man turpināt un darīt to. 630 00:29:45,250 --> 00:29:46,710 Ļaujiet man to ievietot atpakaļ. 631 00:29:46,710 --> 00:29:48,720 Ļaujiet man atgriezties pie sava termināļa loga. 632 00:29:48,720 --> 00:29:50,080 Es vēlreiz notīrīšu ekrānu. 633 00:29:50,080 --> 00:29:52,085 Ļaujiet man tagad turpināt un izsaukt make hello, lai pārkompilētos 634 00:29:52,085 --> 00:29:54,090 uz šo versiju — ./hello. 635 00:29:54,900 --> 00:29:57,780 Mēs joprojam darbojamies ar hello. 636 00:29:57,780 --> 00:30:01,350 Labi, tāpēc tagad izskatīsim dažus citus šī koda aspektus, jo notiek 637 00:30:01,350 --> 00:30:04,920 daudzkas, lai tikai liktu mums dabūt hello, worlduz ekrāna. 638 00:30:04,920 --> 00:30:07,532 Šodien mēs lielākoties ignorēsim šo — int main(void) un šīs 639 00:30:07,532 --> 00:30:10,145 figūriekavas. 640 00:30:10,145 --> 00:30:12,520 Mēs drīz atgriezīsimies pie tā, lai noskaidrotu, kāpēc tās tur ir. 641 00:30:12,520 --> 00:30:14,740 Bet pagaidām iedomājieties, ka int main(void) un šīs figūriekavas 642 00:30:14,740 --> 00:30:16,960 šeit patiešām ir C ekvivalents, kad tika noklikšķināts zaļais 643 00:30:16,960 --> 00:30:19,180 karodziņš. 644 00:30:19,680 --> 00:30:20,638 Jums vienkārši tur to vajag. 645 00:30:20,638 --> 00:30:22,320 Tādā veidā jūs iedarbināt savu programmu. 646 00:30:22,320 --> 00:30:24,330 Un galvenā patiešām būs kāda īpaša funkcija, bet par to vairāk 647 00:30:24,330 --> 00:30:26,340 citreiz. 648 00:30:26,340 --> 00:30:28,950 Bet kāpēc man šeit ir šī koda rinda? 649 00:30:28,950 --> 00:30:33,990 Pareizā rakstība patiešām ir stdio.h, STDIO punkts H. 650 00:30:33,990 --> 00:30:37,500 Un šoreiz tās ir kvadrātiekavas , tāpēc tas ir nedaudz jaunums. 651 00:30:37,500 --> 00:30:40,290 Tagad ir citādi un notiek atslēgvārda iekļaušana. 652 00:30:40,290 --> 00:30:42,727 Ja jūs nezināt, kas kaut kas ir, tad nav nekādas vainas atbrīvoties 653 00:30:42,727 --> 00:30:45,165 no tā un redzēt, kas notiek. 654 00:30:45,165 --> 00:30:46,360 Tāpēc ļaujiet man izdzēst šo rindu. 655 00:30:46,360 --> 00:30:48,260 Ļaujiet man atgriezties savā termināļa logā, notīrīt ekrānu un pēc 656 00:30:48,260 --> 00:30:50,160 tam vēlreiz palaist make hello. 657 00:30:50,160 --> 00:30:53,290 Un tagad mēģināsim kompilēt šo programmu bez šīs pirmās rindas. 658 00:30:53,790 --> 00:30:56,340 Es to nesaprotu, tāpēc paskatīsimies, kas notiks. 659 00:30:56,340 --> 00:30:59,542 Šeit ir vēl viena kļūda, bet redzēsim — hello.c, 5. rindiņa, 660 00:30:59,542 --> 00:31:02,745 5. rakstzīme — tātad tā ir diezgan agrīna kļūda, kas netieši deklarē 661 00:31:02,745 --> 00:31:05,947 bibliotēkas funkciju printf, ierakstot int un pēc tam punktu, punktu, 662 00:31:05,947 --> 00:31:09,150 punktu. 663 00:31:09,150 --> 00:31:11,820 Tik netieši deklarējot bibliotēkas funkciju printf - tas izklausās 664 00:31:11,820 --> 00:31:14,490 ļoti noslēpumaini. 665 00:31:14,490 --> 00:31:16,920 Jūs labāk sapratīsit šādas frāzes. 666 00:31:16,920 --> 00:31:22,620 Bet acīmredzot man vajag iekļaut rindu include line for stdio.h. 667 00:31:22,620 --> 00:31:23,820 Bet kāpēc? 668 00:31:23,820 --> 00:31:28,575 Pamatojoties uz šo simptomu, kāds varētu būt jūsu instinkts attiecībā 669 00:31:28,575 --> 00:31:33,330 uz to, ko pirmā koda rindiņa dara mūsu labā? 670 00:31:33,330 --> 00:31:35,370 Kāpēc intuitīvi tam tur jābūt? 671 00:31:35,370 --> 00:31:37,290 [NEDZIRDAMS] funkcijas. 672 00:31:38,290 --> 00:31:40,213 Tas ir līdzīgi kā bibliotēkas importēšana, lai jūs varētu veikt tādas 673 00:31:40,213 --> 00:31:42,137 darbības, kā, piemēram, drukāšana uz ekrāna. 674 00:31:42,137 --> 00:31:43,678 Izmantojot Scratch, jums nevajadzēja darīt to attiecībā uz lielāko 675 00:31:43,678 --> 00:31:45,220 puzles daļu. 676 00:31:45,220 --> 00:31:48,196 Varbūt jūs atceraties, ka 0. nedēļas laikā es lietoju paplašinājuma 677 00:31:48,196 --> 00:31:51,172 taustiņu (Extensions button) Scratch ekrāna apakšējā kreisajā pusē un 678 00:31:51,172 --> 00:31:54,148 importēju dažas papildu puzles detaļas tekstrunas pārveidošanai, kas 679 00:31:54,148 --> 00:31:57,124 atdarināja biedējošu cilvēka balsi, kas patiesībā izskanēja no kaķa 680 00:31:57,124 --> 00:32:00,100 mutes. 681 00:32:00,100 --> 00:32:02,245 Tas bija kā bibliotēkas pievienošana — kodu, ko uzrakstījis kāds 682 00:32:02,245 --> 00:32:04,390 cits. 683 00:32:04,390 --> 00:32:06,550 Tādā gadījumā tā bija trešā puse. 684 00:32:06,550 --> 00:32:08,380 Bet es sev atļāvos tai piekļūt. 685 00:32:08,380 --> 00:32:09,250 Tas pats šeit. 686 00:32:09,250 --> 00:32:13,900 Izrādās, ka jūs patiešām nesaņemat printf automātiski C valodā. 687 00:32:13,900 --> 00:32:16,960 Jums ir jāiekļauj tā sauktais galvenes fails, kas paziņo par šīs 688 00:32:16,960 --> 00:32:20,020 funkcijas esamību. 689 00:32:20,020 --> 00:32:22,570 Vēsturiski iemesls tam ir tikai efektivitāte. 690 00:32:22,570 --> 00:32:26,590 Laikā, kad datori bija patiešām lēnāki un resursi bija ierobežoti, 691 00:32:26,590 --> 00:32:30,610 jūs nevarējāt vēlēties piekļūt visai datoru funkcionalitātei. 692 00:32:30,610 --> 00:32:34,690 Jums bija pieeja tikai tām funkcijām, kas jums patiešām rūp. 693 00:32:34,690 --> 00:32:37,353 Mūsdienās tas ir kopēšanas/ielīmēšanas (copy/paste) solis, jo gandrīz 694 00:32:37,353 --> 00:32:40,016 vienmēr vēlaties kaut ko izdrukāt uz ekrāna, vismaz rakstot šādas 695 00:32:40,016 --> 00:32:42,680 programmas. 696 00:32:42,680 --> 00:32:45,236 Taču šajos tā sauktajos galvenes failos ir pietiekami daudz 697 00:32:45,236 --> 00:32:47,793 informācijas par visām tā sauktajām standarta I/O bibliotēkas 698 00:32:47,793 --> 00:32:50,350 funkcijām. 699 00:32:50,350 --> 00:32:53,450 Standarta I/O nozīmē tikai standarta ievadi un izvadi. 700 00:32:53,450 --> 00:32:54,700 Un tas ir pareizi? 701 00:32:54,700 --> 00:32:57,010 Jo drukāšana faktiski ir pamatizlaide. 702 00:32:57,010 --> 00:32:59,160 Izrādās, ka ir arī citas funkcijas ievades iegūšanai no tastatūras — 703 00:32:59,160 --> 00:33:01,310 vairāk par to būs nedaudz vēlāk. 704 00:33:01,310 --> 00:33:03,416 Bet katru reizi, kad jūs vēlaties kaut ko izdrukāt uz ekrāna C 705 00:33:03,416 --> 00:33:05,523 valodā, jums patiešām ir jāiekļauj šis galvenes fails jūsu koda 706 00:33:05,523 --> 00:33:07,630 sākumā. 707 00:33:07,630 --> 00:33:11,193 Un tas būtībā informēs kompilatoru, hei, kompilators, es vēlos 708 00:33:11,193 --> 00:33:14,756 izmantot standarta I/O bibliotēkas funkcionalitāti, tostarp šajā 709 00:33:14,756 --> 00:33:18,320 gadījumā printf. 710 00:33:18,320 --> 00:33:21,180 Ja jūs nejauši izlaižat šo galvenes failu, programma nedarbosies, jo 711 00:33:21,180 --> 00:33:24,040 tā nezinās, kas ir printf. 712 00:33:24,040 --> 00:33:27,970 Tādā gadījumā tas ir kāds neatpazīts simbols. 713 00:33:27,970 --> 00:33:32,780 Tagad jautājumi par šo koda rindiņu vai par to, kas ir šie galvenes 714 00:33:32,780 --> 00:33:37,590 faili? 715 00:33:37,590 --> 00:33:40,890 Jūs varētu vēlēties uzzināt, kādas funkcijas pastāv. 716 00:33:40,890 --> 00:33:43,990 Kā jūs zināt, kādus failus jūs patiešām vēlaties iekļaut? 717 00:33:43,990 --> 00:33:46,355 Izrādās, ka C ir daudzus gadus veca valoda, un tai ir bagātīga 718 00:33:46,355 --> 00:33:48,720 dokumentācija. 719 00:33:48,720 --> 00:33:52,770 Brīdinu , ka tā dokumentācija ne vienmēr ir lietotājam draudzīga. 720 00:33:52,770 --> 00:33:57,225 Šim kursam ir pieejama C oficiālās dokumentācijas vienkāršota 721 00:33:57,225 --> 00:34:01,680 versija, kas atrodama šajā URL, manual.cs50.io. 722 00:34:01,680 --> 00:34:03,915 Tātad C pasaulē un arī citās valodās ir tā sauktās rokasgrāmatas 723 00:34:03,915 --> 00:34:06,150 lapas. 724 00:34:06,150 --> 00:34:08,953 Un tā ir tikai uz tekstu balstīta dokumentācija, kas, atklāti sakot, 725 00:34:08,953 --> 00:34:11,756 parasti ir rakstīta tādā balsī, ka jums ir jābūt pieredzējušam 726 00:34:11,756 --> 00:34:14,560 programmētājam, lai to saprastu. 727 00:34:14,560 --> 00:34:17,190 Tātad tas, ko mēs esam darījuši šīs pašas dokumentācijas versijā, ir 728 00:34:17,190 --> 00:34:19,821 tas, ka mēs esam importējuši visu oriģinālo, oficiālo dokumentāciju, 729 00:34:19,821 --> 00:34:22,451 taču esam pievienojuši mazāk veiksmīgus tulkojumus angļu valodā, lai 730 00:34:22,451 --> 00:34:25,082 nodrošinātu daudzas funkcijas, kuras jūs varētu izmantot klasē, kas 731 00:34:25,082 --> 00:34:27,713 jums varētu palīdzēt. 732 00:34:27,713 --> 00:34:30,630 Tātad šī dokumentācija jums ilgtermiņā nav nepieciešama. 733 00:34:30,630 --> 00:34:35,299 Taču, lai sāktu, mēs to pārtulkosim tādā terminoloģijā, kādu 734 00:34:35,299 --> 00:34:39,969 skolotāja asistents, nevis pats autors, jums palīdzētu saprast. 735 00:34:39,969 --> 00:34:46,399 Piemēram, ja vēlaties uzzināt, kādas funkcijas pastāv failā stdio.h, 736 00:34:46,399 --> 00:34:52,830 varat doties uz šādu URL vai meklēt to vietnē manual.cs50.io. 737 00:34:52,830 --> 00:34:55,590 Tas parādīs visu šajā bibliotēkā pieejamo funkciju sarakstu un 738 00:34:55,590 --> 00:34:58,350 izdrukās. 739 00:34:58,350 --> 00:35:01,230 Un tad jūs varētu noklikšķināt tālāk, sasniedzot šādu URL, kas sniegs 740 00:35:01,230 --> 00:35:04,110 jums visu dokumentāciju par to, kā izmantot printf. 741 00:35:04,110 --> 00:35:07,560 Izrādās, jūs varat darīt pat vairāk nekā tikai izdrukāt hello, world. 742 00:35:07,560 --> 00:35:09,450 Un mēs šodien notīrīsim virsmu. 743 00:35:09,450 --> 00:35:13,805 Izrādās, ka dokumentācija vienmēr būs jūsu autoritatīvs avots tādiem 744 00:35:13,805 --> 00:35:18,160 jautājumiem kā, piemēram, ko es varu darīt un kā es to varu izdarīt? 745 00:35:18,160 --> 00:35:22,070 Tikmēr izrādās, ka CS50 ir sava bibliotēka, un tai var piekļūt, 746 00:35:22,070 --> 00:35:25,980 izmantojot galvenes failu cs50.h. 747 00:35:25,980 --> 00:35:28,690 Programmā C izrādās, ka izvade patiesībā ir diezgan vienkārša, kad 748 00:35:28,690 --> 00:35:31,400 esat pieradis pie visām figūriekavām, apaļajām iekavām, pēdiņām un 749 00:35:31,400 --> 00:35:34,110 tamlīdzīgi. 750 00:35:34,110 --> 00:35:36,670 Bet ievade ir nedaudz grūtāka. 751 00:35:36,670 --> 00:35:38,885 Ja esat programmējis iepriekš, Python valodas ievade nav tik 752 00:35:38,885 --> 00:35:41,100 sarežģīta. 753 00:35:41,100 --> 00:35:42,540 Java valodā to nav tik grūti izdarīt. 754 00:35:42,540 --> 00:35:46,312 C formātā to ir grūtāk izdarīt. 755 00:35:42,540 --> 00:35:46,312 Pēc pāris nedēļām mēs redzēsim, kāpēc. 756 00:35:46,312 --> 00:35:49,684 Bet pirmajās pāris mācību nedēļās mēs faktiski nodrošinām jūs ar sava 757 00:35:49,684 --> 00:35:53,057 veida mācību bāzi - ir vairākas funkcijas, kas ir pieminētas šajā 758 00:35:53,057 --> 00:35:56,430 failā cs50.h. 759 00:35:56,430 --> 00:35:59,220 Tas notiek saskaņā ar dokumentāciju, kas ir pieejama internetā (URL). 760 00:35:59,220 --> 00:36:01,230 Pēc brīža mēs izmantosim dažus no tiem. 761 00:36:01,230 --> 00:36:04,370 Jūs redzēsit, ka CS50 nodrošina dažas funkcijas, piemēram, get_char, 762 00:36:04,370 --> 00:36:07,510 lai iegūtu vienu rakstzīmi no lietotāja tastatūras, get_int, lai 763 00:36:07,510 --> 00:36:10,650 iegūtu veselu skaitli no lietotāja tastatūras, get_string, lai iegūtu 764 00:36:10,650 --> 00:36:13,790 teksta secību no lietotāja tastatūras, un vairākas citas funkcijas. 765 00:36:13,790 --> 00:36:16,930 arī. 766 00:36:16,930 --> 00:36:20,190 Izmantosim dažas no šīm funkcijām, kā, piemēram, atkārtoti apmeklējot 767 00:36:20,190 --> 00:36:23,450 otro programmu, kuru pagājušajā reizē rakstījām programmā Scratch, 768 00:36:23,450 --> 00:36:26,710 kas pievieno kādu zināmu ievadi izvadei. 769 00:36:26,710 --> 00:36:28,830 Tātad pirmā Scratch versija bija tikai hello, world. 770 00:36:28,830 --> 00:36:31,200 Saka to pašu katru reizi, kad noklikšķināt uz zaļā karoga. 771 00:36:31,200 --> 00:36:33,180 Atcerieties, ka 2. versija tomēr to darīja. 772 00:36:33,180 --> 00:36:35,190 Tā lietotājam jautāja, kā tevi sauc? 773 00:36:35,190 --> 00:36:38,030 Un tad tas kaut kādā veidā atdeva tam atgriešanas vērtību, kā mēs to 774 00:36:38,030 --> 00:36:40,870 nosaucām. 775 00:36:40,870 --> 00:36:43,645 Un tad mēs pievienojāmies hello un šim vārdam, lai uz ekrāna pateiktu 776 00:36:43,645 --> 00:36:46,420 kaut ko interesantāku. 777 00:36:46,420 --> 00:36:48,420 Tātad kā tas modelis izskatījās? 778 00:36:48,420 --> 00:36:49,560 Tāds pats, kas iepriekš. 779 00:36:49,560 --> 00:36:52,020 Mēs darbojamies funkcijā, kur funkcija ir kā mūsu algoritma koda 780 00:36:52,020 --> 00:36:54,480 ieviešana. 781 00:36:54,480 --> 00:36:57,240 Tas ietver vienu vai vairākus argumentus, piemēram, ko jūs galu galā 782 00:36:57,240 --> 00:37:00,000 vēlaties pateikt ekrānā? 783 00:37:00,000 --> 00:37:01,790 Un atgriešanas vērtība šajā gadījumā faktiski būs vērtība, kas 784 00:37:01,790 --> 00:37:03,580 atgriežas. 785 00:37:03,580 --> 00:37:06,035 Tātad ievades iegūšanas gadījumā mēs varam vēlreiz apsvērt šo ask 786 00:37:06,035 --> 00:37:08,490 bloku, tāpat kā pagājušajā nedēļā. 787 00:37:08,490 --> 00:37:10,455 Ievadīt jūs varat jbkurus vārdus angļu valodā,, ko jūs vēlaties 788 00:37:10,455 --> 00:37:12,420 jautāt lietotājam. 789 00:37:12,420 --> 00:37:14,670 Un tad tas atgriež vērtību. 790 00:37:14,670 --> 00:37:17,550 Un tas tika nosaukts par MIT noklusējuma atbildi. 791 00:37:17,550 --> 00:37:19,925 Bet mēs redzēsim programmā C, kā jūs varat saukt šīs atgriešanas 792 00:37:19,925 --> 00:37:22,300 vērtības par jebko, ko vēlaties mainīgajos. 793 00:37:22,300 --> 00:37:24,100 Bet tas atšķiras no blakusefekta. 794 00:37:24,100 --> 00:37:26,540 Blakusefekts ir tikai kaut kas vizuāls, kas bieži notiek ekrānā, kā, 795 00:37:26,540 --> 00:37:28,980 piemēram, runas burbulis vai hello, world. 796 00:37:28,980 --> 00:37:31,500 Atgriešanas vērtība faktiski ir vērtība, ko jūs atgūstat atpakaļ no 797 00:37:31,500 --> 00:37:34,020 funkcijas, kuru jūs varat vienreiz vai daudzreiz izmantot. 798 00:37:34,020 --> 00:37:36,210 Tātad, kā pārvērst šo Scratch bloku, ko aplūkojām pagājušajā nedēļā, 799 00:37:36,210 --> 00:37:38,400 uz C kodu šonedēļ? 800 00:37:38,400 --> 00:37:40,490 Ja vēlaties jautāt lietotājam kaut ko, piemēram, kā viņu sauc, jūs 801 00:37:40,490 --> 00:37:42,580 varat to izdarīt. 802 00:37:42,580 --> 00:37:45,600 Jūs izmantojat CS50 funkciju, kas saucas get_string. 803 00:37:45,600 --> 00:37:49,950 Un jūs izmantojat iekavas, lai parādītu, ka šeit ir arī ievades. 804 00:37:49,950 --> 00:37:52,125 Pēc tam varat ierakstīt teikumu, kuru vēlaties jautāt lietotājam, 805 00:37:52,125 --> 00:37:54,300 piemēram, quote/unquote, kā jūs sauc, ietverot pēdiņās. 806 00:37:54,300 --> 00:37:57,150 Bet jums ir vajadzīgas pēdiņas C valodā. 807 00:37:57,150 --> 00:37:59,220 Tāpēc turpināsim un pievienosim arī tās. 808 00:37:59,220 --> 00:38:02,362 Es apzināti iekļāvu atstarpi aiz jautājuma zīmes, bet pirms 809 00:38:02,362 --> 00:38:05,505 dubultpēdiņām, lai kursors pārvietotos vienu soli pāri, jo šajā 810 00:38:05,505 --> 00:38:08,647 gadījumā mēs nesaņemsim īpašu runas lodziņu, kā tas bija programmā 811 00:38:08,647 --> 00:38:11,790 Scratch. 812 00:38:11,790 --> 00:38:14,460 Tas vienkārši atstās kursoru tur, kur tas ir, tāpēc mēs redzēsim, ka 813 00:38:14,460 --> 00:38:17,130 uz ekrāna tas tikai pārvieto mirgojošo kursoru vienu atstarpi pēc 814 00:38:17,130 --> 00:38:19,800 teikuma. 815 00:38:19,800 --> 00:38:23,490 Labi, bet catch ir Scratch funkcija, ar kuru mēs automātiski saņemsim 816 00:38:23,490 --> 00:38:27,180 atbildi no lietotāja īpašā mainīgajā, ko sauc par atbildi. 817 00:38:27,180 --> 00:38:30,270 C valodā jums jābūt nedaudz precīzākam. 818 00:38:30,270 --> 00:38:33,653 Programmā C, ja vēlaties atgūt atgriešanas vērtību no tādas funkcijas 819 00:38:33,653 --> 00:38:37,036 kā get_string, jums ir jāizmanto vienādības zīme un pēc tam kreisajā 820 00:38:37,036 --> 00:38:40,420 pusē esošā mainīgā nosaukums. 821 00:38:40,420 --> 00:38:42,280 Mainīgo lielumu nosaukumu izvēle ir jūsu ziņā. 822 00:38:42,280 --> 00:38:44,290 Es varētu nosaukt to par jebko — x, y, z. 823 00:38:44,290 --> 00:38:46,585 Skaidrāk es to sauktu par atbildi, lai būtu līdzvērtīga tam, ko MIT 824 00:38:46,585 --> 00:38:48,880 dara ar Scratch. 825 00:38:48,880 --> 00:38:53,090 Bet ievērojiet, ka tas pats par sevi nenozīmē vienlīdzību. 826 00:38:53,090 --> 00:38:55,640 Šajā gadījumā tā vērtību piešķir mainīgajiem. 827 00:38:55,640 --> 00:38:58,290 Tātad programmā C, kad jūs izmantojat vienu vienādības zīmi, tas 828 00:38:58,290 --> 00:39:00,940 nozīmē, ka labajā pusē esošo vērtību kopējiet uz vērtību kreisajā 829 00:39:00,940 --> 00:39:03,590 pusē — no labās puses uz kreiso. 830 00:39:03,590 --> 00:39:05,390 Ko tas mums dod? 831 00:39:05,390 --> 00:39:08,510 Ja get_string ir funkcija, kas lietotājam liek parādīt iekavas, kāds 832 00:39:08,510 --> 00:39:11,630 ir jūsu vārds, un tai ir atgriešanas vērtība, tas nozīmē, ka tā man 833 00:39:11,630 --> 00:39:14,750 atdod kādu vērtību. 834 00:39:14,750 --> 00:39:16,355 Bet tas ir atkarīgs no manis programmā C, lai kaut ko darītu ar šo 835 00:39:16,355 --> 00:39:17,960 vērtību. 836 00:39:17,960 --> 00:39:21,086 Tātad, ja es vēlos iekopēt šo vērtību mainīgajā, ko es varu vienreiz 837 00:39:21,086 --> 00:39:24,213 vai atkārtoti izmantot, es lietoju vienādības zīmi un šīs vienādības 838 00:39:24,213 --> 00:39:27,340 zīmes kreisajā pusē izgudroju jebkuru mainīgā nosaukumu, ko vēlos. 839 00:39:27,340 --> 00:39:28,450 Tomēr ir zināmi noteikumi. 840 00:39:28,450 --> 00:39:29,700 Ir noteiktas konvencijas. 841 00:39:29,700 --> 00:39:32,135 Bet parasti, ja lietojat vienu vārdu ar visiem mazajiem burtiem, jūs 842 00:39:32,135 --> 00:39:34,570 esat labā formā. 843 00:39:34,570 --> 00:39:37,040 Bet C ir nedaudz pedantiskāks par to. 844 00:39:37,040 --> 00:39:39,136 Un tie no jums, kas jau iepriekš ir programmējuši, iespējams, nav 845 00:39:39,136 --> 00:39:41,233 pieraduši pie tā, piemēram, Python programmā, kas ir pasaule, par 846 00:39:41,233 --> 00:39:43,330 kuru mēs runāsim pēc dažām nedēļām. 847 00:39:43,330 --> 00:39:48,670 Jums arī jāpasaka C, kāda veida vērtību jūs glabājat. 848 00:39:48,670 --> 00:39:51,970 Tātad, ja es vēlos teksta rindu no lietotāja — nevis veselu skaitli, 849 00:39:51,970 --> 00:39:55,270 ne vienu rakstzīmi. 850 00:39:55,270 --> 00:39:58,263 Es vēlos veselu teksta rindu, piemēram, frāzi, teikumu, nosaukumu, 851 00:39:58,263 --> 00:40:01,256 šajā gadījumā man ir jāpasaka programmai C, ka šis ir stringtipa 852 00:40:01,256 --> 00:40:04,250 mainīgais. 853 00:40:04,250 --> 00:40:06,267 Tāpēc tā ir liekvārdība, bet pie tās jāpierod. 854 00:40:06,267 --> 00:40:07,600 Un jums vienkārši jābūt precīzam. 855 00:40:07,600 --> 00:40:10,180 Jūs informējat datoru, kāda veida vērtība tiek izmantota šajā 856 00:40:10,180 --> 00:40:12,760 mainīgajā. 857 00:40:12,760 --> 00:40:15,985 Tas ir tik tuvu tam, lai būtu pareizi, bet es esmu izlaidis kaut ko, 858 00:40:15,985 --> 00:40:19,210 kas joprojām ir kaitinoši svarīgs. 859 00:40:19,210 --> 00:40:20,470 Kā vēl trūkst? 860 00:40:21,070 --> 00:40:21,970 KLAUSĪTĀJI: Semikols? 861 00:40:21,970 --> 00:40:23,178 DEIVIDS DŽ. MALANS: Tātad semikols. 862 00:40:23,178 --> 00:40:24,230 Šis ir paziņojums. 863 00:40:24,230 --> 00:40:27,040 Ja vēlaties, šī ir kā pabeigta doma. 864 00:40:27,040 --> 00:40:31,680 Programmā Code man tas ir neiztrūkstoši jābeidz ar semikolu. 865 00:40:31,680 --> 00:40:35,720 Tā bija vairāk runāšana, bet tagad mēģināsim to izmantot manā kodā. 866 00:40:35,720 --> 00:40:40,250 Ļaujiet man atgriezties pie VS Code, kur šeit ir mana koda versija 0. 867 00:40:40,250 --> 00:40:43,956 Ļaujiet man turpināt un iekļaut kādu citu failu hello.c sākumā, 868 00:40:43,956 --> 00:40:47,663 proti, iekļaut cs50.h tā, lai būtu piekļuve failam get_string un 869 00:40:47,663 --> 00:40:51,370 visam citam, ko es varētu vēlēties. 870 00:40:51,370 --> 00:40:54,040 Tagad ļaujiet man turpināt un pievienot koda rindiņu šajās 871 00:40:54,040 --> 00:40:56,710 figūriekavās. 872 00:40:56,710 --> 00:41:00,778 Ļaujiet man turpināt un darīt to.  Atbildes rinda ir vienāda ar 873 00:41:00,778 --> 00:41:04,847 get_string “kāds ir jūsu vārds”, jautājuma zīme. 874 00:41:04,847 --> 00:41:07,180 Es pievienošu papildu atstarpi pirms dubultpēdiņām. 875 00:41:07,180 --> 00:41:10,430 Es tiešām savu domu beigšu ar semikolu. 876 00:41:10,430 --> 00:41:14,260 Un tagad ļaujiet man apzināti kļūdīties, šeit liekot punktu. 877 00:41:14,260 --> 00:41:17,050 Ļaujiet man tagad mēģināt mainīt hello, world uz hello, comma, 878 00:41:17,050 --> 00:41:19,840 answer. . 879 00:41:19,840 --> 00:41:22,180 Tagad, kad ir dažas jaunas koda rindas, jūs varat redzēt, kur esmu 880 00:41:22,180 --> 00:41:24,520 kļūdījies. 881 00:41:24,520 --> 00:41:26,980 Bet tagad ļaujiet man mēģināt izveidot šo programmu. 882 00:41:26,980 --> 00:41:27,970 Tik tālu viss būtu labi. 883 00:41:27,970 --> 00:41:29,120 Tātad kļūdu ziņojumu nav. 884 00:41:29,120 --> 00:41:30,140 Tātad tā ir laba lieta. 885 00:41:30,140 --> 00:41:34,000 Ļaujiet man turpināt un palaist ./hello, un jūs redzēsit uzvedni. 886 00:41:34,000 --> 00:41:35,650 Kā tevi sauc, jautājuma zīme. 887 00:41:35,650 --> 00:41:38,300 Ievērojiet, ka kursors patiešām atrodas vienu atstarpi pa labi tikai 888 00:41:38,300 --> 00:41:40,950 tāpēc, ka man šķita, ka izskatītos labāk, ja nelielu tukšu vietu 889 00:41:40,950 --> 00:41:43,600 atstātu tur , nevisaiz jautājuma zīmes. 890 00:41:43,600 --> 00:41:44,530 Ļaujiet man ierakstīt savu vārdu. 891 00:41:44,530 --> 00:41:46,435 Bet pat tad, ja jūs nekad iepriekš neesat programmējis, es šeit esmu 892 00:41:46,435 --> 00:41:48,340 kļūdījies. 893 00:41:48,340 --> 00:41:51,240 Ko mēs redzēsim ekrānā, kad es nospiedīšu Enter? 894 00:41:51,240 --> 00:41:52,240 KLAUSĪTĀJI: Sveiki, atbildiet! 895 00:41:53,115 --> 00:41:54,280 Visticamāk, atbildiet sveiki. 896 00:41:54,730 --> 00:41:56,855 Jo dators mani uztvers burtiski. 897 00:41:56,855 --> 00:41:59,020 Un, ja es saku citēt/necitēt, sveiks, atbildiet. 898 00:41:59,020 --> 00:42:03,260 Tā ir teksta rinda, kam seko jauna rinda, kas tiks izvadīta ekrānā. 899 00:42:03,260 --> 00:42:05,895 Tāpēc mums ir nepieciešams kāds veids, kā pievienot atbildi šajā koda 900 00:42:05,895 --> 00:42:08,530 rindā. 901 00:42:08,530 --> 00:42:11,335 Tas nav tik vienkārši, kā scratch programmā, kur jūs varat izvēlēties 902 00:42:11,335 --> 00:42:14,140 otru say bloku un vilkt, un nomest mainīgo tur. 903 00:42:14,140 --> 00:42:15,670 Patiesībā mums ir vajadzīga jauna sintakse. 904 00:42:15,670 --> 00:42:19,285 Un sākumā tas izskatīsies dīvaini, taču mūsdienās tas ir visur 905 00:42:19,285 --> 00:42:22,900 programmatūrā, īpaši C un dažu citu valodu pasaulē. 906 00:42:22,900 --> 00:42:27,610 Tāpēc ļaujiet man turpināt un ieteikt to atrisināt sekojoši. 907 00:42:27,610 --> 00:42:29,980 Atcerieties, ka tad,kad mēs to darījām Scratch programmā, šis bija 908 00:42:29,980 --> 00:42:32,350 labākais risinājums. 909 00:42:32,350 --> 00:42:36,550 Mēs izmantojām say bloku, kuram šodien būs analogs printf. 910 00:42:36,550 --> 00:42:39,945 Bet es izmantoju join puzles gabalu un Scratch, lai apvienotu hello, 911 00:42:39,945 --> 00:42:43,340 comma, space un pēc tam cilvēka vārdu. 912 00:42:43,340 --> 00:42:45,790 Tātad, kā mēs tulkojam šo kodu uz C? 913 00:42:45,790 --> 00:42:47,830 Nu, tagad tas izskatīsies nedaudz citādi. 914 00:42:47,830 --> 00:42:50,680 Es sākšu ar printf, ar dažām iekavām un semikolu, kas apzīmē say 915 00:42:50,680 --> 00:42:53,530 bloku. 916 00:42:53,530 --> 00:42:55,240 Bet kā man tagad veikt šo apvienošanos? 917 00:42:55,240 --> 00:42:58,330 Šeit puzles gabali nav perfekti tulkojami. 918 00:42:58,330 --> 00:43:00,290 Tas būtu veids, kā to izdarīt. 919 00:43:00,290 --> 00:43:03,430 Jūs ievietojat hello, comma un pēc tam vietturi. 920 00:43:03,430 --> 00:43:07,810 Šis ir tas, kas ir pazīstams kā formāta kods C valodā, īpaši printf. 921 00:43:07,810 --> 00:43:11,350 Tas tikai nozīmē, ka šis ir virknes vietturis. 922 00:43:11,350 --> 00:43:12,740 Turklāt virkne ir tikai teksts. 923 00:43:12,740 --> 00:43:17,970 Tātad tas nozīmē, hei, dator, izdrukā hello, comma, space - un tad - 924 00:43:17,970 --> 00:43:23,200 %s. 925 00:43:17,120 --> 00:43:23,903 %s ir īpaši apstrādāts, lai šeit ievietotu kādu vērtību. 926 00:43:23,903 --> 00:43:25,570 Labi, ko tad vēl man vēl vajag? 927 00:43:25,570 --> 00:43:32,460 Šis joprojām ir teksts, tāpēc es visu iekļaušu ar dubultpēdiņām. 928 00:43:32,460 --> 00:43:35,165 Es joprojām domāju iekļaut atpakaļvērsto slīpsvītru n, lai sakārtotu 929 00:43:35,165 --> 00:43:37,870 lietas un pārvietotu kursoru uz nākamo rindiņu. 930 00:43:37,870 --> 00:43:41,495 Tātad pēdējais solis programmā C ir kaut kā apvienot atbildi ar vārdu 931 00:43:41,495 --> 00:43:45,120 hello. 932 00:43:45,120 --> 00:43:48,060 Un veids, kā jūs to darāt, ir ar printf, nododot tam ne vienu vien 933 00:43:48,060 --> 00:43:51,000 argumentu, ko es turpinu darīt. 934 00:43:51,000 --> 00:43:53,820 Es turpinu tam nodot šo tekstarindu, ietvertu iekavās. 935 00:43:53,820 --> 00:43:58,290 Es tagad pievienošu komatu un pēc tam vērtības nosaukumu, kuru vēlos, 936 00:43:58,290 --> 00:44:02,760 lai printf atgrieztos un pievienotu šim %s. 937 00:44:02,760 --> 00:44:04,410 Un printf ir īpaši gudrs attiecībā uz to. 938 00:44:04,410 --> 00:44:07,695 Ja jums ir viens %s un viens papildu arguments aiz komata, tas 939 00:44:07,695 --> 00:44:10,980 vienkārši notiek — %s tiek apvienots ar argumentu. 940 00:44:10,980 --> 00:44:16,470 Ja aiz komata ir divi %s un divi mainīgie, arī tas ir pareizi. 941 00:44:16,470 --> 00:44:19,425 Ja es atdalīšu tos ar komatiem, tad pievienošu pirmo mainīgo pirmajam 942 00:44:19,425 --> 00:44:22,380 %s un otro mainīgo otrajam %s. 943 00:44:22,380 --> 00:44:24,750 Tātad darbību secība notiek no kreisās uz labo pusi. 944 00:44:24,750 --> 00:44:27,526 Ne vienmēr tas ir tik skaisti vai vienkārši kā šis, bet šādā veidā 945 00:44:27,526 --> 00:44:30,302 tas tiek darīts programmā C. 946 00:44:30,302 --> 00:44:32,760 Labi, ļaujiet man iepauzēt, jo šeit ir daudz simbolu. 947 00:44:32,760 --> 00:44:35,080 Vai ir kādi jautājumi par šo paņēmienu? 948 00:44:35,580 --> 00:44:39,725 KLAUSĪTĀJI: Kāpēc iepriekšējā sadaļā izslēdzāt slīpsvītru n? 949 00:44:39,725 --> 00:44:41,600 DEIVIDS DŽ. MALANS: Jā, tiešām labs jautājums. 950 00:44:41,600 --> 00:44:45,550 Kāpēc es pirms brīža izslēdzu atpakaļvērsto slīpsvītru? 951 00:44:45,550 --> 00:44:48,280 Patiešām, tikai mana estētikas izjūta, ja vēlaties. 952 00:44:48,280 --> 00:44:49,760 Tam nav nekāda iemesla. 953 00:44:49,760 --> 00:44:52,110 Tātad, ja es atskatos uz savu kodu, jūs pilnīgi pareizi pamanāt, ka 954 00:44:52,110 --> 00:44:54,460 man tur nebija slīpsvītras n. 955 00:44:54,460 --> 00:44:57,460 Tas ir tikai tāpēc, ka neatkarīgi no manas stila izjūtas es gribēju, 956 00:44:57,460 --> 00:45:00,460 lai vārds tiktu ierakstīts uzreiz aiz jautājuma. 957 00:45:00,460 --> 00:45:04,030 Es būtu varējis pievienot atpakaļvērsto slīpsvītru n atstarpes vietā. 958 00:45:04,030 --> 00:45:06,490 Tas būtu ļāvis man šeit arī ierakstīt. 959 00:45:06,490 --> 00:45:07,490 Pilnīgi labi. 960 00:45:07,490 --> 00:45:09,670 Vienkārši gribēju jums parādīt kaut ko citu. 961 00:45:09,670 --> 00:45:10,210 Labs guvums. 962 00:45:10,660 --> 00:45:12,070 KLAUSĪTĀJI: Vai varat parādīt piemēru ar diviem %s? 963 00:45:12,070 --> 00:45:14,470 DEIVIDS DŽ. MALANS: Vai es varu parādīt piemēru ar diviem %s? 964 00:45:14,470 --> 00:45:15,250 Protams. 965 00:45:15,250 --> 00:45:17,570 Tāpēc ļaujiet man to izdarīt VS Code. 966 00:45:17,570 --> 00:45:20,050 Ļaujiet man notīrīt termināļa logu, lai sakārtotu lietas. 967 00:45:20,050 --> 02:10:40,730 Un ļaujiet man to izdarīt. 968 00:45:21,170 --> 00:45:23,625 Tā vietā, lai izsauktu mainīgo atbildi visur, ļaujiet man vispirms to 969 00:45:23,625 --> 00:45:26,080 nosaukt. 970 00:45:26,080 --> 00:45:27,490 Un es uzdošu divus jautājumus. 971 00:45:27,490 --> 00:45:28,880 Kāds ir tavs vārds? 972 00:45:28,880 --> 00:45:33,160 Tagad ļaujiet man iestatīt pēdējo rindu kā get_string — ak, lielo 973 00:45:33,160 --> 00:45:37,440 burtu lietojumam ir nozīme, tāpēc ļaujiet man labot lielo S, liekot 974 00:45:37,440 --> 00:45:41,720 iekavās, kāds ir jūsu uzvārds, jautājuma zīme, semikols. 975 00:45:41,720 --> 00:45:47,320 Un tagad mēs pievienosim vienu %s un otru %s. 976 00:45:47,320 --> 00:45:52,720 Un tagad es nejauši pievienošu vispirms pirmo un pēdējo kā pēdējo. 977 00:45:52,720 --> 00:45:55,240 Un tagad es pievērsīšos termināļa logam. 978 00:45:55,240 --> 00:46:00,280 Esi sveiks—turi īkšķus, lai viss veicas labi-- ./hello. 979 00:46:00,280 --> 00:46:02,620 Tas ir mans pirmais jautājums, Deivid. 980 00:46:02,620 --> 00:46:04,240 Šis ir mans otrais jautājums, Malan. 981 00:46:04,240 --> 00:46:05,650 Un atkal? 982 00:46:05,650 --> 00:46:06,670 Sveiks, Deivid Malan. 983 00:46:06,670 --> 00:46:08,440 Tātad tas vienkārši tos ievieto no kreisās uz labo pusi. 984 00:46:08,440 --> 00:46:10,555 Viss, ko es darīju, bija, lai panāktu paritāti ar Scratch — un tagad 985 00:46:10,555 --> 00:46:12,670 ļaujiet man turpināt un vēlreiz atsaukt šo darbību. 986 00:46:12,670 --> 00:46:15,130 Es atgriezīšos, lai atbildētu šādi. 987 00:46:15,130 --> 00:46:17,800 Es atgriezīšos, lai pajautātu personas vārdu. 988 00:46:17,800 --> 00:46:19,300 Es izdzēsīšu pēdējā pieminējumu. 989 00:46:19,300 --> 00:46:21,520 Es dzēsīšu otrā %s pieminējumu. 990 00:46:21,520 --> 00:46:24,620 Un ja es tagad pārkompilēšu šo vienkāršāko versiju, es to netīšām 991 00:46:24,620 --> 00:46:27,720 sabojāšu — es tā nebiju nedomājis. 992 00:46:27,720 --> 01:04:24,830 Ko es izdarīju nepareizi? 993 00:46:29,220 --> 00:46:31,353 KLAUSĪTĀJI: Jūs aizmirsāt vispirms mainīt 7. rindu. 994 00:46:31,353 --> 00:46:33,270 DEIVIDS DŽ. MALANS: Jā, tikai iesācēju kļūdas. 995 00:46:33,270 --> 00:46:36,440 Tāpēc es mainīju savu mainīgo atpakaļ uz atbildi, lai atbilstu 996 00:46:36,440 --> 00:46:39,610 0. nedēļai, taču es to nemainīju šeit. 997 00:46:39,610 --> 00:46:42,750 Pirmkārt es esmu lietojis nedeklarētu identifikatoru. 998 00:46:42,750 --> 00:46:44,610 Tas ir nedeklarēts tādā nozīmē, ka es deklarēju answerrindiņu 999 00:46:44,610 --> 00:46:46,470 iepriekš. 1000 00:46:46,470 --> 00:46:47,950 Es to nedeklarēju vispirms. 1001 00:46:47,950 --> 00:46:51,060 Tāpēc es intuitīvi vēlos tos vienkārši mainīt. 1002 00:46:51,060 --> 00:46:53,900 Ļaujiet man vēlreiz veidot sveicienu, ./hello, šoreiz ierakstiet 1003 00:46:53,900 --> 00:46:56,740 tikai manu vārdu! 1004 00:46:56,740 --> 00:46:59,400 Un tur tas ir - sveiks, Deivid. 1005 00:46:59,400 --> 00:47:02,220 Vai jums ir jautājumi par šo sintaksi ar printf? 1006 00:47:04,608 --> 00:47:06,924 DEIVIDS DŽ. MALANS: Ak, vietturis — es pietuvināšu — ir tikai 1007 00:47:06,924 --> 00:47:09,240 procenta simbols, pēc tam — s. 1008 00:47:09,240 --> 00:47:16,320 Tātad manā rindā ir %s, un pēc tam ir komats aiz pēdiņām, un tad 1009 00:47:16,320 --> 00:47:23,400 mainīgā nosaukums, kura vērtību es vēlos pievienot šim %s. 1010 00:47:23,400 --> 00:47:26,850 Un tagad ievērojiet, ka 7. rindiņā šajās iekavās ir tehniski divi 1011 00:47:26,850 --> 00:47:30,300 komati. 1012 00:47:30,300 --> 00:47:33,795 Un tomēr es apgalvoju, ka printf šobrīd izmanto tikai divus 1013 00:47:33,795 --> 00:47:37,290 argumentus. 1014 00:47:37,290 --> 00:47:41,582 Kāpēc tad tur ir divi komati, bet tikai divi argumenti? 1015 00:47:41,582 --> 00:47:45,700 Ja būtu divi komati, jūs domātu, ka ir trīs argumenti? 1016 00:47:45,700 --> 00:47:49,700 Tāpēc tas tiek uzskatīts kā komats [NEdzirdams]. 1017 00:47:50,700 --> 00:47:53,160 Komats starp pēdiņām ir tikai angļu valodā. 1018 00:47:53,160 --> 00:47:55,240 Tas atdala hello no vārda. 1019 00:47:55,240 --> 00:47:58,358 Tāpēc tas patiešām ir ne tikai pēdiņās, bet arī tāpēc ka programmām, 1020 00:47:58,358 --> 00:48:01,476 tādām kā, piemēram, VS Code, ir tendence sintaksi izcelt nedaudz 1021 00:48:01,476 --> 00:48:04,594 citādi, tā, lai jums parādītos kā atšķirīgs, lai gan šajā gadījumā 1022 00:48:04,594 --> 00:48:07,712 tas ir nedaudz izsmalcināts - gaiši zils pret balto — bet patiešām, 1023 00:48:07,712 --> 00:48:10,830 tas cenšas darīt visu iespējamo. 1024 00:48:10,830 --> 00:48:13,150 Vai ir vēl kādi jautājumi par šo vietturi? 1025 00:48:13,650 --> 00:48:21,943 un vai tas nozīmētu [NEdzirdams], 1026 00:48:18,460 --> 00:48:21,943 vai arī būtu jāpievieno jauna rinda? 1027 00:48:21,943 --> 00:48:23,360 DEIVIDS DŽ. MALANS: Ā, labs jautājums. 1028 00:48:23,360 --> 00:48:25,795 Ja es vēlētos pievienot izsaukuma zīmi pēc vārda, vai man būtu 1029 00:48:25,795 --> 00:48:28,230 jāpievieno vēl viens vietturis un tā tālāk? 1030 00:48:28,230 --> 00:48:29,980 Patiesībā es to varētu izdarīt daudz vienkāršāk. 1031 00:48:29,980 --> 00:48:33,610 Es varu likt izsaukuma zīmi tieši aiz procentu zīmes. 1032 00:48:33,610 --> 00:48:35,830 Man nav nepieciešams papildu vietturis pats par sevi. 1033 00:48:35,830 --> 00:48:39,080 Ja es tagad attālināšu un palaidīšu make hello again, ./hello, un 1034 00:48:39,080 --> 00:48:42,330 ierakstīšu tikai savu vārdu — bez izsaukuma zīmes — tagad jūs 1035 00:48:42,330 --> 00:48:45,580 redzēsit labāk, hello, komats, David. 1036 00:48:45,580 --> 00:48:46,510 Tātad printf ir gudrs. 1037 00:48:46,510 --> 00:48:51,400 Tas noskaidros, kur atrodas %s, un pēc tam aizstās to. 1038 00:48:51,400 --> 00:48:54,680 Tagad ļaujiet man ierosināt, ka programmēšanā izplatīta lieta ir 1039 00:48:54,680 --> 00:48:57,960 tāda, ka, tiklīdz mēs pieņemam lēmumu par to, kā kaut ko izstrādāt, 1040 00:48:57,960 --> 00:49:01,240 mēs bieži iedzenam sevi stūrī un nožēlojam lēmumu. 1041 00:49:01,240 --> 00:49:06,460 Vai kāds var iedomāties problēmu, kas rodas, izmantojot %s kā 1042 00:49:06,460 --> 00:49:11,680 vietturi šajā printf virknē ? 1043 00:49:11,680 --> 00:49:13,157 Kas varētu noiet greizi, ja mēs izmantojam procentus šādā īpašajā 1044 00:49:13,157 --> 00:49:14,635 veidā? 1045 00:49:17,650 --> 00:49:20,447 Ja jūs burtiski vēlaties kaut kāda dīvaina iemesla dēļ ekrānā teikt: 1046 00:49:20,447 --> 00:49:23,245 %s vai godīgi sakot, pat tikai vienu %. 1047 00:49:23,245 --> 00:49:26,447 Izrādās, ka procentu zīme tiek īpaši apstrādāta printf virkņu 1048 00:49:26,447 --> 00:49:29,650 iekšpusē. 1049 00:49:29,650 --> 00:49:31,460 Tātad kāds šeit ir risinājums? 1050 00:49:31,460 --> 00:49:34,690 Šādām problēmām ir dažādi risinājumi. 1051 00:49:34,690 --> 00:49:40,990 Bet pieņemsim, ka jūs gribējāt teikt, piemēram, es saņēmu 100%. 1052 00:49:40,990 --> 00:49:43,480 Ļaujiet man iet uz priekšu un mainīt to pilnībā. 1053 00:49:43,480 --> 00:49:47,290 Tātad es saņēmu 100% jūsu testā vai vienalga. 1054 00:49:47,290 --> 00:49:50,860 Labi, ļaujiet man iet uz priekšu un make hello,Enter. 1055 00:49:50,860 --> 00:49:52,950 Labi, tātad nederīgs pārveidošanas specifikators. 1056 00:49:52,950 --> 00:49:55,180 Man nav ne jausmas, ko tas nozīmē, bet tas pasvītro procentu zīmi kā 1057 00:49:55,180 --> 00:49:57,410 problemātisku. 1058 00:49:57,410 --> 00:50:00,730 Nu, izrādās, ka cilvēki pirms gadiem nolēma: uh, labi, sasodīts. 1059 00:50:00,730 --> 00:50:01,615 Mēs jau izmantojām %. 1060 00:50:01,615 --> 00:50:04,990 Nu, divas procentu zīmes burtiski nozīmēs vienu %. 1061 00:50:04,990 --> 00:50:07,358 Tātad tagad, ja es atkārtoti palaidīšu make hello, aha, ./hello, es 1062 00:50:07,358 --> 00:50:09,727 saņēmu 100%. 1063 00:50:09,727 --> 00:50:12,458 Tātad, godīgi sakot, būs tādas lietas, kas jums ir jājautā kādam, 1064 00:50:12,458 --> 00:50:15,190 jums ir jāmeklē Google, jums tas ir jāpameklē dokumentācijā. 1065 00:50:15,190 --> 00:50:17,840 Bet šāda veida problēmām vienmēr ir risinājums. 1066 00:50:17,840 --> 00:50:19,930 Un, par laimi, tās nerodas tik bieži. 1067 00:50:21,230 --> 00:50:22,360 Ak, tikai norādu. 1068 00:50:22,360 --> 01:14:30,570 Citi jautājumi? 1069 00:50:23,560 --> 00:50:27,622 vairāki [NEDZIRDAMS] 1070 00:50:27,622 --> 00:50:29,501 DEIVIDS DŽ. MEILANS: Ja jums ir vairāki mainīgie, tie ir sakārtoti 1071 00:50:29,501 --> 00:50:31,380 secībā no kreisās uz labo. 1072 00:50:31,380 --> 00:50:33,450 Tātad printf analizēs pirmo teksta virkni, ko ievietojat starp 1073 00:50:33,450 --> 00:50:35,520 pēdiņām. 1074 00:50:35,520 --> 00:50:38,363 Un neatkarīgi no tā, kāds ir pirmais %, pirmais mainīgais, kas tiek 1075 00:50:38,363 --> 00:50:41,207 ievadīts pēc komata,tam tiek pievienots . 1076 00:50:41,207 --> 00:50:44,832 Un tad otrais tiek pieslēgts otrajam, trešaistrešajam un tā tālāk. 1077 00:50:44,832 --> 00:50:47,130 Tātad tas ir balstīts tikai no kreisās uz labo pusi. 1078 00:50:48,220 --> 00:50:50,760 AUDITORIJA: Šis vairāk ir precizējošs jautājums. 1079 00:50:50,760 --> 00:50:52,453 Ko īsti nozīmē %s? 1080 00:50:52,453 --> 00:50:54,120 DEIVIDS DŽ. MEILANS: Tas ir tikai vietturis. 1081 00:50:54,120 --> 00:50:56,595 To sauc par formāta kodu, un tas tikai sarunvalodā nozīmē 1082 00:50:56,595 --> 00:50:59,070 pievienojiet šeit kādu vērtību. 1083 00:50:59,070 --> 00:51:01,815 Un printf — cilvēki, kas pirms desmitiem gadu uzrakstīja printf, 1084 00:51:01,815 --> 00:51:04,560 nolēma izturēties pret %s īpaši. 1085 00:51:05,490 --> 00:51:06,900 Viņiem vajadzēja kādu vietturi. 1086 00:51:06,900 --> 00:51:10,110 Viņi nolēma, ka neviens nekad īsti nevēlēsies rakstīt %s. 1087 00:51:10,110 --> 00:51:12,420 Un, ja viņi to dara, viņi var vienkārši ievadīt %%s. 1088 00:51:12,420 --> 00:51:16,600 Tāpēc viņi nolēma ieviest printf tādā veidā, ka viņiem ir kods, kas 1089 00:51:16,600 --> 00:51:20,780 analizē jebkuru ienākošo tekstu, meklē %s un pēc tam kaut kādā veidā 1090 00:51:20,780 --> 00:51:24,960 pievieno nākamās vērtības šajā vietturī. 1091 00:51:24,960 --> 00:51:28,390 Un tikai... Ak, jautājums? 1092 00:51:28,390 --> 00:51:28,890 Atvainojiet? 1093 00:51:28,890 --> 00:51:29,880 AUDITORIJA: Kā būtu, ja mēs gribētu uzrakstīt savus iniciāļus vai ko 1094 00:51:29,880 --> 00:51:30,870 citu? 1095 00:51:30,870 --> 00:51:33,270 DEIVIDS Dž. MEILANS: Ak, ko darīt, ja vēlaties izmantot vienu 1096 00:51:33,270 --> 00:51:35,670 rakstzīmi, piemēram, iniciāļus, piemēram, DM vai DJM pirmajam, 1097 00:51:35,670 --> 00:51:38,070 vidējam, pēdējam, absolūti. 1098 00:51:38,070 --> 00:51:41,190 Un arī tā ir ideāla pāreja no jums abiem uz to, ko parasti sauc par 1099 00:51:41,190 --> 00:51:44,310 datu tipiem C valodā . 1100 00:51:44,310 --> 00:51:48,135 Izrādās, ka C valodā ne tikai virknes ir kā teksts. 1101 00:51:48,135 --> 00:51:50,347 Nākamo pāris nedēļu laikā mēs redzēsim precīzāk, kā virkne patiesībā 1102 00:51:50,347 --> 00:51:52,560 funkcionē. 1103 00:51:52,560 --> 00:51:55,620 Taču teksta virknes nav vienīgais, ko programmas var izvadīt. 1104 00:51:55,620 --> 00:51:58,860 Tās patiešām var izvadīt atsevišķas rakstzīmes, tāpat kā iniciāļus. 1105 00:51:58,860 --> 00:52:01,020 Tās var izvadīt arī veselus skaitļus. 1106 00:52:01,020 --> 00:52:03,444 Izrādās, ka printf ir dažādi formāta kodi visu veidu dažādiem datu 1107 00:52:03,444 --> 00:52:05,868 tipiem. 1108 00:52:05,868 --> 00:52:08,831 Un tikai daži no datu veidiem, ko mēs redzēsim nākamajās nedēļās, būs 1109 00:52:08,831 --> 00:52:11,795 šis saraksts, un jūs ievērosiet, ka tas gandrīz lieliski saskan ar 1110 00:52:11,795 --> 00:52:14,758 CS50 funkcijām, kuras es iepriekš izmantoju, piemēram, get_char, 1111 00:52:14,758 --> 00:52:17,722 get_int, get_string. 1112 00:52:17,722 --> 00:52:20,606 Šīs funkcijas mēs nosaucām tāpēc, ka katra no tām ir paredzēta, lai 1113 00:52:20,606 --> 00:52:23,490 atgrieztu jums cita veida vērtību. 1114 00:52:23,490 --> 00:52:26,070 Mēs jau esam izmantojuši get_string šajā piemērā. 1115 00:52:26,070 --> 00:52:29,880 Drīzumā redzēsim get_int un redzēsim iespējas izmantot citus. 1116 00:52:29,880 --> 00:52:34,140 Bet šī patiešām ir pieejamo datu veidu izvēlne, kā arī citi — punkts, 1117 00:52:34,140 --> 00:52:38,400 punkts, punkts — ko varat izmantot, rakstot programmu C valodā. 1118 00:52:38,400 --> 00:52:41,740 Tāpēc jums ir iepriekš jāizlemj, vai es vēlos saglabāt int šajā 1119 00:52:41,740 --> 00:52:45,080 mainīgajā vai virkni, vai, joka pēc, rakstot modīgāku kodu, attēlu, 1120 00:52:45,080 --> 00:52:48,420 skaņu vai videoklipu. 1121 00:52:48,420 --> 00:52:51,030 Tie visi var būt dažādi datu tipi, punkts, punkts, punkts. 1122 00:52:51,030 --> 00:52:54,300 Bet šobrīd mēs koncentrēsimies tikai uz šiem primitīviem. 1123 00:52:54,300 --> 00:52:54,988 Tas bija daudz. 1124 00:52:54,988 --> 00:52:57,030 Dosimies uz priekšu un paņemsim piecu minūšu pārtraukumu. 1125 00:52:57,030 --> 00:52:57,680 Vēl nav cepumu. 1126 00:52:57,680 --> 00:53:00,180 Bet pēc piecām minūtēm mēs atgriezīsimies un iedziļināsimies detaļās. 1127 00:53:00,180 --> 00:53:02,097 Šodien mūsu otrajā pārtraukumā mums būs cepumi. 1128 00:53:05,640 --> 01:45:04,740 Labi, esam atpakaļ. 1129 00:53:07,295 --> 00:53:09,441 Un tāpēc, ja mājās esat spēlējis līdzi , bet saskārāties ar grūtībām, 1130 00:53:09,441 --> 00:53:11,587 tas ir pilnīgi normāli. 1131 00:53:11,587 --> 00:53:14,803 Un tiešām, lekcijas mērķis parasti būs sniegt jums konceptuālu 1132 00:53:14,803 --> 00:53:18,020 priekšstatu par to, kur mēs dosimies nedēļas laikā. 1133 00:53:18,020 --> 00:53:21,875 Taču, izmantojot praktiskās laboratorijas un problēmu kopas, jums 1134 00:53:21,875 --> 00:53:25,730 patiešām būs iespēja savā tempā pārvarēt dažas no grūtībām. 1135 00:53:25,730 --> 00:53:28,880 Bet šodien ļaujiet man sniegt jums vēl dažus būvniecības blokus. 1136 00:53:28,880 --> 00:53:31,460 Un šie divi sākotnēji tulkos no Scratch. 1137 00:53:31,460 --> 00:53:34,588 Proti, nosacījumus, piemēram, kā tagad C valodā, ja tagad zinām, kā 1138 00:53:34,588 --> 00:53:37,716 mēs varam izmantot funkcijas — vismaz get_string un printf — un mēs 1139 00:53:37,716 --> 00:53:40,844 varam izmantot mainīgos, piemēram, virkni, ko izveidoju iepriekš, kā 1140 00:53:40,844 --> 00:53:43,972 es tagad varu pievienot miksam tādas lietas kā lēmumu pieņemšana un 1141 00:53:43,972 --> 00:53:47,100 nosacījumi? 1142 00:53:47,100 --> 00:53:50,780 Ar nosacījumu Scratch mums bija šāda veida sintakse kreisajā pusē. 1143 00:53:50,780 --> 00:53:53,570 Šeit Scratch ir norādīts, kā jūs varat izteikt, ja diviem 1144 00:53:53,570 --> 00:53:56,360 mainīgajiem, x un y, ir šāda saistība. 1145 00:53:56,360 --> 00:54:01,020 If x ir mazāks par y, sakiet ekrānā, x ir mazāks par y. 1146 00:54:01,020 --> 00:54:03,320 Nu, ļaujiet man to tagad pa labi iztulkot C kodā. 1147 00:54:03,320 --> 00:54:06,425 Tātad C valodā atbilstošais kods izskatīsies šādi, pieņemot, ka x un 1148 00:54:06,425 --> 00:54:09,530 y jau pastāv — vairāk par to vēlāk. 1149 00:54:09,530 --> 00:54:13,140 Un ievērojiet modeli, ko mēs redzēsim atkal un atkal. 1150 00:54:13,140 --> 00:54:16,765 Ap x un mazāk nekā y būs iekavas, tātad iekavas ap Būla izteiksmi, 1151 00:54:16,765 --> 00:54:20,390 atcerieties. 1152 00:54:20,390 --> 00:54:24,035 Būla izteiksme ir patiesa/nepatiesa, jā/nē atbilde, jautājums, ko 1153 00:54:24,035 --> 00:54:27,680 mēģināt uzdot, lai izlemtu, vai kaut ko darīt. 1154 00:54:27,680 --> 00:54:29,310 Tātad jūs tur izmantojat iekavas. 1155 00:54:29,310 --> 00:54:32,426 Tik līdzīgas funkcijās, kur mēs izmantojam iekavas priekš printf un 1156 00:54:32,426 --> 00:54:35,543 iekavas priekš get_string, un tā ir tikai dīvaina stilistiskā 1157 00:54:35,543 --> 00:54:38,660 neatbilstība. 1158 00:54:38,660 --> 00:54:41,675 Izmantojot atslēgvārdu if, kā paraugpraksi, aiz vārda if ir jāievieto 1159 00:54:41,675 --> 00:54:44,690 atstarpe. 1160 00:54:44,690 --> 00:54:46,880 Izmantojot tādu funkciju kā printf vai get_string, jums to 1161 00:54:46,880 --> 00:54:49,070 nevajadzētu darīt. 1162 00:54:49,070 --> 00:54:51,370 Darbosies abi, taču jūs atklāsiet, ka šīs ir konvencijas, kuras 1163 00:54:51,370 --> 00:54:53,670 lielākā daļa cilvēku stilistiski ievēro, tāpēc, izmantojot if, 1164 00:54:53,670 --> 00:54:55,970 lietojiet atstarpi. 1165 00:54:55,970 --> 00:54:59,165 Labi, tagad figūriekavās ir vieta, kurā atradīsies faktiskais kods, 1166 00:54:59,165 --> 00:55:02,360 kuru vēlaties izpildīt nosacīti. 1167 00:55:02,360 --> 00:55:05,475 Tātad ja vēlaties izdrukāt, ka x ir mazāks par y, tikai tad, ja x 1168 00:55:05,475 --> 00:55:08,590 patiešām ir mazāks par y, C valodā izmantojiet šo atvērto 1169 00:55:08,590 --> 00:55:11,705 figūriekavu, kuru līdz šim, iespējams, reti izmantojāt savā 1170 00:55:11,705 --> 00:55:14,820 tastatūrā, un šeit lejā - slēgto figūriekavu . 1171 00:55:14,820 --> 00:55:18,230 Un tās, ja tā var teikt, aptver vienu vai vairākas koda rindiņas zem 1172 00:55:18,230 --> 00:55:21,640 if — pēc būtības ļoti līdzīgi tam, kā oranžais bloks šeit aptver 1173 00:55:21,640 --> 00:55:25,050 purpursarkano puzles gabalu. 1174 00:55:25,050 --> 00:55:27,050 Tātad C valodā nav grafikas. 1175 00:55:25,050 --> 00:55:28,405 Tas viss ir teksts, lai jūs varētu uzskatīt, ka šīs figūriekavas 1176 00:55:28,405 --> 00:55:31,760 patiešām atspoguļo vienu un to pašu ideju. 1177 00:55:31,760 --> 00:55:36,595 Ņemiet vērā, ka gadījumā, ja nosacījuma if iekšpusē ir tikai viena 1178 00:55:36,595 --> 00:55:41,430 koda rindiņa, ja vēlaties, tad figūriekavas jums nav vajadzīgas. 1179 00:55:41,430 --> 00:55:43,670 Bet laba stila labad iekļaujiet tos. 1180 00:55:43,670 --> 00:55:46,040 Tas padarīs skaidrāku jūsu nodomu. 1181 00:55:46,040 --> 00:55:49,370 Iekš Scratch, ja vēlējāties izteikt šo — divi veidi, kā jūs varētu 1182 00:55:49,370 --> 00:55:52,700 iet, tā sakot, pa kreisi vai pa labi? 1183 00:55:52,700 --> 00:55:56,480 Nu, if x ir mazāks par y, es gribu teikt, x ir mazāks par y. 1184 00:55:56,480 --> 00:56:01,190 Else, ja es gribu teikt pretējo, x šajā gadījumā nav mazāks par y. 1185 00:56:01,190 --> 00:56:03,710 Tāpēc es pieņemu lēmumu, pamatojoties uz šo Būla izteiksmi. 1186 00:56:03,710 --> 00:56:06,455 C valodā tas ir gandrīz tas pats, taču jūs pievienojat kombinācijai 1187 00:56:06,455 --> 00:56:09,200 atslēgvārdu else — tātad MIT aizņēmās priekš Scratch to pašu 1188 00:56:09,200 --> 00:56:11,945 atslēgvārdu — un otru figūriekavu pāri, attiecīgi atvērto un 1189 00:56:11,945 --> 00:56:14,690 aizvērto. 1190 00:56:14,690 --> 00:56:17,150 Un tagad jūs varētu uzminēt, kas tajās atrodas. 1191 00:56:17,150 --> 00:56:20,027 Nu, jūs izdrukājat, ka x ir mazāks par y, vai izdrukājat, ka x nav 1192 00:56:20,027 --> 00:56:22,905 mazāks par y. 1193 00:56:22,905 --> 00:56:25,280 Labi, ja uz ceļa ir trīsvirzienu sazarojums? 1194 00:56:25,280 --> 00:56:27,325 Programmā Scratch tas faktiski kļūst nedaudz grafiski smagnēji , ja 1195 00:56:27,325 --> 00:56:29,370 tā var teikt. 1196 00:56:29,370 --> 00:56:32,740 Taču ievērojiet, ka programmā Scratch šādi mēs varam izteikt, ja x ir 1197 00:56:32,740 --> 00:56:36,110 mazāks par y, sakiet x ir mazāks par y. 1198 00:56:36,110 --> 00:56:40,760 Else if x ir lielāks par y, sakiet, ka x ir lielāks par y. 1199 00:56:40,760 --> 00:56:45,470 Else ifx ir vienāds ar y, tad sakiet, ka x ir vienāds ar y. 1200 00:56:45,470 --> 00:56:48,770 Tagad šeit ir neliela neatbilstība. 1201 00:56:48,770 --> 00:56:51,602 Nedaudz atpakaļ es C valodā apgalvoju, ka kādu darbību apzīmē 1202 00:56:51,602 --> 00:56:54,435 vienādības zīme? 1203 00:56:54,435 --> 00:56:55,310 AUDITORIJA: Piešķiršanu. 1204 00:56:55,310 --> 00:56:57,770 DEIVIDS DŽ. MEILANS: Piešķiršana no labās puses uz kreiso. 1205 00:56:57,770 --> 00:57:00,633 Ciktāl Scratch patiešām ir domāts bērniem, un viņi īsti nevēlējās 1206 00:57:00,633 --> 00:57:03,496 sarežģīt visu ar šāda veida semantiku, vienādības zīme Scratch nozīmē 1207 00:57:03,496 --> 00:57:06,360 vienādību. 1208 00:57:06,360 --> 00:57:09,050 Tomēr mums tas pēc brīža būs C valodā jānovērš . 1209 00:57:09,050 --> 00:57:11,750 C valodā vienādības zīme nozīmē piešķiršanu no labās uz kreiso pusi. 1210 00:57:11,750 --> 00:57:14,210 Scratch valodā tas burtiski nozīmē to, ko jūs varētu sagaidīt. 1211 00:57:14,210 --> 00:57:17,690 Labi, tulkosim šo kodu uz C. 1212 00:57:14,210 --> 00:57:20,780 Labajā pusē šis kods patiešām atbilstu šim. 1213 00:57:20,780 --> 00:57:23,553 Un jūs, iespējams, nedaudz muļķīgi redzat, kāds bija risinājums, 1214 00:57:23,553 --> 00:57:26,326 atšķirībā no %% risinājuma iepriekš, kad cilvēki iedzina sevi vienā 1215 00:57:26,326 --> 00:57:29,100 stūrī. 1216 00:57:29,100 --> 00:57:32,860 Jūs sakāt if, jūs sakāt else if un jūs sakāt else if, un kā mēs jau 1217 00:57:32,860 --> 00:57:36,620 esam atrisinājuši vienas vienādības zīmes lietošanu? 1218 00:57:36,620 --> 00:57:40,110 C valodā, kad vēlaties izteikt vienādību — vai lieta kreisajā pusē ir 1219 00:57:40,110 --> 00:57:43,600 vienāda ar lietu labajā pusē, jūs burtiski izmantojat divas 1220 00:57:43,600 --> 00:57:47,090 vienādības zīmes blakus vienu otrai, starp tām nav atstarpes. 1221 00:57:47,090 --> 00:57:50,365 Bet tagad šis kods būtu pareizs gan kreisajā, gan labajā pusē 1222 00:57:50,365 --> 00:57:53,640 neatkarīgi no tā, vai to attiecīgi darāt Scratch vai C. 1223 00:57:53,640 --> 00:57:58,400 Bet tagad mēs varam pievērsties savam kodam, jo īpaši tā dizainam. 1224 00:57:58,400 --> 00:58:01,340 Loģiski domājot, vai kāds var kritizēt šī koda dizainu vai nu 1225 00:58:01,340 --> 00:58:04,280 Scratch, vai C? 1226 00:58:04,280 --> 00:58:06,200 Man šķiet, ka mēs varētu darīt labāk. 1227 00:58:06,200 --> 00:58:07,576 Kā domā aizmugurē? 1228 00:58:07,576 --> 00:58:12,930 nekā ir [NEDZIRDAMI]. 1229 00:58:12,930 --> 00:58:13,930 DEIVIDS DŽ. MEILANS: Perfekti. 1230 00:58:13,930 --> 00:58:18,220 Loģiski, ka ir jābūt tādam gadījumam, kurā x ir mazāks par y, vai x 1231 00:58:18,220 --> 00:58:22,510 ir lielāks par y, vai noslēgumā tam ir jābūt vienādam ar y. 1232 00:58:22,510 --> 00:58:24,340 Tādēļ kāpēc jūs tērējat manu vai datora laiku, uzdodot trešo 1233 00:58:24,340 --> 00:58:26,170 jautājumu? 1234 00:58:26,170 --> 00:58:28,840 Jums nav jājautā šis pēdējais else if, jo loģiski, kā jūs atzīmējat, 1235 00:58:28,840 --> 00:58:31,510 tam vajadzētu būt pašsaprotamam. 1236 00:58:31,510 --> 00:58:33,220 Tātad tas ir neliels uzlabojums. 1237 00:58:33,220 --> 00:58:37,120 Jūs, iespējams, veicat papildu darbu gadījumos, kur x ir vienāds ar y. 1238 00:58:37,120 --> 00:58:38,350 Tāpēc mēs varam to vienkārši uzlabot. 1239 00:58:38,350 --> 00:58:41,862 Un tāpat kā Scratch, jūs varētu vienkārši izmantot else bloku, 1240 00:58:41,862 --> 00:58:45,375 līdzīgi kā C, vai mēs varētu vienkāršot šo kodu, lai tas būtu tikai 1241 00:58:45,375 --> 00:58:48,887 else, kaut kāds loģisks apkopojums, kas tikai apstrādā realitāti, 1242 00:58:48,887 --> 00:58:52,400 kas, protams, būs galīgās situācijas vietā. 1243 00:58:52,400 --> 00:58:54,585 Labi, tātad mums tagad ir prasme izteikt nosacījumus ar Būla 1244 00:58:54,585 --> 00:58:56,770 izteiksmēm. 1245 00:58:56,770 --> 00:58:59,030 Tālāk kaut ko darīsim ar šo nākošo. 1246 00:58:59,030 --> 00:59:00,610 Tāpēc ļaujiet man atgriezties pie VS Code. 1247 00:59:00,610 --> 00:59:02,815 Esmu aizvēris vietni hello.c un tagad vēlos izveidot otru failu dažu 1248 00:59:02,815 --> 00:59:05,020 demonstrāciju labad. 1249 00:59:05,020 --> 00:59:08,230 Atcerieties, ka varat izveidot jaunus failus, ierakstot kodu, 1250 00:59:08,230 --> 00:59:11,440 atstarpi un pēc tam faila nosaukumu, kuru vēlaties izveidot. 1251 00:59:11,440 --> 00:59:13,565 Piemēram, es varētu ievadīt compare.c. 1252 00:59:13,565 --> 00:59:15,652 Es gribu uzrakstīt programmu, kas demonstrācijas labad sāks 1253 00:59:15,652 --> 00:59:17,740 salīdzināt dažas vērtības . 1254 00:59:17,740 --> 00:59:20,220 Bet pirms es to daru, ļaujiet man jums parādīt, labajā pusē atverot 1255 00:59:20,220 --> 00:59:22,700 File Explorer, kas pēc būtības ir līdzīgs Mac vai personālajam 1256 00:59:22,700 --> 00:59:25,180 datoram. 1257 00:59:25,180 --> 00:59:27,595 Varat uziet šeit un noklikšķināt uz ikonas, un jūs varat noklikšķināt 1258 00:59:27,595 --> 00:59:30,010 uz pluszīmes ikonas, un jūs iegūsit zilu lodziņu. 1259 00:59:30,010 --> 00:59:32,065 Un es varu ierakstīt compare.c, un es varu to šādā veidā vienkārši 1260 00:59:32,065 --> 00:59:34,120 manuāli izveidot . 1261 00:59:34,120 --> 00:59:37,930 Ievērojiet, ka cilne tiek atvērta pat tad, ja neesmu ievadījis kodu. 1262 00:59:37,930 --> 00:59:40,375 Tātad atkal kreisajā pusē jums ir GUI, Graphical User Interface, kaut 1263 00:59:40,375 --> 00:59:42,820 arī vienkāršota. 1264 00:59:42,820 --> 00:59:45,040 Šeit labajā pusē un apakšā ir komandrindas saskarne, taču tie ir 1265 00:59:45,040 --> 00:59:47,260 viens un tas pats. 1266 00:59:47,260 --> 00:59:51,150 Tomēr patīkami ir tas, ka, ja es aizveru šo failu nejauši, tīšām vai 1267 00:59:51,150 --> 00:59:55,040 kā, es varu to atkārtoti atvērt, neizveidojot jaunu, vienkārši 1268 00:59:55,040 --> 00:59:58,930 izpildot to pašu komandu — kods, atstarpe, compare.c. 1269 00:59:58,930 --> 01:00:00,340 Tātad kods ir VS Code lieta. 1270 01:00:00,340 --> 01:00:02,140 Tas ir vienkārši lietotājam draudzīgs īsceļš. 1271 01:00:02,140 --> 01:00:05,888 Bet tas ir tikai faila izveide vai esoša faila atvēršana. 1272 01:00:05,888 --> 01:00:08,930 Es paslēpšu File Explorer, lai šeit būtu vairāk vietas kodam. 1273 01:00:08,930 --> 01:00:10,222 Un ejam uz priekšu un darām šo. 1274 01:00:10,222 --> 01:00:12,781 Uzrakstīsim programmu, kas salīdzina divas cilvēka ievadītas 1275 01:00:12,781 --> 01:00:15,340 vērtības, bet šoreiz ne virknes. 1276 01:00:15,340 --> 01:00:17,170 Izmantosim dažus reālus veselus skaitļus. 1277 01:00:17,170 --> 01:00:20,215 Labi, es sākšu un augšpusē iekļaušu CS50 bibliotēkas galvenes failu — 1278 01:00:20,215 --> 01:00:23,260 cs50.h. 1279 01:00:23,260 --> 01:00:25,804 Es iekļaušu arī stdio.h. 1280 01:00:26,668 --> 01:00:28,929 Viens sniedz man lietotājam draudzīgu ievadi, izmantojot get_string, 1281 01:00:28,929 --> 01:00:31,190 get_int un tā tālāk. 1282 01:00:31,190 --> 01:00:33,375 Viens dod man lietotājam draudzīgu izvadi printf, izmantojot stdio.h 1283 01:00:33,375 --> 01:00:35,560 gadījumā. 1284 01:00:35,560 --> 01:00:37,935 Tagad es tikai akli ierakstīšu šo koda rindiņu, pie kuras mēs 1285 01:00:37,935 --> 01:00:40,310 atgriezīsimies nākamajās nedēļās. 1286 01:00:40,310 --> 01:00:42,615 Bet pagaidām tas ir līdzīgs tam, kad zaļais karogs noklikšķināja uz 1287 01:00:42,615 --> 01:00:44,920 koda programmā Scratch. 1288 01:00:44,920 --> 01:00:46,460 Un tagad ejam uz priekšu un darīsim šo. 1289 01:00:46,460 --> 01:00:49,086 Ļaujiet man iet uz priekšu un get_int no lietotāja un pajautāt 1290 01:00:49,086 --> 01:00:51,713 lietotājam, kas ir x, jautājuma zīme. 1291 01:00:51,713 --> 01:00:53,380 Es netaisos mocīties ar jaunu rindu. 1292 01:00:53,380 --> 01:00:56,410 Es vēlos to visu saglabāt vienā rindā, tikai estētikas dēļ. 1293 01:00:56,410 --> 01:00:58,995 Bet, kad es atgriežos un int, tāpat kā es atgriežu virkni, es saņemu 1294 01:00:58,995 --> 01:01:01,580 atgriešanās vērtību. 1295 01:01:01,580 --> 01:01:04,753 Tātad ja es vēlos kaut kur saglabāt get_int rezultātu, labāk to 1296 01:01:04,753 --> 01:01:07,927 ievietot mainīgajā. 1297 01:01:07,927 --> 01:01:09,760 Un es varu saukt mainīgo jebkā, kā vēlos. 1298 01:01:09,760 --> 01:01:12,790 Iepriekš es izmantoju atbildi, pirmo vai pēdējo. 1299 01:01:12,790 --> 01:01:14,410 Tagad es izmantošu x. 1300 01:01:14,410 --> 01:01:17,140 Bet loģiski, ka šeit joprojām ir jāizdara divas lietas, lai gan mēs 1301 01:01:17,140 --> 01:01:19,870 tehniski to vēl neesam izdarījuši. 1302 01:01:19,870 --> 01:01:21,130 Kas man vēl jādara? 1303 01:01:21,130 --> 01:01:22,410 AUDITORIJA: Semikolu. 1304 01:01:22,410 --> 01:01:24,535 DEIVIDS DŽ. MEILANS: Tātad man vajag semikolu beigās. 1305 01:01:24,535 --> 01:01:26,010 AUDITORIJA: Un veselu skaitli sākumā. 1306 01:01:26,010 --> 01:01:27,885 DEIVIDS DŽ. MEILANS: Un int sākumā. 1307 01:01:27,885 --> 01:01:30,362 Jums, programmētājam, sākot no šodienas, ir jāizlemj, ko jūs glabāsit 1308 01:01:30,362 --> 01:01:32,840 savos mainīgajos. 1309 01:01:32,840 --> 01:01:35,750 Un jums tas vienkārši jāpasaka datoram, lai tas zinātu. 1310 01:01:35,750 --> 01:01:38,495 Tagad, ievadam par tādām valodām kā Python, modernākām valodām, 1311 01:01:38,495 --> 01:01:41,240 izrādās, cilvēki saprata, nu, tas ir muļķīgi. 1312 01:01:41,240 --> 01:01:44,115 Kāpēc dators nevar vienkārši saprast, ka es tur ievietoju int? 1313 01:01:44,115 --> 01:01:45,800 Kāpēc man tas proaktīvi jāpasaka? 1314 01:01:45,800 --> 01:01:48,395 Tāpēc mūsdienās dažas valodas, piemēram, Python atbrīvosies no šīs 1315 01:01:48,395 --> 01:01:50,990 sintakses, atbrīvosies no semikoliem. 1316 01:01:50,990 --> 01:01:54,530 Bet šobrīd mēs patiešām skatāmies uz to, kā tas viss darbojās. 1317 01:01:54,530 --> 01:01:57,380 Labi, tātad esmu izveidojis šo vienu rindiņu, kas beidzas ar semikolu. 1318 01:01:57,380 --> 01:01:58,440 Ļaujiet man izveidot vēl vienu. 1319 01:01:58,440 --> 01:02:02,390 Un ļaujiet man iegūt otru int, What’s y, jautājuma zīme. 1320 01:02:02,390 --> 01:02:06,680 gandrīz identiskas, bet cerams, ka atšķirīgas lietotāja atbildes. 1321 01:02:06,680 --> 01:02:09,747 Un ļaujiet man vienkārši pajautāt if x ir mazāks par y, iekavās, pēc 1322 01:02:09,747 --> 01:02:12,815 tam figūriekavas, ļaujiet man iet uz priekšu un izdrukāt, 1323 01:02:12,815 --> 01:02:15,882 atvērējpēdiņas/aizvērējpēdiņas, x ir mazāks par y, reversā 1324 01:02:15,882 --> 01:02:18,950 slīpsvītra, n. 1325 01:02:18,950 --> 01:02:23,240 Un tagad kā piezīmi — šķiet, ka es rakstu ātri. 1326 01:02:23,240 --> 01:02:25,610 Daļa no tā ir tāpēc, ka VS Code man palīdz. 1327 01:02:25,610 --> 01:02:27,665 Ļaujiet man atgriezties pie šīs pirmās rindiņas ar if,nospiediet 1328 01:02:27,665 --> 01:02:29,720 taustiņu Enter. 1329 01:02:29,720 --> 01:02:33,630 Un tagad es izmantoju tikai tastatūru un rakstīšu atvērto figūriekavu. 1330 01:02:33,630 --> 01:02:36,410 Mūsdienās tā ir daudzu teksta redaktoru funkcija. 1331 01:02:36,410 --> 01:02:37,980 Tas pabeidz daļu jūsu domas. 1332 01:02:38,480 --> 01:02:40,570 Tikai tāpēc, lai aiztaupītu sev taustiņsitienu un lai nejauši 1333 01:02:40,570 --> 01:02:42,660 neaizmirstu noslēdzošo. 1334 01:02:42,660 --> 01:02:45,750 Tāpēc dažkārt pamanīsit, ka notiek lietas, kuras neesat ierakstījis. 1335 01:02:45,750 --> 01:02:47,650 Tas ir tikai VS Code vai turpmākās programmas, kuras izmantojat, lai 1336 01:02:47,650 --> 01:02:49,550 jums būtu noderīgas. 1337 01:02:49,550 --> 01:02:53,300 Es turpināšu un tagad manuāli ierakstīšu printf x ir mazāks par y, 1338 01:02:53,300 --> 01:02:57,050 slīpsvītra, n, aizvērējpēdiņas, semikols. 1339 01:02:57,050 --> 01:02:59,525 Tāpēc ļaujiet man tagad iet uz priekšu un mēģināt palaist šo, un mēs 1340 01:02:59,525 --> 01:03:02,000 redzēsim... paskatīsimies. 1341 01:03:02,000 --> 01:03:05,525 Make — not hello — bet make compare , jo šī faila nosaukums ir 1342 01:03:05,525 --> 01:03:09,050 compare.c, nospiežot taustiņu Enter. 1343 01:03:09,050 --> 01:03:12,320 Bez izvades ir labi, jo tas nozīmē, ka es neesmu pieļāvis kļūdu. 1344 01:03:12,320 --> 01:03:16,580 Ļaujiet man ./compare ./hello vietā, Enter. 1345 01:03:16,580 --> 01:03:17,390 Kas ir x? 1346 01:03:17,390 --> 01:03:18,410 Kā būtu ar 1? 1347 01:03:18,410 --> 01:03:19,040 Kas ir y? 1348 01:03:19,040 --> 01:03:19,840 Kā būtu ar 2? 1349 01:03:19,840 --> 01:03:22,230 X ir mazāks par y. 1350 01:03:22,230 --> 01:03:23,387 Nu, mēģināsim vēlreiz. 1351 01:03:23,387 --> 01:03:25,220 Un šeit es ietaupīšu arī dažus taustiņsitienus. 1352 01:03:25,220 --> 01:03:26,360 Ļaujiet man notīrīt ekrānu. 1353 01:03:26,360 --> 01:03:29,343 Tā vietā, lai pastāvīgi rakstītu ./this un ./that, varat arī izmantot 1354 01:03:29,343 --> 01:03:32,326 tastatūras bulttaustiņus programmā VS Code, lai ritinātu atpakaļ 1355 01:03:32,326 --> 01:03:35,310 laikā. 1356 01:03:35,310 --> 01:03:36,625 Tātad ja es vienu reizi nospiežu uz augšu, tur ir pēdējā komanda, ko 1357 01:03:36,625 --> 01:03:37,940 uzrakstīju. 1358 01:03:37,940 --> 01:03:39,710 Ja es to nospiežu divas reizes, tur ir pirmspēdējā komanda, ko 1359 01:03:39,710 --> 01:03:41,480 uzrakstīju . 1360 01:03:41,480 --> 01:03:44,015 Tāpēc dažreiz, ja redzat, ka es daru lietas ātri, tas ir tikai tāpēc, 1361 01:03:44,015 --> 01:03:46,550 ka es krāpjos un šādi eju caur savu vēsturi. 1362 01:03:46,550 --> 01:03:48,965 Labi, tomēr ļaujiet man iet uz priekšu un atkārtoti palaist 1363 01:03:48,965 --> 01:03:51,380 ./compare, Enter. 1364 01:03:51,380 --> 01:03:55,100 Šoreiz apgriezīsim otrādi — 2 priekš x, 1 priekš y. 1365 01:03:55,100 --> 01:03:56,870 Un tagad, protams, nav izvades. 1366 01:03:56,870 --> 01:04:00,170 Labi, tas ir loģiski sagaidāms, jo mums šeit nebija else. 1367 01:04:00,170 --> 01:04:00,980 Tāpēc pievienosim to. 1368 01:04:00,980 --> 01:04:04,770 Else — tagad atvērsim manas figūriekavas, ļaujot VS Code vienu no tām 1369 01:04:04,770 --> 01:04:08,560 izveidot manā vietā — printf, atvērējpēdiņas/aizvērējpēdiņas, x nav 1370 01:04:08,560 --> 01:04:12,350 mazāks par y, reversā slīpsvītra, n, semikols. 1371 01:04:12,350 --> 01:04:16,430 Ļaujiet man turpināt un mēģināt vēlreiz — ./compare, Enter. 1372 01:04:16,430 --> 01:04:19,100 Atkal 2 prieš x, 1 priekš y. 1373 01:04:19,100 --> 01:04:22,990 Un mums vajadzētu redzēt... huh. 1374 01:04:24,830 --> 01:04:27,050 Kāpēc es neredzu else izvadi? 1375 01:04:27,550 --> 01:04:29,592 AUDITORIJA: Pārbūves laikā jūs mainījāt savu kodu. 1376 01:04:29,592 --> 01:04:30,690 Jums tas ir jākompilē. 1377 01:04:31,290 --> 01:04:32,852 Jums ir jāiegūst ieradums pārkompilēt kodu pēc tam, kad esat to 1378 01:04:32,852 --> 01:04:34,415 mainījis. 1379 01:04:34,415 --> 01:04:36,707 Jo citādi nulles un vieninieki serverī ir vecie, līdz jūs to manuāli 1380 01:04:36,707 --> 01:04:39,000 kompilējat. 1381 01:04:39,000 --> 01:04:41,040 Izlabosim to — make compare, Enter. 1382 01:04:41,040 --> 01:04:42,030 Nav kļūdu ziņojumu. 1383 01:04:42,030 --> 01:04:45,420 Tas ir labi. 1384 01:04:42,030 --> 01:04:47,320 ./compare, 2, 1. Un tagad es saņemu atpakaļ izvadi. 1385 01:04:47,320 --> 01:04:49,230 Tātad x nav mazāks par y. 1386 01:04:49,230 --> 01:04:52,390 Kā būtu, ja es ietu un pievienotu trešo nosacījumu? 1387 01:04:52,390 --> 01:04:55,650 Mēs to varam darīt efektīvi vai neefektīvi. 1388 01:04:55,650 --> 01:04:57,270 Ļaujiet man iet uz priekšu un uzlabot šo. 1389 01:04:57,270 --> 01:05:00,525 Tātad else if x ir lielāks par y, teiksim burtiski, x ir lielāks par 1390 01:05:00,525 --> 01:05:03,780 y. 1391 01:05:03,780 --> 01:05:07,950 Un tagad es varētu izveidot x else if x ir vienāds, ir vienāds ar y. 1392 01:05:07,950 --> 01:05:09,515 Bet es domāju, ka mēs jau apgalvojām, ka tas ir nevajadzīgi 1393 01:05:09,515 --> 01:05:11,080 neefektīvi. 1394 01:05:11,080 --> 01:05:12,810 Tātad izdarīsim visaptverošu pārskatu. 1395 01:05:12,810 --> 01:05:16,385 Un šeit es teikšu atvērējpēdiņas/aizvērējpēdiņas, x ir vienāds ar y, 1396 01:05:16,385 --> 01:05:19,960 slīpsvītra, n, aizvērējpēdiņas. 1397 01:05:19,960 --> 01:05:22,015 Tāpēc es domāju, ka tagad ar šo kodu mēs esam atrisinājuši visus trīs 1398 01:05:22,015 --> 01:05:24,070 scenārijus. 1399 01:05:24,070 --> 01:05:26,375 Ļaujiet man iet uz priekšu un pareizi pārkompilēt — make compare, 1400 01:05:26,375 --> 01:05:28,680 ./compare. 1401 01:05:28,680 --> 01:05:32,340 Un tagad 1 un 2 — ir mazāks par y. 1402 01:05:32,340 --> 01:05:33,510 Ļaujiet man to palaist vēlreiz. 1403 01:05:33,510 --> 01:05:36,690 2 un 1 — x ir lielāks par y. 1404 01:05:36,690 --> 01:05:41,100 Un visbeidzot, 1 un 1, un x ir vienāds ar y. 1405 01:05:41,100 --> 01:05:43,270 Tātad lielākoties mūsu kods kļūst garāks. 1406 01:05:43,270 --> 01:05:45,485 Mums ir 21 koda rindiņa, lai gan dažas no tām ekrānā ir tikai 1407 01:05:45,485 --> 01:05:47,700 atsevišķas rakstzīmes. 1408 01:05:47,700 --> 01:05:49,410 Gandrīz viss pārējais ir vienāds. 1409 01:05:49,410 --> 01:05:53,543 Es izmantoju CS50 bibliotēkas galvenes failu savai get_int funkcijai 1410 01:05:53,543 --> 01:05:57,676 , stdio.h savai funkcijai printf, un pārējā daļa ir tikai jauna 1411 01:05:57,676 --> 01:06:01,810 sintakse nosacījumiem. 1412 01:06:01,810 --> 01:06:05,023 Vai jums ir jautājumi par šo C ieviešanu tādiem pamata 1413 01:06:05,023 --> 01:06:08,237 salīdzinājumiem kā šis? 1414 01:06:08,237 --> 01:06:08,820 Kādi jautājumi? 1415 01:06:09,320 --> 01:06:11,925 AUDITORIJA: Tikai sintakses jautājums — vai atvērtajām iekavām ir 1416 01:06:11,925 --> 01:06:14,530 jābūt atsevišķā rindā? 1417 01:06:14,530 --> 01:06:15,190 DEIVIDS DŽ. MEILANS: Labs jautājums. 1418 01:06:15,190 --> 01:06:17,440 Vai atvērtajām iekavām ir jābūt atsevišķā rindā? 1419 01:06:17,440 --> 01:06:18,610 Iekš CS50, jā. 1420 01:06:18,610 --> 01:06:22,075 Jūs redzēsiet, ka iesniegšanas procesa ietvaros mēs salīdzinām jūsu 1421 01:06:22,075 --> 01:06:25,540 kodu ar stila rokasgrāmatu, kas nozarē ir ierasts. 1422 01:06:25,540 --> 01:06:27,415 Uzņēmumam ir sava stila izjūta un tam, kā vajadzētu izskatīties tā 1423 01:06:27,415 --> 01:06:29,290 kodam. 1424 01:06:29,290 --> 01:06:32,185 Un parasti uzņēmumā ir automatizēti rīki, kas palīdz sniegt 1425 01:06:32,185 --> 01:06:35,080 atsauksmes par kodu vai stilizē to kā tādu. 1426 01:06:35,080 --> 01:06:38,410 Ir alternatīvi stili, nekā tas, ko mēs izmantojam klasē. 1427 01:06:38,410 --> 01:06:41,650 Mēs apzināti paturam un lūdzam, lai jūs paturētu figūriekavas vienā 1428 01:06:41,650 --> 01:06:44,890 rindā, kaut vai tāpēc, ka tas drīzāk atgādina Scratch bloku 1429 01:06:44,890 --> 01:06:48,130 ieskaujošo raksturu un tikai parāda, ka tie ir līdzsvaroti, atvērti 1430 01:06:48,130 --> 01:06:51,370 un aizvērti. 1431 01:06:51,370 --> 01:06:55,395 Tomēr vēl viena izplatīta paradigma dažās valodās un ar dažiem 1432 01:06:55,395 --> 01:06:59,420 programmētājiem ir kaut ko līdzīgu izveidot katrā no tām. 1433 01:06:59,420 --> 01:07:03,670 Tātad jums ir atvērtā figūriekavatajā pašā rindā kā šeit. 1434 01:07:03,670 --> 01:07:05,030 Mēs to neiesakām. 1435 01:07:05,030 --> 01:07:07,900 Tas ir modē JavaScript pasaulē un dažās citās. 1436 01:07:07,900 --> 01:07:10,670 Bet, galu galā, reālajā pasaulē tas ir katra individuālā 1437 01:07:10,670 --> 01:07:13,440 programmētāja un/vai uzņēmuma, kurā viņš strādā, pārziņā, ko 1438 01:07:13,440 --> 01:07:16,210 vajadzības gadījumā izlemt šajā jautājumā. 1439 01:07:16,210 --> 01:07:18,675 Labi, tālāk par šiem nosacījumiem, ja mēs vēlamies darīt kaut ko, kas 1440 01:07:18,675 --> 01:07:21,140 varbūt ir diezgan izplatīts? 1441 01:07:21,140 --> 01:07:24,186 Tātad gandrīz katra programmatūra vai vietne, kuru mūsdienās 1442 01:07:24,186 --> 01:07:27,233 izmantojat, liek jums pieņemt noteikumus un nosacījumus, ierakstot Jā 1443 01:07:27,233 --> 01:07:30,280 vai Nē vai tikai Y, lai atbildētu ar Jā, un N, lai atbildētu Nē. 1444 01:07:30,280 --> 01:07:33,195 Tātad kā mēs varētu ieviest kaut kādu vienošanās sistēmu? 1445 01:07:33,195 --> 01:07:34,070 Nu, ļaujiet man to izdarīt. 1446 01:07:34,070 --> 01:07:37,810 Ļaujiet man izveidot jaunu programmu, trešo ar nosaukumu agree.c 1447 01:07:37,810 --> 01:07:41,230 Tāpēc es uzrakstīšu kodu agree.c, lai iegūtu jaunu cilni. 1448 01:07:41,230 --> 01:07:44,230 Es sākšu, kā vienmēr, tagad iekļaujot cs50.h. 1449 01:07:44,230 --> 01:07:46,480 Iekļausim stdio.h. 1450 01:07:46,480 --> 01:07:49,840 Un tad ļaujiet man izveidot manu int main(void) — kas atkal šodienas 1451 01:07:49,840 --> 01:07:53,200 mērķiem ir tikai kopēšana/ielīmēšana. 1452 01:07:53,200 --> 01:07:56,860 Un, ja es vienkārši vēlos iegūt Y vai N, piemēram, Jā vai Nē vietā, 1453 01:07:56,860 --> 01:08:00,520 mēs šeit varam izmantot vienkāršāku mainīgo. 1454 01:08:00,520 --> 01:08:03,800 Kā būtu tikai ar char, rakstu zīmi, vienu rakstu zīmi? 1455 01:08:03,800 --> 01:08:06,780 Tāpēc es varu izmantot get_char, lai pajautātu lietotājam, piemēram, 1456 01:08:06,780 --> 01:08:09,760 vai piekrītat, jautājuma zīme. 1457 01:08:09,760 --> 01:08:12,880 Bet, tāpat kā iepriekš, man tas kaut kur jāglabā. 1458 01:08:12,880 --> 01:08:15,130 Tātad es nevēlos virkni, jo tā ir viena rakstzīme. 1459 01:08:15,130 --> 01:08:16,180 Es negribu int. 1460 01:08:16,180 --> 01:08:17,380 Es tikai gribu char. 1461 01:08:17,380 --> 01:08:21,500 Un tas burtiski ir C-H-A-R. 1462 01:08:17,380 --> 01:08:21,500 Un tad es varu saukt šo lietu kā vien vēlos. 1463 01:08:21,500 --> 01:08:24,270 Tas ir ierasti, ja jums ir vienkārša programma ar tikai vienu mainīgo 1464 01:08:24,270 --> 01:08:27,040 un tās tips ir char, sauciet to par c. 1465 01:08:27,040 --> 01:08:28,569 Ja tas ir int, sauciet to par i. 1466 01:08:28,569 --> 01:08:29,830 Ja tā ir virkne, nosauciet to par s. 1467 01:08:29,830 --> 01:08:32,590 Pagaidām es to darīšu vienkārši un saukšu par c. 1468 01:08:32,590 --> 01:08:34,370 Un tagad es uzdošu jautājumu. 1469 01:08:34,370 --> 01:08:38,372 Tātad, ja c ir vienāds, ir vienāds ar, kā būtu, 1470 01:08:38,372 --> 01:08:42,375 atvērējpēdiņas/aizvērējpēdiņas, y, tad ļaujiet man iet uz priekšu un 1471 01:08:42,375 --> 01:08:46,377 izdrukāt Agreed, slīpsvītra, n, it kā viņi piekristu maniem 1472 01:08:46,377 --> 01:08:50,380 noteikumiem un nosacījumiem. 1473 01:08:50,380 --> 01:08:51,880 Citādi, paskatīsimies. 1474 01:08:51,880 --> 01:08:54,812 Else if rakstzīme, ir vienāds, ir vienāds, 1475 01:08:54,812 --> 01:08:57,744 atvērējpēdiņas/aizvērējpēdiņas, n, tad ļaujiet man iet uz priekšu un 1476 01:08:57,744 --> 01:09:00,676 izdrukāt, teiksim, Not agreed, it kā nebūtu, 1477 01:09:00,676 --> 01:09:03,609 atvērējpēdiņas/aizvērējpēdiņas. 1478 01:09:03,609 --> 01:09:07,060 Un atstāsim to, manuprāt, šeit tā. 1479 01:09:07,060 --> 01:09:11,830 Tagad jūs pamanīsit vienu neskaidrību, varbūt vienu neatbilstību. 1480 01:09:11,830 --> 01:09:15,760 Vai kāds vēlas to nosaukt, lai gan tas ir nedaudz nepamanāms? 1481 01:09:15,760 --> 01:09:19,720 Esmu kaut ko darījis nedaudz savādāk, to vēl nepaskaidrojot. 1482 01:09:19,720 --> 01:09:20,380 Vai jūs to redzat? 1483 01:09:20,380 --> 01:09:22,625 AUDITORIJA: Vienas pēdiņas. 1484 01:09:23,500 --> 01:09:27,045 Tātad es pēkšņi esmu izmantojis vienas pēdiņas savām atsevišķajām 1485 01:09:27,045 --> 01:09:30,590 rakstzīmēm un dubultpēdiņas savām faktiskajām teksta virknēm. 1486 01:09:30,590 --> 01:09:34,210 Tā ir nepieciešamība iekš C. 1487 01:09:30,590 --> 01:09:34,186 Kad strādā ar virknēm, piemēram, teksta virknēm, kāda cilvēka vārdu, 1488 01:09:34,186 --> 01:09:37,783 teikumu, rindkopu vai jebko vairāk nekā vienu rakstzīmi, parasti tiek 1489 01:09:37,783 --> 01:09:41,380 izmantotas dubultās pēdiņas. 1490 01:09:41,380 --> 01:09:42,399 Un patiešām, jums tas ir jādara. 1491 01:09:42,399 --> 01:09:46,109 Saskaroties ar tīšām atsevišķām rakstzīmēm, piemēram, kā esšeit ar y 1492 01:09:46,109 --> 01:09:49,819 vai n,ir jāizmanto vienas pēdiņas. 1493 01:09:50,319 --> 01:09:52,434 Jo tas nodrošina, ka dators zina, ka tā patiešām ir rakstzīme, nevis 1494 01:09:52,434 --> 01:09:54,550 virkne. 1495 01:09:54,550 --> 01:09:55,930 Tātad dubultpēdiņas ir paredzētas virknēm. 1496 01:09:55,930 --> 01:09:57,520 Vienas pēdiņas ir paredzētas rakstzīmēm. 1497 01:09:57,520 --> 01:10:00,550 Tā sakot, ļaujiet man turpināt un attālināt. 1498 01:10:00,550 --> 01:10:02,665 Ļaujiet man iet uz priekšu manā termināļa logā palaist make agree, 1499 01:10:02,665 --> 01:10:04,780 Enter. 1500 01:10:04,780 --> 01:10:06,775 Šķiet, ka darbojas labi, tāpēc ļaujiet man turpināt un izveidot 1501 01:10:06,775 --> 01:10:08,770 ./agree. 1502 01:10:08,770 --> 01:10:12,250 Ļaujiet man turpināt un ievadīt y. 1503 01:10:12,250 --> 01:24:20,143 Te nu mēs esam. 1504 01:10:13,090 --> 01:10:22,480 Enter. 1505 01:10:14,980 --> 01:10:16,540 Huh. 1506 01:10:16,540 --> 01:10:17,470 Ļaujiet man mēģināt vēlreiz. 1507 01:10:17,470 --> 01:10:18,580 Atkārtoti palaižu ./agree. 1508 01:10:18,580 --> 01:10:20,170 Kā būtu ar nē? 1509 01:10:22,480 --> 01:10:25,720 Kāpēc tas nedara to, ko es būtu gaidījis? 1510 01:10:25,720 --> 01:10:28,480 AUDITORIJA: Jo jūs ievadījāt lielo Y un lielo N. 1511 01:10:28,480 --> 01:10:30,355 DEIVIDS DŽ. MEILANS: Jā, es tur nokrāpos, un es nospiedu Caps Lock 1512 01:10:30,355 --> 01:10:32,230 taustiņu tieši tad, kad sāku rakstīt ievadi. 1513 01:10:32,730 --> 01:10:35,135 Jo es apzināti gribēju rakstīt lielos, nevis mazos burtus, kas ir 1514 01:10:35,135 --> 01:10:37,540 diezgan saprotami. 1515 01:10:37,540 --> 01:10:39,283 Tas ir nedaudz nepatīkami, ja piespiežat lietotāju ieslēgt vai 1516 01:10:39,283 --> 01:10:41,026 izslēgt lielo burtu bloķēšanas taustiņu, kad nepieciešama vienkārša 1517 01:10:41,026 --> 01:10:42,770 atbilde. 1518 01:10:42,770 --> 01:10:45,310 Tā nav labākā lietotāja pieredze jeb UX. 1519 01:10:45,310 --> 01:10:47,200 Bet tas izdotos, ja es sadarbotos. 1520 01:10:47,200 --> 01:10:49,615 Ļaujiet man palaist šo vēlreiz bez lielajiem burtiem — y mazais 1521 01:10:49,615 --> 01:10:52,030 burts, lai apstiprinātu, ka jā. 1522 01:10:52,030 --> 01:10:55,210 Ak, tas nostrādāja. 1523 01:10:52,030 --> 01:10:55,990 n mazaiz burts priekš nē. Tas nostrādāja. 1524 01:10:55,990 --> 01:10:57,910 Bet kā es varu panākt, lai tas darbotos abos? 1525 01:10:57,910 --> 01:10:59,180 Nu, kā ar šo? 1526 01:10:59,180 --> 01:11:01,400 Ļaujiet man turpināt un vienkārši pievienot divas iespējas. 1527 01:11:01,400 --> 01:11:04,506 Tātad else if c ir vienāds, ir vienāds, 1528 01:11:04,506 --> 01:11:07,613 atvērējpēdiņas/aizvērējpēdiņas, lielais Y, tad arī izveidojiet printf 1529 01:11:07,613 --> 01:11:10,720 agreed reversā slīpsvītra, n. 1530 01:11:10,720 --> 01:11:15,850 Un šeit lejā, else ifc ir vienāds, ir vienāds, vienas atvērējpēdiņas, 1531 01:11:15,850 --> 01:11:20,980 lielais N, tad turpiniet un atkal izdrukājiet: Not agreed. 1532 01:11:20,980 --> 01:11:23,770 Tas, es tagad apgalvošu, ir pareizi. 1533 01:11:23,770 --> 01:11:26,980 Un es ļoti ātri izveidošu make agree, ./agree. 1534 01:11:26,980 --> 01:11:28,210 Un es izmantošu lielos burtus. 1535 01:11:28,210 --> 01:11:29,170 Tagad tas darbojas. 1536 01:11:29,170 --> 01:11:30,610 Es izmantošu lielos burtus. 1537 01:11:30,610 --> 01:11:32,200 Tas atkal darbojas. 1538 01:11:32,200 --> 01:11:34,510 Bet tas, iespējams, nav labākais dizains. 1539 01:11:34,510 --> 01:11:36,865 Ļaujiet man paslēpt termināļa logu un pavilkt to uz ekrāna 1540 01:11:36,865 --> 01:11:39,220 vienlaicīgi. 1541 01:11:39,220 --> 01:11:43,195 Kāpēc tas varētu nebūt labākais dizains, lai gan tas ir pareizs? 1542 01:11:46,250 --> 01:11:49,628 iemet šeit, piemēram, [OŠŅĀ] kaut ko 1543 01:11:49,628 --> 01:11:51,170 smaržo dīvaini šajā kodā. 1544 01:11:51,170 --> 01:11:52,450 Tas ir īsts īpašs termins. 1545 01:11:52,450 --> 01:11:54,100 Šeit ir koda smaka. 1546 01:11:54,100 --> 01:11:55,930 Kaut kas nedaudz ož. 1547 01:11:56,620 --> 01:11:57,894 Ko jūs domājat? 1548 01:12:07,770 --> 01:12:09,370 Atkal un atkal ir viena un tā pati izvade. 1549 01:12:09,370 --> 01:12:10,530 Es to ievadīju manuāli. 1550 01:12:10,530 --> 01:12:12,713 Bet godīgi sakot, es varētu arī vienkārši nokopēt un ielīmēt lielāko 1551 01:12:12,713 --> 01:12:14,896 daļu sava sākotnējā koda, lai to izdarītu atkal un atkal ar diviem 1552 01:12:14,896 --> 01:12:17,080 lielajiem burtiem. 1553 01:12:17,080 --> 01:12:28,500 [OŠŅĀ] tur ir kaut kāda koda smaka. 1554 01:12:28,500 --> 01:12:29,370 Tas nav labi izstrādāts. 1555 01:12:29,820 --> 01:12:32,253 Jo, ja es vēlos kaut ko tagad mainīt , tāpat kā pagājušajā nedēļā 1556 01:12:32,253 --> 01:12:34,686 iekš Scratch, man, iespējams, būs jāmaina kods vairākās vietās vai 1557 01:12:34,686 --> 01:12:37,120 arī kopēšana/ielīmēšana nekad nav laba lieta. 1558 01:12:37,120 --> 01:12:39,940 Un, nedod Dievs, es vēlos pievienot atbalstu priekš Jā un Nē kā 1559 01:12:39,940 --> 01:12:42,760 pilnus vārdus, tas tiešām būs garš. 1560 01:12:42,760 --> 01:12:44,170 Tātad kā mēs varam to atrisināt? 1561 01:12:44,170 --> 01:12:47,160 Nu, izrādās, mēs varam apvienot dažas no šīm domām. 1562 01:12:47,160 --> 01:12:49,470 Tāpēc ļaujiet man vispirms mēģināt uzlabot Jā. 1563 01:12:49,470 --> 01:12:51,897 Izrādās, ja es izdzēsīšu šo klauzulu, es varētu faktiski or lietas 1564 01:12:51,897 --> 01:12:54,325 kopā. 1565 01:12:54,325 --> 01:12:57,000 Programmā Scratch ir daži puzles gabali, ja jūs tos neatradāt, uz 1566 01:12:57,000 --> 01:12:59,675 kuriem burtiski ir vārds or un vārds and, kas ļauj apvienot Būla 1567 01:12:59,675 --> 01:13:02,350 izteiksmes. 1568 01:13:02,350 --> 01:13:06,600 Vai nu tas vai šis ir taisnība, vai šis un šis ir patiesība. 1569 01:13:06,600 --> 01:13:09,270 C valodā jūs nevarat vienkārši pateikt vārdu or. 1570 01:13:09,270 --> 01:13:12,850 Tā vietā izmantojiet divas vertikālas joslas. 1571 01:13:12,850 --> 01:13:16,260 Un vertikālās joslas kopā nozīmē or, loģiski. 1572 01:13:16,260 --> 01:13:19,020 Un tāpēc es varu teikt, c, ir vienāds,ir vienāds, 1573 01:13:19,020 --> 01:13:21,780 atvērējpēdiņas/aizvērējpēdiņas, lielais Y, Agreed. 1574 01:13:21,780 --> 01:13:24,270 Un tagad es varu atbrīvoties no šī koda šeit. 1575 01:13:24,270 --> 01:13:26,960 Un ļaujiet man iet uz priekšu un teikt, vertikālā josla divreiz, c, 1576 01:13:26,960 --> 01:13:29,650 vienāds ar, atvērējpēdiņas/aizvērējpēdiņas, N ar visiem lielajiem 1577 01:13:29,650 --> 01:13:32,340 burtiem. 1578 01:13:32,340 --> 01:13:36,870 Un tagad mana programma ir aptuveni par trešdaļu mazāka, kas ir labi. 1579 01:13:36,870 --> 01:13:38,140 Ir mazāk pārmērību. 1580 01:13:38,140 --> 01:13:43,456 Un, ja es atkārtoti atveru savu termināļa logu, atkārtoti palaižu 1581 01:13:43,456 --> 01:13:48,773 make of agree, ./agree, tagad es varu ierakstīt mazo y vai lielo Y un 1582 01:13:48,773 --> 01:13:54,090 to pašu ar mazajiem un lielajiem N burtiem . 1583 01:13:49,860 --> 01:13:53,133 Vai jums ir jautājumi par šo sintaksi, kur tagad varat apvienot domas 1584 01:13:53,133 --> 01:13:56,407 un vienkārši padarīt lietas kompaktākas? 1585 01:13:56,407 --> 01:13:57,990 Un būs arī citi šādi triki. 1586 01:13:58,942 --> 01:14:01,615 AUDITORIJA: Vai nav funkcija, kas vienkārši ignorē gadījumu? 1587 01:14:01,615 --> 01:14:03,240 DEIVIDS DŽ. MEILANS: Tiešām labs jautājums. 1588 01:14:03,240 --> 01:14:06,030 Vai nav kāda funkcija, kas ļauj vienkārši ignorēt gadījumu? 1589 01:14:06,030 --> 01:14:07,890 Īsa atbilde, ir. 1590 01:14:07,890 --> 01:14:10,950 Un mēs redzēsim, kā to izdarīt faktiski apmēram pēc nedēļas. 1591 01:14:10,950 --> 01:14:13,930 Citās valodās ir vēl vairāk veidu, kā vienkārši kanonizēt lietotāja 1592 01:14:13,930 --> 01:14:16,910 ievadi, izmetot visas atstarpes, pa kurām viņi varētu nejauši trāpīt, 1593 01:14:16,910 --> 01:14:19,890 liekot visu rakstīt ar mazajiem burtiem. 1594 01:14:19,890 --> 01:14:23,372 Programmā C mums būs nedaudz vairāk jāstrādā, lai to paveiktu. 1595 01:14:23,372 --> 01:14:26,080 Bet patiesībā jau nākamnedēļ mēs redzēsim, kā mēs to varēsim izdarīt. 1596 01:14:26,080 --> 01:14:29,490 Bet pagaidām mēs salīdzinām tikai šīs literālās vērtības. 1597 01:14:30,570 --> 01:14:32,222 AUDITORIJA: Tāpēc mēs pieņemam, ka lietotājs ievieto to, ko viņi 1598 01:14:32,222 --> 01:14:33,874 iesaka. 1599 01:14:33,874 --> 01:14:37,618 Kā jūs rīkotos, ja viņiem būtu jāievada skaitlis? 1600 01:14:39,160 --> 01:14:41,880 Tātad mēs pieņemam, ka šajā programmā un visās manās pēdējās 1601 01:14:41,880 --> 01:14:44,600 programmās cilvēks sadarbojas un, kad es jautāju viņa vārdu, viņš 1602 01:14:44,600 --> 01:14:47,320 ierakstīja Deivids, nevis 123, vai šajā gadījumā viņš ierakstīja 1603 01:14:47,320 --> 01:14:50,040 vienu rakstzīmi, nevis pilnu vārdu. 1604 01:14:50,040 --> 01:14:53,520 Tātad šī ir viena no funkcijām, kas bieži tiek izmantota bibliotēkā. 1605 01:14:53,520 --> 01:14:57,425 Tā, piemēram, ja es atkal palaižu agree un saku kaut ko līdzīgu: 1606 01:14:57,425 --> 01:15:01,330 sure, Enter, tas to pilnībā noraida. 1607 01:15:01,830 --> 01:15:05,850 Jo s, u, r, e ir rakstzīmju virkne. 1608 01:15:05,850 --> 01:15:07,320 Tā nav viena rakstzīme. 1609 01:15:07,320 --> 01:15:09,350 Tagad es varētu vienkārši pateikt kaut ko līdzīgu x, kas, protams, 1610 01:15:09,350 --> 01:15:11,380 nav ne y, ne n. 1611 01:15:11,380 --> 01:15:14,190 Bet tas to pieļauj, jo tā ir viena rakstzīme. 1612 01:15:14,190 --> 01:15:19,210 Taču CS50 bibliotēkā ir iebūvēti daži neparedzēti ievades atteikumi. 1613 01:15:19,210 --> 01:15:23,075 Tātad ja izmantojat get_int un lietotājs ievada nevis skaitli 1 vai 2 1614 01:15:23,075 --> 01:15:26,940 , bet cat, C-A-T, tas vienkārši procesēs viņus atkal un atkal. 1615 01:15:26,940 --> 01:15:30,504 Un arī šeit, ja jūs to darītu manuāli programmā C, jūs galu galā 1616 01:15:30,504 --> 01:15:34,068 ierakstītu tik daudz koda, lai pārbaudītu visas šīs kļūdas. 1617 01:15:34,068 --> 01:15:36,129 Tāpēc mēs dažas nedēļas izmantojam šos treniņriteņus , lai tikai 1618 01:15:36,129 --> 01:15:38,190 padarītu kodu izturīgāku. 1619 01:15:38,190 --> 01:15:40,500 Bet pēc dažām nedēļām mēs atņemsim brīvību. 1620 01:15:40,500 --> 01:15:44,970 Un jūs redzēsiet un sapratīsit, kā tas patiešām tiek darīts. 1621 01:15:44,970 --> 01:15:46,750 Labi, kā tad ar šo. 1622 01:15:46,750 --> 01:15:50,658 Tagad pāriesim uz kaut ko nedaudz līdzīgāku Scratch, burtiski, 1623 01:15:50,658 --> 01:15:54,567 izveidojot citu programmu, ko šeit sauc par meow-- tātad meow.c. 1624 01:15:54,567 --> 01:15:56,650 Mums šim nebūs nekādu audio iespēju . 1625 01:15:56,650 --> 01:15:57,750 Mēs paļausimies tikai uz print. 1626 01:15:57,750 --> 01:16:00,375 Un pieņemsim, ka es gribēju uzrakstīt programmu un redzēt, kas simulē 1627 01:16:00,375 --> 01:16:03,000 kaķa ņaudēšanu. 1628 01:16:03,000 --> 01:16:04,960 Tāpēc man pagaidām nav vajadzīga nekāda lietotāja ievade. 1629 01:16:04,960 --> 01:16:06,960 Tāpēc es tikai izmantošu stdio.h. 1630 01:16:06,960 --> 01:16:09,940 Es šeit izveidošu savu parasto int main(void). 1631 01:16:09,940 --> 01:16:11,825 Un tad es vienkārši iešu uz priekšu un izveidošu printf meow, reversā 1632 01:16:11,825 --> 01:16:13,710 slīpsvītra, n. 1633 01:16:13,710 --> 01:16:16,650 Un lai šis kaķis ņaud trīs reizes, piemēram, kā pagājušajā nedēļā. 1634 01:16:16,650 --> 01:16:18,870 Tāpēc es izveidošu meow, meow, meow. 1635 01:16:18,870 --> 01:16:20,610 Ikreiz, kad iezīmēsit rindas, ņemiet vērā, ka parādīsies mazi 1636 01:16:20,610 --> 01:16:22,350 punktiņi. 1637 01:16:22,350 --> 01:16:24,405 Šī ir tikai vizuāla norāde, kas ļauj noskaidrot, cik atstarpes esat 1638 01:16:24,405 --> 01:16:26,460 indentējuši. 1639 01:16:26,460 --> 01:16:28,296 VS Code, tāpat kā daudzi redaktori, automātiski indentēs kodu jūsu 1640 01:16:28,296 --> 01:16:30,133 vietā. 1641 01:16:30,133 --> 01:16:32,550 Es neesmu spiedis atstarpes taustiņu četras reizes katru reizi. 1642 01:16:32,550 --> 01:16:34,020 Es pat neesmu spiedis Tab. 1643 01:16:34,020 --> 01:16:37,976 Tomēr C valodā ir pieņemts, ka vajadzības gadījumā indentēt rindas ar 1644 01:16:37,976 --> 01:16:41,933 četrām atstarpēm — tātad nevis trim, nevis piecām. 1645 01:16:41,933 --> 01:16:43,891 Un šie punkti palīdz jums redzēt lietas tā, lai tās vienkārši 1646 01:16:43,891 --> 01:16:45,850 sakārtotos labā stilā. 1647 01:16:45,850 --> 01:16:47,725 Labi, tātad šī programma, ko es tikai tagad izvirzīšu, patiešām 1648 01:16:47,725 --> 01:16:49,600 darbosies. 1649 01:16:49,600 --> 01:16:52,560 Make meow — kas ir diezgan jauki — un tagad meow. 1650 01:16:52,560 --> 01:16:54,000 Tur, trīs reizes. 1651 01:16:54,000 --> 01:16:54,540 Pareizi. 1652 01:16:54,540 --> 01:16:55,500 Tas ņaud trīs reizes. 1653 01:16:55,500 --> 01:16:57,060 Bet, protams, tas nav labi izstrādāts. 1654 01:16:57,060 --> 01:16:58,935 Pagājušajā nedēļā tas nebija labi izstrādāts programmā Scratch. 1655 01:17:00,480 --> 01:17:03,130 Kas man būtu jādara citādāk? 1656 01:17:03,630 --> 01:17:04,120 AUDITORIJA: Cikls? 1657 01:17:04,120 --> 01:17:05,412 AUDITORIJA: Tas varētu būt cikls. 1658 01:17:07,140 --> 01:17:09,310 Tā ir lieliska iespēja ciklam. 1659 01:17:09,810 --> 01:17:12,670 Jo, ja vēlaties mainīt šo vārdu lielo burtu lietojumu vai vēlaties 1660 01:17:12,670 --> 01:17:15,530 mainīt skaņu, piemēram, suņa riešanu “vau” vai kaut ko citu, jums tas 1661 01:17:15,530 --> 01:17:18,390 ir jāmaina vienā, divās, trīs vietās. 1662 01:17:18,390 --> 01:17:20,160 Un tas ir vienkārši stulbi, vai ne? 1663 01:17:20,160 --> 01:17:23,020 Kodā ideālā gadījumā lietas jāmaina vienuviet. 1664 01:17:23,020 --> 01:17:24,880 Tātad kā es to varētu izdarīt? 1665 01:17:24,880 --> 01:17:27,120 Nu, mēs varētu ieviest ciklu, jā. 1666 01:17:27,120 --> 01:17:29,915 Bet mums būs vajadzīgs vēl viens būvēšanas bloks, kas mums bija 1667 01:17:29,915 --> 01:17:32,710 Scratch, proti, tās lietas, ko sauc par mainīgajiem. 1668 01:17:32,710 --> 01:17:35,615 Tāpēc atcerieties, ka mainīgais kā algebrā — x, y, zun tamlīdzīgi  — 1669 01:17:35,615 --> 01:17:38,520 var glabāt vērtību jūsu vietā. 1670 01:17:38,520 --> 01:17:42,630 Un Scratch mainīgais varēja izskatīties šādi. 1671 01:17:42,630 --> 01:17:44,760 Jūs izmantojat šo oranžo puzles gabalu, lai noteiktu jebkura 1672 01:17:44,760 --> 01:17:46,890 nosaukuma mainīgo, nevis tikai x, y vai z. 1673 01:17:46,890 --> 01:17:49,365 Bet jūs to varētu nosaukt par kaut ko aprakstošāku, piemēram, 1674 01:17:49,365 --> 01:17:51,840 counter, un jūs varat iestatīt to vienādu ar kādu vērtību. 1675 01:17:51,840 --> 01:17:54,705 C valodā veids, kā to izdarīt, ir līdzīgs sintaksei, ko līdz šim esam 1676 01:17:54,705 --> 01:17:57,570 redzējuši . 1677 01:17:57,570 --> 01:17:59,655 Vispirms sakiet vajadzīgā mainīgā nosaukumu, vienu vienādības zīmi un 1678 01:17:59,655 --> 01:18:01,740 pēc tam vērtību. 1679 01:18:01,740 --> 01:18:05,470 Jūs vēlaties arī to inicializēt, kopējot no labās puses uz kreiso. 1680 01:18:05,970 --> 01:18:07,770 Tāpēc ka vienādības zīme atkal apzīmē piešķiršanu no labās uz kreiso 1681 01:18:07,770 --> 01:18:09,570 pusi. 1682 01:18:09,570 --> 01:18:10,740 Tomēr ar to nepietiek. 1683 01:18:10,740 --> 01:18:12,282 Iespējams, jūs jau nojaušat. 1684 01:18:12,282 --> 01:18:16,170 Kas, iespējams, trūkst šajā koda rindā, lai izveidotu mainīgo? 1685 01:18:16,170 --> 01:18:16,767 AUDITORIJA: Int. 1686 01:18:16,767 --> 01:18:18,688 DEIVIDS DŽ. MEILANS: Tāpēc mums ir nepieciešams int, lai dators zina, 1687 01:18:18,688 --> 01:18:20,610 ka tas patiešām ir int. 1688 01:18:20,610 --> 01:18:23,802 Un visbeidzot, arī semikolu. 1689 01:18:23,802 --> 01:18:25,260 Un tas tagad pabeidz domu. 1690 01:18:25,260 --> 01:18:26,960 Tātad tas ir nedaudz kaitinošāk nekā Scratch, taču mēs sākam šeit 1691 01:18:26,960 --> 01:18:28,660 redzēt modeļus. 1692 01:18:28,660 --> 01:18:30,810 Tātad ne katrs sintakses fragments būs jauns. 1693 01:18:30,810 --> 01:18:34,145 Labi, ja vēlaties palielināt skaitītāju par vienu, Scratch izmanto 1694 01:18:34,145 --> 01:18:37,480 darbības vārdu change, un tas nozīmē pievienot vērtību skaitītājam. 1695 01:18:37,480 --> 01:18:40,705 Tātad ja es vēlos palielināt esošo mainīgo, ko sauc par counter, šī 1696 01:18:40,705 --> 01:18:43,930 sintakse ir nedaudz interesantāka. 1697 01:18:43,930 --> 01:18:48,690 Izrādās, ka kods izskatās šādi, kas gandrīz šķiet paradokss. 1698 01:18:48,690 --> 01:18:51,990 Kā var counterbūt vienāds ar counter plus 1? 1699 01:18:51,990 --> 01:18:53,160 Matemātika tā nedarbojas . 1700 01:18:53,160 --> 01:18:55,010 Bet atkal viena vienādības zīme ir piešķiršana no labās uz kreiso 1701 01:18:55,010 --> 01:18:56,860 pusi. 1702 01:18:56,860 --> 01:18:59,216 Tas nozīmē: ņemiet neatkarīgi no skaitītāja vērtības, pievienojiet 1703 01:18:59,216 --> 01:19:01,573 tam 1 un kopējiet šo pašā skaitītājā vērtību no labās puses uz kreiso 1704 01:19:01,573 --> 01:19:03,930 . 1705 01:19:03,930 --> 01:19:08,630 Jums joprojām ir nepieciešams semikols, taču es apgalvoju, ka, 1706 01:19:08,630 --> 01:19:13,330 atjauninot esošu mainīgo, jums nav jāpiemin atslēgvārds int. 1707 01:19:13,330 --> 01:19:16,676 Tātad tikai tad, kad veidojat mainīgo programmā C, jūs izmantojat 1708 01:19:16,676 --> 01:19:20,023 vārdu string vai vārdu int, vai kādu no citiem, ko mēs galu galā 1709 01:19:20,023 --> 01:19:23,370 redzēsim, tikai veidojot vai inicializējot to pirmo reizi. 1710 01:19:23,370 --> 01:19:25,780 Pēc tam, ja vēlaties to mainīt, tas vienkārši pastāv. 1711 01:19:25,780 --> 01:19:27,060 Tas ir vārds, ko jūs tam iedevāt. 1712 01:19:27,060 --> 01:19:29,950 Dators ir pietiekami gudrs, lai vismaz atcerētos, kāda veida tas ir. 1713 01:19:29,950 --> 01:19:33,845 Tātad šī rinda tagad ir pabeigta. Izrādās, ka kodā, kā mēs redzēsim, 1714 01:19:33,845 --> 01:19:37,740 ir diezgan izplatīti apvienot lietas kopā, palielināt tos par vienu. 1715 01:19:37,740 --> 01:19:40,710 Tātad vienai un tai pašai idejai faktiski ir atšķirīga sintakse. 1716 01:19:40,710 --> 01:19:43,290 Īpašs termins šeit ir sintaktiskais cukurs. 1717 01:19:43,290 --> 01:19:46,595 Kodā bieži ir daudz veidu, kā veikt vienu un to pašu, lai gan dienas 1718 01:19:46,595 --> 01:19:49,900 beigās tie veic tieši to pašu funkciju. 1719 01:19:49,900 --> 01:19:53,832 Piemēram, ja pēc dažām CS50 dienām jums šķiet apnicīgi turpināt 1720 01:19:53,832 --> 01:19:57,765 rakstīt kādu programmu, varat to vienkāršot šādi. 1721 01:19:57,765 --> 01:19:59,340 Tas ir sintaktiskais cukurs. 1722 01:19:59,340 --> 01:20:01,720 Varat izmantot plus vienāds un tikai vienu reizi pieminēt mainīgā 1723 01:20:01,720 --> 01:20:04,100 nosaukumu kreisajā pusē, un tas vienkārši zina, ka tas nozīmē 1724 01:20:04,100 --> 01:20:06,480 iepriekšējo. 1725 01:20:06,480 --> 01:20:10,420 Tas ir tikai nedaudz kodolīgāks. 1726 01:20:10,420 --> 01:20:12,900 Arī šī ir tik ierasta lieta, lai vērtībai pievienotu 1. 1727 01:20:12,900 --> 01:20:13,800 Un tam nav jābūt 1. 1728 01:20:13,800 --> 01:20:14,800 Bet šajā gadījumā tā ir. 1729 01:20:14,800 --> 01:20:17,675 Bet, ja tas patiešām ir 1, varat vēl vairāk samazināt kodu; lai šo 1730 01:20:17,675 --> 01:20:20,550 izdarītu - counter++. 1731 01:20:20,550 --> 01:20:23,511 Tātad jebkurā laikā iekš C, kad redzat ++, tas nozīmē burtiski 1732 01:20:23,511 --> 01:20:26,472 pievienot 1 šim konkrētajam mainīgajam. 1733 01:20:26,472 --> 01:20:28,680 Ir arī citi veidi, kā to izdarīt citā virzienā. 1734 01:20:28,680 --> 01:20:31,950 Ja vēlaties no mainīgā atņemt 1, varat izmantot jebkuru no 1735 01:20:31,950 --> 01:20:35,220 iepriekšējās sintakses, plusa vietā izmantojot mīnusa zīmi, vai arī 1736 01:20:35,220 --> 01:20:38,490 varat saīsintātāk izveidot counter. 1737 01:20:38,490 --> 01:20:42,520 Tas ir veids, kā to darītu tipisks C programmētājs. 1738 01:20:42,520 --> 01:20:47,500 Labi, ja mums nav mainīgo, iesim un atrisināsim ņaudēšanu ar ciklu. 1739 01:20:47,500 --> 01:20:49,320 Tātad programmā Scratch mēs redzējām šādus ciklus. 1740 01:20:49,320 --> 01:20:52,680 Tas, protams, lika kaķim ņaudēt trīs reizes. 1741 01:20:52,680 --> 01:20:54,480 Kā mēs to darām programmā C? 1742 01:20:54,480 --> 01:20:58,900 Tagad šeit lietas koda ziņā kļūst nedaudz sarežģitākas . 1743 01:20:58,900 --> 01:21:03,520 bet, ja jūs saprotat katru rindiņu, mēs loģiski sekosim notiekošajam. 1744 01:21:03,520 --> 01:21:07,925 Tātad šeit, es apgalvoju, ir viens no veidiem, kā ieviest ciklu, kas 1745 01:21:07,925 --> 01:21:12,330 atkārtojas trīs reizes C valodā. 1746 01:21:07,320 --> 01:21:12,330 Un tas ir diezgan smieklīgi, vai ne? 1747 01:21:12,330 --> 01:21:14,550 Mēs pārgājām no divām ļoti vienkāršām puzles detaļām kāšis, mans 1748 01:21:14,550 --> 01:21:16,770 Dievs, tas ir 1, 2, 3, 4, 5, 6 koda rindiņas, kas visas ir diezgan 1749 01:21:16,770 --> 01:21:18,990 sarežģītas. 1750 01:21:18,990 --> 01:21:20,740 Tātad tas strauji saasinājās. 1751 01:21:20,740 --> 01:21:21,960 Bet ko dara katra rindiņa? 1752 01:21:21,960 --> 01:21:24,120 Un mēs redzēsim citus veidus, kā to izdarīt vienkāršāk. 1753 01:21:24,120 --> 01:21:26,415 Tāpēc mēs inicializējam mainīgo, ko sauc par counter to 3, tāpat kā 1754 01:21:26,415 --> 01:21:28,710 iepriekš. 1755 01:21:29,370 --> 01:21:32,800 Nu, ko tas nozīmē ciklam vai atkārtot kaut ko trīs reizes? 1756 01:21:32,800 --> 01:21:35,560 Tas ir tāpat kā darīt kaut ko trīs reizes un tad to izveidot, un tad 1757 01:21:35,560 --> 01:21:38,320 count uz leju, un tad to izdarīt , un tad count uz leju, un tad 1758 01:21:38,320 --> 01:21:41,080 izveidot to, līdz viss ir beidzies. 1759 01:21:41,080 --> 01:21:42,995 Tātad šis ir mainīgā lieluma deklarēšana, ko sauc par skaitītāju, 1760 01:21:42,995 --> 01:21:44,910 iestatot to vienādu ar 3. 1761 01:21:44,910 --> 01:21:48,675 Tad es inducēju cikluk iekš C, kas pēc būtības ir līdzīgs 3 1762 01:21:48,675 --> 01:21:52,440 atkārtojumam, bet jums ir jāveic vairāk matemātikas pašam. 1763 01:21:52,440 --> 01:21:55,820 Tātad es uzdodu jautājumu iekavās, kamēr count ir lielāks par 0, ko 1764 01:21:55,820 --> 01:21:59,200 es vēlos darīt? 1765 01:21:59,200 --> 01:22:04,080 Atbilstoši indentācijai figūriekavās es gribu vienreiz ņaudēt. 1766 01:22:04,080 --> 01:22:06,990 Un, lai būtu skaidrs, ko dara šī pēdējā koda rindiņa? 1767 01:22:06,990 --> 01:22:12,120 Ja counter sākas ar trīs, tas padara to par 2, no tā atņemot 1. 1768 01:22:12,120 --> 01:22:13,320 Kas tad notiek? 1769 01:22:13,320 --> 01:22:15,470 Pēc cikla būtības, tāpat kā Scratch, tas zina, kā iet uz priekšu un 1770 01:22:15,470 --> 01:22:17,620 atpakaļ. 1771 01:22:17,620 --> 01:22:21,370 lai gan iekš Scratch ir jauka, skaista bultiņa, bet šeit tās nav, C 1772 01:22:21,370 --> 01:22:25,120 zina, ka tas ir jādara atkal un atkal, un atkal, pastāvīgi uzdodot šo 1773 01:22:25,120 --> 01:22:28,870 jautājumu un beigās atjauninot šo vērtību. 1774 01:22:28,870 --> 01:22:33,690 Tātad ja es izceļu tikai dažus no šiem soļiem, mainīgais sākas ar 3. 1775 01:22:33,690 --> 01:22:35,100 Un patiesībā ļaujiet man vienkāršot 2. 1776 01:22:35,100 --> 01:22:37,893 Iepriekš es apgalvoju, ka, izmantojot atsevišķus mainīgos, cilvēki 1777 01:22:37,893 --> 01:22:40,686 ļoti bieži to sauc tikai par i int vietā vai c, lai apzīmētu char, 1778 01:22:40,686 --> 01:22:43,480 vai s kā string, ja vien jums nav vairāku mainīgo. 1779 01:22:43,480 --> 01:22:44,730 Tāpēc ļaujiet man samazināt kodu. 1780 01:22:44,730 --> 01:22:47,220 Un tas jau liek tam izskatīties nedaudz panesamāk. 1781 01:22:47,220 --> 01:22:50,320 Ļaujiet man to vēl vairāk samazināt, pievienot vēl vienu soli. 1782 01:22:50,320 --> 01:22:54,653 Tātad tagad šis kods ir tik stingrs un kodolīgs, cik šobrīd iespējams. 1783 01:22:54,653 --> 01:22:56,320 Kas tad īsti šeit notiks? 1784 01:22:56,320 --> 01:22:59,550 Nu, tiek izpildīta pirmā koda rinda, kas inicializē i uz 3. 1785 01:22:59,550 --> 01:23:00,900 Tad mēs pārbaudām stāvokli. 1786 01:23:00,900 --> 01:23:03,840 Kamēr i ir lielāks par 0, vai i ir lielāks par 0? 1787 01:23:03,840 --> 01:23:05,580 Nu, uz maniem trim pirkstiem - acīmredzot . 1788 01:23:05,580 --> 01:23:07,590 Tāpēc mēs izdrukājam meow uz ekrāna. 1789 01:23:07,590 --> 01:23:13,110 Tad mēs atņemam 1 no i, un tagad mums ir 2 kā i vērtība. 1790 01:23:13,110 --> 01:23:15,330 Pēc tam kods atgriežas atpakaļ stāvoklī. 1791 01:23:15,330 --> 01:23:17,580 Un ievērojiet, nosacījums ir iekavās. 1792 01:23:17,580 --> 01:23:19,420 Tā ir vēl viena Būla izteiksme. 1793 01:23:19,420 --> 01:23:22,205 Tātad cikli var izmantot Būla izteiksmes, tāpat kā nosacījumi lēmumu 1794 01:23:22,205 --> 01:23:24,990 pieņemšanai izmanto Būla izteiksmes. 1795 01:23:24,990 --> 01:23:28,160 Tomēr cikls izlemj nevis to, vai darīt to vai citu, bet gan to, vai 1796 01:23:28,160 --> 01:23:31,330 darīt to pašu vēlreiz, atkal un atkal. 1797 01:23:31,330 --> 01:23:35,890 Un, kad tas atzīmē kodu vienu rindiņu pēc otras, tas galu galā 1798 01:23:35,890 --> 01:23:40,450 samazināsies līdz 1, tad 0 un pēc tam apstāsies. 1799 01:23:40,450 --> 01:23:44,156 Izsakoties citā veidā — šeit bija dažas iestrādnes — pieņemsim, ka šī 1800 01:23:44,156 --> 01:23:47,863 bumba šeit ir jūsu mainīgais, un jūs to inicializējat uz 3 ar trim 1801 01:23:47,863 --> 01:23:51,570 stresa bumbiņām, varat kaut ko izveidot trīs reizes, vai ne? 1802 01:23:51,570 --> 01:23:54,111 Ja es vēlos izdalīt trīs stresa bumbas, šeit ir jūsu iespēja iegūt 1803 01:23:54,111 --> 01:23:56,653 bezmaksas stresa bumbas, neatbildot uz jautājumiem. 1804 01:23:56,653 --> 01:23:57,400 Labi, ejam. 1805 01:23:57,400 --> 01:24:00,180 Tātad mēs sākam, atņemot 1 no mana mainīgā. 1806 01:24:00,180 --> 01:24:01,830 Man paliek divi. 1807 01:24:01,830 --> 01:24:02,460 Ak Dievs. 1808 01:24:02,460 --> 01:24:04,845 Labi, nesakiet Sandersam. 1809 01:24:04,845 --> 01:24:07,470 [RŪC] Ak, es atvainojos. 1810 01:24:07,470 --> 01:24:08,080 Ak. 1811 01:24:08,080 --> 01:24:08,580 [SMIEKLI] 1812 01:24:08,580 --> 01:24:10,350 Labi, tas beidzās slikti. 1813 01:24:10,350 --> 01:24:11,070 Atvainojos. 1814 01:24:11,570 --> 01:24:14,970 Taču tagad izglītojošais aspekts ir tāds, ka mans mainīgais ir 1815 01:24:14,970 --> 01:24:18,370 samazinājies, lai tikai būtu — es vairs tik tālu nemetīšu. 1816 01:24:18,370 --> 01:24:19,620 Es to nevaru izdarīt. 1817 01:24:20,143 --> 01:24:21,060 Labi, lūk. 1818 01:24:21,060 --> 01:24:22,740 Un viena pēdējā atņemšana. 1819 01:24:22,740 --> 01:24:24,880 Un tagad mūsu mainīgais ir atstāts tukšs. 1820 01:24:24,880 --> 01:24:28,380 Tātad mums tur bija trīs stresa bumbas, un tas ir viss mainīgais. 1821 01:24:28,380 --> 01:24:29,475 Tā ir sava veida krātuve. 1822 01:24:29,475 --> 01:24:32,100 Tas faktiski, protams, ir ieviests datora atmiņā. 1823 01:24:32,100 --> 01:24:35,860 Bet metaforiski, tā tiešām ir tikai bļoda ar dažām vērtībām. 1824 01:24:35,860 --> 01:24:37,850 Un katru reizi, kad jūs or, šajā gadījumā, atņemat, jūs vienkārši 1825 01:24:37,850 --> 01:24:39,840 maināt šī mainīgā vērtību. 1826 01:24:39,840 --> 01:24:42,225 Un tad kods, tikmēr, protams, iekavās, tikai pārbauda, vai bļoda ir 1827 01:24:42,225 --> 01:24:44,610 tukša? 1828 01:24:44,610 --> 01:24:46,570 Vai bļoda ir tukša? 1829 01:24:46,570 --> 01:24:50,350 Tas ir, vai i ir lielāks par 0 vai nē? 1830 01:24:50,350 --> 01:24:55,210 Vai jums ir jautājumi par to, kā mēs esam ieviesuši cilpas šādā veidā? 1831 01:24:55,210 --> 01:24:58,080 Un pēc nodarbības esmu jums parādā stresa bumbu. 1832 01:24:58,080 --> 01:24:59,820 Jautājumi par cikliem? 1833 01:24:59,820 --> 01:25:03,240 Labi, izrādās, ka tas ir neglīti. 1834 01:25:03,240 --> 01:25:06,331 Un tas patiešām sāk atņemt programmēšanas jautrību, kad jums ir 1835 01:25:06,331 --> 01:25:09,422 jāizraksta šī darbību secība. 1836 01:25:09,422 --> 01:25:11,380 Tātad izrādās, ka ir citi veidi, kā to izdarīt. 1837 01:25:11,380 --> 01:25:13,895 Bet vispirms loģiski paskatīsimies, kā citādi jūs to varētu izteikt, 1838 01:25:13,895 --> 01:25:16,410 jo ir nedaudz dīvaini, ka mēs turpinām lietot nulli. 1839 01:25:16,410 --> 01:25:19,890 Tātad vēl viens veids, kā to izdarīt, būtu apgriezt loģiku. 1840 01:25:19,890 --> 01:25:21,855 Jūs varētu pilnīgi sākt ar savu mainīgo, nosaukt to par i vienāds ar 1841 01:25:21,855 --> 01:25:23,820 1. 1842 01:25:23,820 --> 01:25:28,290 Un tad jūs varētu uzdot jautājumu, vai i ir mazāks vai vienāds ar 3? 1843 01:25:28,290 --> 01:25:30,210 Un ievērojiet šeit mazliet jaunu sintaksi. 1844 01:25:30,210 --> 01:25:32,763 Jūsu parastajā tastatūrā ir skaitlis, kas ir mazāks par vai 1845 01:25:32,763 --> 01:25:35,316 vienādības zīme vai lielāks par vai vienādības zīme, kā jūs rakstītu 1846 01:25:35,316 --> 01:25:37,870 matemātikas stundā ar 1 pār otru. 1847 01:25:37,870 --> 01:25:40,366 Un tā iekš C, jūs izmantojat divas rakstzīmes, mazāk nekā, kam seko 1848 01:25:40,366 --> 01:25:42,863 vienādības zīme vai, ja nepieciešams, lielāks par, kam seko 1849 01:25:42,863 --> 01:25:45,360 vienādības zīme. 1850 01:25:45,360 --> 01:25:47,370 Un tas loģiski ietver šo ideju. 1851 01:25:47,370 --> 01:25:50,580 Tāpēc ievērojiet, ka es mainu savus jautājumus. 1852 01:25:50,580 --> 01:25:55,830 Es inicializēju i uz 1, un tad es to palielināšu līdz 2 un pēc tam 3. 1853 01:25:55,830 --> 01:25:58,085 Bet, tā kā es izveidoju mazāks par vai vienāds ar, tas joprojām būs 1854 01:25:58,085 --> 01:26:00,340 no 1, 2, 3. 1855 01:26:00,340 --> 01:26:01,530 Tātad arī tas darbojas. 1856 01:26:01,530 --> 01:26:03,810 Līdzīgi mēs to varētu izdarīt vēl citā veidā. 1857 01:26:03,810 --> 01:26:07,725 Mēs varētu inicializēt i uz 0, un tad mēs varētu teikt, labi, i ir 1858 01:26:07,725 --> 01:26:11,640 mazāks par 3, un turpināt to palielināt. 1859 01:26:11,640 --> 01:26:14,940 Un es parādīju, ka šī pēdējā forma patiesībā ir viskanoniskākā. 1860 01:26:14,940 --> 01:26:18,420 Viscilvēciskāk varētu būt domāt no 1 līdz 3. 1861 01:26:18,420 --> 01:26:21,080 Visvairāk stresa bumbai līdzīgi varētu būt domāt no 3 līdz 0, skaitot 1862 01:26:21,080 --> 01:26:23,740 uz leju. 1863 01:26:23,740 --> 01:26:27,696 Kad jums paliek ērti skaitīt no 0, visbiežāklielākajai daļai 1864 01:26:27,696 --> 01:26:31,653 programmētāju sintakse, vienmēr ir sākt skaitīt no 0 un skaitīt līdz 1865 01:26:31,653 --> 01:26:35,610 mazākajai vērtībai, līdz kurai skaitāt. 1866 01:26:35,610 --> 01:26:40,043 Tātad kāpēc būtu nepareizi šeit mainīt to uz mazāku vai vienādu ar 3? 1867 01:26:40,043 --> 01:26:42,960 Kas notiktu, ja es mainītu mazāk nekā uz mazāku vai vienādu ar? 1868 01:26:42,960 --> 01:26:44,340 AUDITORIJA: Tas ņaudēs tikai divas reizes. 1869 01:26:44,340 --> 01:26:46,060 DEIVIDS DŽ. MEILANS: Jā, tas ņaudēs papildus — ceturto reizi, 1870 01:26:46,060 --> 01:26:47,780 patiesībā, kopumā, vai ne? 1871 01:26:47,780 --> 01:26:51,150 Jo jūs sāksit ar 0, tad 1, tad 2, tad 3. 1872 01:26:51,150 --> 01:26:55,420 Un mazāks par vai vienāds ar 3 — piedodiet — 3 dos jums ceturto reizi. 1873 01:26:55,420 --> 01:26:58,650 Tāpēc mēs patiešām vēlamies būt tikai par vienu mazāks. 1874 01:26:58,650 --> 01:27:00,570 Labi, tagad, kad mums ir šīs iespējas, ļaujiet man sniegt jums vienu 1875 01:27:00,570 --> 01:27:02,490 citu. 1876 01:27:02,490 --> 01:27:04,850 Un šim ir nepieciešams nedaudz vairāk pierašanas, bet tas, iespējams, 1877 01:27:04,850 --> 01:27:07,210 ir visizplatītākais veids, kā to rakstīt. 1878 01:27:07,210 --> 01:27:11,590 Ļaujiet man turpināt un ierosināt mums to īstenot šādi. 1879 01:27:11,590 --> 01:27:13,390 Ļaujiet man atgriezties pie sava koda šeit. 1880 01:27:13,390 --> 01:27:17,195 Ļaujiet man iedziļināties manos vairākos printfs, galu galā, 1881 01:27:17,195 --> 01:27:21,000 atbrīvojoties no visiem, izņemot vienu. 1882 01:27:21,000 --> 01:27:22,750 Un ieviesīsim to kodā. 1883 01:27:22,750 --> 01:27:27,476 Tātad izveidosim int i get 0, kā būtu tad, kamēr i ir mazāks par 3, 1884 01:27:27,476 --> 01:27:32,203 tad ejam uz priekšu un sakām printf, atvērējpēdiņas/aizvērējpēdiņas, 1885 01:27:32,203 --> 01:27:36,930 meow-- meow-- meow, reversā slīpsvītra, n. 1886 01:27:36,930 --> 01:27:41,310 Un tad mums ir jāizveido i mīnus mīnuss vai plus plus? 1887 01:27:41,310 --> 01:27:42,237 AUDITORIJA: Vēl vairāk. 1888 01:27:42,237 --> 01:27:44,678 DEIVIDS DŽ. MEILANS: Tātad plus plus, jo mēs sākam no 0 un ejam uz 1889 01:27:44,678 --> 01:27:47,120 augšu, bet ne līdz 3. 1890 01:27:47,120 --> 01:27:50,045 Ļaujiet man tagad iet uz priekšu un make meow pēc termināļa 1891 01:27:50,045 --> 01:27:52,970 notīrīšanas, ./meow, un tas joprojām ir tikpat pareizi. 1892 01:27:52,970 --> 01:27:56,730 Bet tas ir nedaudz vairāk — tas ir nedaudz labāk izstrādāts. 1893 01:27:57,230 --> 01:27:59,540 Jo tagad, ja es vēlos to mainīt, piemēram, no 3 līdz 30 reizēm, es to 1894 01:27:59,540 --> 01:28:01,850 varu tur mainīt. 1895 01:28:01,850 --> 01:28:03,770 Es varu pārkompilēt savu kodu. 1896 01:28:03,770 --> 01:28:06,020 Es varu izveidot ./meow, un darīts. 1897 01:28:06,020 --> 01:28:09,450 Man tas nav jākopē un jāielīmē vēl 27 reizes, lai iegūtu šo efektu. 1898 01:28:09,450 --> 01:28:13,400 Un es pat varu mainīt vārdu, mainot to tikai vienā vietā. 1899 01:28:13,400 --> 01:28:15,920 Bet izrādās, ka ir arī citi veidi, kā to izdarīt. 1900 01:28:15,920 --> 01:28:20,502 Un ļaujiet man iepazīstināt jūs arī ar to, ko sauc par for ciklu. 1901 01:28:20,502 --> 01:28:24,001 Tātad ja vēlaties kaut ko atkārtot trīs reizes, varat izmantot while 1902 01:28:24,001 --> 01:28:27,500 ciklu pieeju, ko mēs tikko redzējām, vai arī varat izdarīt šo . 1903 01:28:27,500 --> 01:28:30,850 Un tas prasa nedaudz vairāk pierašanas, bet tas kaut kā apvieno vienā 1904 01:28:30,850 --> 01:28:34,200 rindā visu to pašu loģiku. 1905 01:28:34,200 --> 01:28:36,830 Tāpēc ievērojiet, ka mums šeit ir atslēgvārds. 1906 01:28:36,830 --> 01:28:39,470 Un for šajā gadījumā ir tikai prievārds, kas parasti nozīmē, ka šeit 1907 01:28:39,470 --> 01:28:42,110 ir cikls. 1908 01:28:42,110 --> 01:28:46,097 Iekavās ir ne tikai Būla izteiksme. 1909 01:28:46,097 --> 01:28:47,930 Un šeit lietas kļūst mazliet dīvainas. 1910 01:28:47,930 --> 01:28:51,080 Ir trīs lietas — pa kreisi no semikola, divu semikolu vidū un pa labi 1911 01:28:51,080 --> 01:28:54,230 no semikola. 1912 01:28:54,230 --> 01:28:56,214 Šis patiešām ir vienīgais konteksts, kurā mēs redzēsim semikolus, un 1913 01:28:56,214 --> 01:28:58,198 tas ir dīvaini. 1914 01:28:58,198 --> 01:28:59,990 Parasti tas ir bijis rindas beigās. 1915 01:28:59,990 --> 01:29:02,455 Tagad tie ir divi no tiem līnijas vidū, taču šis ir veids, kā cilvēki 1916 01:29:02,455 --> 01:29:04,920 pirms gadiem nolēma to darīt. 1917 01:29:04,920 --> 01:29:06,080 Tātad ko tas dara? 1918 01:29:06,080 --> 01:29:07,850 Gandrīz tas pats. 1919 01:29:07,850 --> 01:29:12,320 Tas inicializēs mainīgo, ko sauc par i, uz 0. 1920 01:29:12,320 --> 01:29:14,240 Pēc tam tas tiks pārbaudīts. 1921 01:29:14,240 --> 01:29:18,610 Ja tas ir mazāks par 3, tas darīs visu, kas ir figūriekavās, un, 1922 01:29:18,610 --> 01:29:22,980 visbeidzot, palielinās i un atkārtos. 1923 01:29:22,980 --> 01:29:25,660 Tātad tikai izceļot tos pēc kārtas, sākumā i tiek inicializēts uz 0, 1924 01:29:25,660 --> 01:29:28,340 tāpat kā iepriekš. 1925 01:29:28,340 --> 01:29:30,170 Pēc tam šis nosacījums tiek pārbaudīts. 1926 01:29:30,170 --> 01:29:32,150 Šī ir Būla izteiksme. 1927 01:29:32,150 --> 01:29:34,610 Jā vai nē, patiesa vai nepatiesa būs tā atbilde. 1928 01:29:34,610 --> 01:29:37,580 Un, ja i ir mazāks par 3, kam tam vajadzētu būt, ja tas sākas ar 0, 1929 01:29:37,580 --> 01:29:40,550 tad mēs turpināsim un izdrukāsim meow. 1930 01:29:40,550 --> 01:29:42,350 Tad i tiks palielināts. 1931 01:29:42,350 --> 01:29:43,580 Tātad tas sākas ar 0. 1932 01:29:43,580 --> 01:29:45,170 Tagad tas iet uz 1. 1933 01:29:45,170 --> 01:29:48,150 Tajā brīdī Būla izteiksme tiek pārbaudīta vēlreiz. 1934 01:29:48,150 --> 01:29:50,840 Tātad jūs nemaināt i atpakaļ uz 0. 1935 01:29:50,840 --> 01:29:53,210 Šis pirmais solis notiek tikai vienu reizi. 1936 01:29:53,210 --> 01:29:56,270 Bet tagad jūs atkārtojat šos trīs citus svarīgākos punktus. 1937 01:29:56,270 --> 01:29:57,770 Es pārbaudu, vai i ir mazāks par 3. 1938 01:29:57,770 --> 01:30:03,980 Tas ir. 1939 01:29:58,320 --> 01:29:59,600 Tātad es izdrukāju meow. 1940 01:29:59,600 --> 01:30:00,875 Tad tas palielinās i. 1941 01:30:00,875 --> 01:30:03,410 Es pārbaudu, vai i, tagad 2, ir mazāks par 3. 1942 01:30:03,980 --> 01:30:05,240 Es izdrukāju meow. 1943 01:30:05,240 --> 01:30:06,380 i tiek palielināts. 1944 01:30:06,380 --> 01:30:07,100 Tagad pārbaudu. 1945 01:30:07,100 --> 01:30:08,120 Vai i ir mazāks par 3? 1946 01:30:08,120 --> 01:30:11,360 Nē, tā nav, jo 3 nav mazāks par 3. 1947 01:30:11,360 --> 01:30:12,800 Un tā visa lieta apstājas. 1948 01:30:12,800 --> 01:30:15,110 Un jebkurš kods, kas atrodas zem šīs figūriekavas, ja tāds ir, tā 1949 01:30:15,110 --> 01:30:17,420 vietā sāk izpildītiet. 1950 01:30:17,420 --> 01:30:20,015 Tāpat kā Scratch, jūs izlaužaties no cikla un puzles gabali tiek 1951 01:30:20,015 --> 01:30:22,610 aptverti. 1952 01:30:22,610 --> 01:30:27,065 Vai jums ir jautājumi par šo alternatīvo ciklu sintaksi, tas ir, par 1953 01:30:27,065 --> 01:30:31,520 for ciklu? 1954 01:30:31,520 --> 01:30:34,195 AUDITORIJA: Vai varat vēlreiz paskaidrot, kāpēc tas neatgriežas uz 0? 1955 01:30:34,195 --> 01:30:35,570 DEIVIDS DŽ. MEILANS: Atvainojiet, sakiet vēlreiz? 1956 01:30:35,570 --> 01:30:36,485 AUDITORIJA: Vai varat vēlreiz paskaidrot, kāpēc tas netiek 1957 01:30:36,485 --> 01:30:37,400 atiestatīts uz 0? 1958 01:30:38,275 --> 01:30:40,400 Vai varu vēlreiz paskaidrot, kāpēc tas netiek atiestatīts uz 0? 1959 01:30:40,400 --> 01:30:41,690 Godīgi sakot, tikai tāpēc. 1960 01:30:41,690 --> 01:30:43,490 Tā bija viņu izvēlētā sintakse. 1961 01:30:43,490 --> 01:30:45,575 Šī pirmā daļa pirms pirmā semikola tiek izpildīta tikai vienreiz 1962 01:30:45,575 --> 01:30:47,660 tikai tāpēc. 1963 01:30:47,660 --> 01:30:48,740 Tā tas ir veidots. 1964 01:30:48,740 --> 01:30:51,660 Viss pārējais ciklos atkal un atkal. 1965 01:30:51,660 --> 01:30:53,635 Un šī ir tikai alternatīva sintakse nedaudz vairāk koda rindu 1966 01:30:53,635 --> 01:30:55,610 izmantošanai. 1967 01:30:55,610 --> 01:30:57,818 Tas bija kā sešas koda rindiņas, izmantojot while ciklu. 1968 01:30:57,818 --> 01:30:59,387 Loģiski, ka tas ir viens un tas pats. 1969 01:30:59,387 --> 01:31:02,313 Programmētāji, kad viņi sāk pierast, parasti dod priekšroku tam, jo 1970 01:31:02,313 --> 01:31:05,240 tas tikai kodolīgāk izsaka visas jūsu domas. 1971 01:31:05,240 --> 01:31:06,380 Tas ir viss. 1972 01:31:06,890 --> 01:31:07,620 AUDITORIJA: Tas bija mans jautājums. 1973 01:31:07,620 --> 01:31:08,412 DEIVIDS Dž. MEILANS: Labi. 1974 01:31:08,412 --> 01:31:11,210 Iestrādāsim to manā meow piemērā. 1975 01:31:11,210 --> 01:31:12,590 Ļaujiet man atgriezties pie koda šeit. 1976 01:31:12,590 --> 01:31:14,390 Un ņemiet vērā, ka, ja es izceļu visas šīs līnijas, es domāju, ka mēs 1977 01:31:14,390 --> 01:31:16,190 varam to saīsināt. 1978 01:31:16,190 --> 01:31:18,770 Ļaujiet man atbrīvoties no tiem un tā vietā izveidot for int i ir 1979 01:31:18,770 --> 01:31:21,350 vienāds ar 0. 1980 01:31:21,350 --> 01:31:22,790 Un es saku vienāds ar. 1981 01:31:22,790 --> 01:31:24,260 Lielākā daļa programmētāju teiktu gets. 1982 01:31:24,260 --> 01:31:28,130 Tātad int i gets 0 nozīmē piešķiršanu — vārds get. 1983 01:31:28,130 --> 01:31:32,360 Tagad es izveidošu i ir mazāks par 3 i++. 1984 01:31:32,360 --> 01:31:35,015 Tagad šeit es izveidošu savu printf, atvērējpēdiņas/aizvērējpēdiņas, 1985 01:31:35,015 --> 01:31:37,670 meow, reversā slīpsvītra, n. 1986 01:31:37,670 --> 01:31:39,450 Un tāpēc tas patiešām ir nedaudz ciešāks. 1987 01:31:39,450 --> 01:31:41,408 Es domāju, divas no līnijām ir tikai figūriekavas. 1988 01:31:41,408 --> 01:31:43,580 Tagad tiešām ir tikai divas sulīgas koda rindas. 1989 01:31:43,580 --> 01:31:47,460 Ļaujiet man iet uz priekšu un izveidot meow, ./meow. 1990 01:31:47,460 --> 01:31:51,680 Un atkal mēs atgriežamies biznesā ar trim no tiem tikai drukājot . 1991 01:31:51,680 --> 01:31:54,005 Labi, ir vēl viena struktūra, kuru mums vajadzētu izpētīt tikai 1992 01:31:54,005 --> 01:31:56,330 tāpēc, ka tā dažreiz ir noderīga. 1993 01:31:56,330 --> 01:31:58,010 Šis bija forever bloks. 1994 01:31:58,010 --> 01:32:00,380 Un tas būtu mazliet dīvaini iekš Scratch vienkārši pateikt meow 1995 01:32:00,380 --> 01:32:02,750 forever vai vismaz bez gaidīšanas. 1996 01:32:02,750 --> 01:32:05,120 Bet iekš Scratch patiešām ir forever bloks, kas nozīmē, ka uz visiem 1997 01:32:05,120 --> 01:32:07,490 laikiem rīkojieties šādi. 1998 01:32:07,490 --> 01:32:09,425 Un es domāju, ka pagājušajā nedēļā mutiski piedāvāju vismaz vienu 1999 01:32:09,425 --> 01:32:11,360 piemēru, kur tas ir noderīgi. 2000 01:32:11,360 --> 01:32:13,040 Mūžīgi ņaudēt, nedaudz kaitinoši. 2001 01:32:13,040 --> 01:32:16,070 Bet vai varat iedomāties bieži sastopamus gadījumus, kad jūs varētu 2002 01:32:16,070 --> 01:32:19,100 vēlēties rakstīt kodu vai izmantot programmu, kas darbojas mūžīgi? 2003 01:32:19,657 --> 01:32:21,740 AUDITORIJA: Mūzikas atskaņošana visas spēles laikā. 2004 01:32:21,740 --> 01:32:22,970 DEIVIDS DŽ. MEILANS: Jā, spēlē mūziku. 2005 01:32:22,970 --> 01:32:24,732 Tāpat kā Spotify atskaņošanas sarakstos, tikai atkārtošana atkal un 2006 01:32:24,732 --> 01:32:26,495 atkal būtu sava veida cikls. 2007 01:32:26,495 --> 01:32:28,310 AUDITORIJA: Sadursmju pārbaude. 2008 01:32:28,310 --> 01:32:30,429 DEIVIDS DŽ. MEILANS: Pārbauda sadursmes programmā Scratch, lai 2009 01:32:30,429 --> 01:32:32,548 redzētu, vai kaut kas neatlec no sienas vai cita spraita. 2010 01:32:33,590 --> 01:32:36,512 AUDITORIJA: Ak, tiek pārbaudīta ievade. 2011 01:32:36,512 --> 01:32:37,970 DEIVIDS DŽ. MEILANS: Pārbauda ievadi. 2012 01:32:37,970 --> 01:32:40,635 Jā, get_string būtībā vienkārši gaida, kad es ierakstīšu kādu ievadi, 2013 01:32:40,635 --> 01:32:43,300 līdz to izdarīšu. 2014 01:32:43,300 --> 01:32:44,470 AUDITORIJA: Pārbauda laiku. 2015 01:32:44,470 --> 01:32:46,165 DEIVIDS DŽ. MEILANS: Pārbauda laiku un faktiski uztur cilvēka laiku 2016 01:32:46,165 --> 01:32:47,860 kā sienas pulkstenis. 2017 01:32:47,860 --> 01:32:48,550 Aiz tevis? 2018 01:32:48,550 --> 01:32:49,420 Vai tas ir tas pats? 2019 01:32:49,420 --> 01:32:50,590 AUDITORIJA: Es gribēju teikt, ka pārbauda laiku. 2020 01:32:50,590 --> 01:32:52,173 DEIVIDS DŽ. MEILANS: Labi, pārbauda laiku. 2021 01:32:52,173 --> 01:32:52,900 Un vēl vienu? 2022 01:32:52,900 --> 01:32:53,995 Atklāj arī taustiņu nospiešanu. 2023 01:32:53,995 --> 01:32:56,088 Tāpat kā Scratch, tikai gaida, kad notiks kāds notikums, tāpat kā 2024 01:32:56,088 --> 01:32:58,182 tālrunī vai pārlūkprogrammā. 2025 01:32:58,182 --> 01:33:01,351 Tāpēc ir tik daudz piemēru, kur jūs varētu vēlēties kaut ko darīt 2026 01:33:01,351 --> 01:33:04,520 mūžīgi — tikai tāpēc, lai redzētu atbilstošo C būvniecības bloku. 2027 01:33:04,520 --> 01:33:08,151 Tas ir nedaudz dīvaini, bet tas, iespējams, ir kanoniskākais veids, 2028 01:33:08,151 --> 01:33:11,783 kā to izdarīt iekš C. 2029 01:33:08,290 --> 01:33:11,810 Ja vēlaties uz visiem laikiem drukāt meow — tas būtu nedaudz traki, 2030 01:33:11,810 --> 01:33:15,330 jo tas burtiski drukātu un uz visiem laikiem pārņemtu jūsu datora 2031 01:33:15,330 --> 01:33:18,850 drukāšanu, jūs to darītu šādi. 2032 01:33:19,490 --> 01:33:22,755 Nu, kamēr cikls iekavās sagaida Būla izteiksmi, un Būla izteiksme 2033 01:33:22,755 --> 01:33:26,020 atkal ir jā/nē, patiess/nepatiess jautājums. 2034 01:33:26,020 --> 01:33:29,215 Bet, ja vēlaties, lai atbilde uz šo jautājumu vienmēr būtu jā — vai 2035 01:33:29,215 --> 01:33:32,410 tiešām, vienmēr patiesa, izrādās C valodā un daudzās valodās 2036 01:33:32,410 --> 01:33:35,605 vienkārši sakiet patiess, jo patiesība — TRUE — nekad maģiski 2037 01:33:35,605 --> 01:33:38,800 nemainīsies uz nepatiesību. 2038 01:33:38,800 --> 01:33:41,570 Es domāju, tas ir tikai īpašs vārds programmēšanas valodā. 2039 01:33:41,570 --> 01:33:45,680 Tātad sakot while true tas tikai nozīmē, ka vienmēr rīkojieties šādi. 2040 01:33:45,680 --> 01:33:49,950 Vēl viena izplatīta paradigma, pirms patiesība un nepatiesība kļuva 2041 01:33:49,950 --> 01:33:54,220 ikdienišķa, būtu nepieciešams tā vietā darīt  — mainīt while 1. 2042 01:33:54,220 --> 01:33:56,995 Jūs varat redzēt tiešsaistes piemēros un tekstos un tamlīdzīgi, ka 2043 01:33:56,995 --> 01:33:59,770 while 1 patiesībā ir tas pats. 2044 01:33:59,770 --> 01:34:02,305 Jebkura vērtība, kas ir 0, datorā parasti tiek interpretēta kā 2045 01:34:02,305 --> 01:34:04,840 nepatiesa. 2046 01:34:04,840 --> 01:34:08,025 Jebkura vērtība, kas ir 1, vai jebkura cita vērtība, kas nav nulle, 2047 01:34:08,025 --> 01:34:11,210 parasti tiek interpretēta kā patiesa. 2048 01:34:11,210 --> 01:34:15,400 Un tāpēc arī tam būtu tāda pati ietekme, sakot while true vai while 1. 2049 01:34:15,400 --> 01:34:17,050 Vispārīgi runājot, lai gan patiesība mūsdienās, iespējams, ir nedaudz 2050 01:34:17,050 --> 01:34:18,700 skaidrāka. 2051 01:34:18,700 --> 01:34:20,650 Tagad mūžīga ņaudēšana nav laba lieta. 2052 01:34:20,650 --> 01:34:23,770 Bet pieņemsim, ka es to izdarīju ar nolūku vai nejauši. 2053 01:34:23,770 --> 01:34:24,950 Nu, pamēģināsim šo. 2054 01:34:24,950 --> 01:34:26,570 Šeit es iedziļināšos savā kodā. 2055 01:34:26,570 --> 01:34:29,375 Es atbrīvošos no for cikla un nomainīšu savu while ciklu uz, kā būtu, 2056 01:34:29,375 --> 01:34:32,180 true. 2057 01:34:32,180 --> 01:34:36,100 Un šajā gadījumā mēs to paturēsim — darīsim tā. 2058 01:34:36,100 --> 01:34:38,230 Make meow, Enter. 2059 01:34:38,230 --> 01:34:41,840 Un jūs redzēsit, iek izmantots nedeklarēts identifikators True.” 2060 01:34:41,840 --> 01:34:46,360 Tas faktiski norāda uz manis jau minēto, ka vecais veids bija 0 un 1. 2061 01:34:46,360 --> 01:34:48,220 Mūsdienās var teikt True vai False. 2062 01:34:48,220 --> 01:34:53,560 Bet True un False paši par sevi ir īpaši vārdi, kas jums jāiekļauj. 2063 01:34:53,560 --> 01:34:56,920 Un izrādās, ja vēlaties izmantot īpašas Būla vērtības, piemēram, šo, 2064 01:34:56,920 --> 01:35:00,280 ir vēl viens galvenā datne, ko mēs neesam redzējuši,kuru sauc 2065 01:35:00,280 --> 01:35:03,640 stdbool, kas būtībā izveido Trueu un False kā atslēgvārdus. 2066 01:35:03,640 --> 01:35:06,550 Alternatīvi, CS50 ietver to pašu datni. 2067 01:35:06,550 --> 01:35:08,980 Tāpēc CS50 biežāk to var redzēt šādi. 2068 01:35:08,980 --> 01:35:13,103 Tagad, ja es notīru savu termināļa logu un ievadu make meow, pēc tam 2069 01:35:13,103 --> 01:35:17,226 ./meow un nospiežu taustiņu Enter, diemžēl tas nav labākais, ko darīt 2070 01:35:17,226 --> 01:35:21,350 bezgalīgi, kad atrodaties mākonī, izmantojot pārlūkprogrammu. 2071 01:35:21,350 --> 01:35:24,970 Šī patiešām ir pārlūkprogramma, šeit tikai pilnekrāna režīmā. 2072 01:35:24,970 --> 01:35:29,462 Tas nozīmē, ka es internetā sūtu uz savu datoru miljoniem meows. 2073 01:35:29,462 --> 01:35:32,170 Tātad tas kaut kad notiks ar jums, iespējams, ne ar meow. 2074 01:35:32,170 --> 01:35:34,150 Bet jūs zaudēsit kontroli pār termināļa logu. 2075 01:35:34,420 --> 01:35:35,170 Tāpēc, ka jūs sapināties. 2076 01:35:35,170 --> 01:35:36,250 Un jums ir bezgalīgs cikls. 2077 01:35:36,250 --> 01:35:37,090 Jūs īsti to negribējāt. 2078 01:35:37,090 --> 01:35:37,690 Vai varbūt jūs to gribējāt. 2079 01:35:37,690 --> 01:35:39,232 Jums bija interese redzēt, kas notiks. 2080 01:35:39,232 --> 01:35:41,590 Ko jūs darāt? 2081 01:35:41,590 --> 01:35:43,930 Kad ņaudēšana beidzas? 2082 01:35:43,930 --> 01:35:45,910 Kādas iespējas mums šeit ir? 2083 01:35:45,910 --> 01:35:48,550 Control-C būs jūsu draugs. 2084 01:35:48,550 --> 01:35:51,070 Dažreiz jums bieži to nākas lietot mākoņa vidē. 2085 01:35:51,070 --> 01:35:55,540 Bet atcelšanas taustiņš Control-C pārtrauks programmu, kas darbojas. 2086 01:35:55,540 --> 01:35:59,050 Un es apsolu, ka gandrīz visi no jums kādā brīdī nejauši izveidos 2087 01:35:59,050 --> 01:36:02,560 bezgalīgu ciklu, ja jūsu aprēķins ir nedaudz neatbilstošs. 2088 01:36:02,560 --> 01:36:04,888 Ja rodas šaubas, noklikšķiniet termināļa logā un nospiediet 2089 01:36:04,888 --> 01:36:07,216 Control-C--  dažreiz vairākas reizes--  un tas patiešām atcels visu, 2090 01:36:07,216 --> 01:36:09,545 kas tur notiek. 2091 01:36:09,545 --> 01:36:11,170 Šajā gadījumā es to varētu būt iecerējis. 2092 01:36:11,170 --> 01:36:14,330 Bet dažreiz tas patiesībā nav paredzēts. 2093 01:36:14,330 --> 01:36:17,516 Labi, tātad mēs jau kādu laiku esam uzskatījuši par pašsaprotamu visu 2094 01:36:17,516 --> 01:36:20,703 šo grafisko lietotāja saskarni un, patiešām, komandas, kuras es 2095 01:36:20,703 --> 01:36:23,890 rakstu, un pogas, uz kurām es noklikšķinu. 2096 01:36:23,890 --> 01:36:26,470 Un ļaujiet man tikai sniegt jums labāku priekšstatu par to, ko mēs 2097 01:36:26,470 --> 01:36:29,050 visu laiku izmantojam zem pārsega, proti, operētājsistēmu ar 2098 01:36:29,050 --> 01:36:31,630 nosaukumu Linux. 2099 01:36:31,630 --> 01:36:33,980 Tāpēc es, protams, verbāli atsaucos uz Mac datoriem un personālajiem 2100 01:36:33,980 --> 01:36:36,330 datoriem, jo gandrīz visi no mums savā galddatorā vai klēpjdatorā 2101 01:36:36,330 --> 01:36:38,680 izmanto operētājsistēmu macOS vai Windows. 2102 01:36:38,680 --> 01:36:41,005 Taču ir daudz citu operētājsistēmu, un vienu no populārākajām sauc 2103 01:36:41,005 --> 01:36:43,330 Linux. 2104 01:36:43,330 --> 01:36:46,090 Un Linux mūsdienās ļoti bieži izmanto serveros — uzņēmumos, kas 2105 01:36:46,090 --> 01:36:48,850 mitina e-pastu, uzņēmumos, kas mitina vietnes vai lietotnes, plašākā 2106 01:36:48,850 --> 01:36:51,610 nozīmē. 2107 01:36:51,610 --> 01:36:54,280 Dažiem datorzinātniekiem vai datorzinātņu studentiem bieži patīk 2108 01:36:54,280 --> 01:36:56,950 lielīties, ka viņi izmanto Linux tikai tāpēc, ka tāds ir. 2109 01:36:56,950 --> 01:37:02,215 Bet patiesībā tā ir tikai alternatīva macOS vai Windows, kas 2110 01:37:02,215 --> 01:37:07,480 nodrošina gan GLS, ja vēlaties, gan arī komandrindas vidi. 2111 01:37:07,480 --> 01:37:10,015 Interesants fakts — operētājsistēmām Windows un macOS ir termināļa 2112 01:37:10,015 --> 01:37:12,550 logi vai tiem līdzvērtīgi elementi. 2113 01:37:12,550 --> 01:37:14,350 Un galu galā varat to izmantot savā Mac vai personālajā datorā, lai 2114 01:37:14,350 --> 01:37:16,150 atrisinātu kādu problēmu. 2115 01:37:16,150 --> 01:37:19,600 Taču Linux kopā ar citām operētājsistēmām patiešām ir pazīstama ar 2116 01:37:19,600 --> 01:37:23,050 savu komandrindas vidi, kuru es atkal nošķīru no GLS kā komandrindas 2117 01:37:23,050 --> 01:37:26,500 saskarni jeb KS. 2118 01:37:26,500 --> 01:37:29,450 Un tas patiesībā attiecas uz termināļa logu. 2119 01:37:29,450 --> 01:37:32,685 Tātad, ja es šeit atgriezīšos pie VS Code un, starpcitu, ļaujiet 2120 01:37:32,685 --> 01:37:35,920 manaizvērt cilni un pilnībā koncentrēties uz termināļa logu, šis 2121 01:37:35,920 --> 01:37:39,155 termināļa logs patiesībā ir tikai jūsu komandrindas saskarne ar jūsu 2122 01:37:39,155 --> 01:37:42,390 pašu serveri mākonī. 2123 01:37:42,390 --> 01:37:45,398 Industrijas noslēpums šeit ir tāds, ka jums katram būs savs 2124 01:37:45,398 --> 01:37:48,406 konteiners mākonī, kas ir kā jūsu dators, kas darbojas kaut kur 2125 01:37:48,406 --> 01:37:51,414 internetā ar jūsu lietotājvārdu un paroli, kuram jums ir piekļuve, un 2126 01:37:51,414 --> 01:37:54,422 savu cieto disku, ja vēlaties, jūsu mājas mapi, kurā ir visi jūsu 2127 01:37:54,422 --> 01:37:57,430 nodarbību faili. 2128 01:37:57,430 --> 01:37:59,410 Un tas ir pieejams tikai jums, ja vien neesat iespējojis tā 2129 01:37:59,410 --> 01:38:01,390 kopīgošanu tiešraidē. 2130 01:38:01,390 --> 01:38:03,895 Tātad, kad jūs šeit ierakstāt komandas, šķiet, ka jūs tās rakstāt, 2131 01:38:03,895 --> 01:38:06,400 protams, savā Mac vai personālajā datorā. 2132 01:38:06,400 --> 01:38:11,115 Bet tie faktiski tiek nosūtīti caur pārlūkprogrammu uz kādu serveri 2133 01:38:11,115 --> 01:38:15,830 mākonī, kurā jūs patiešām kontrolējat savu kontu. 2134 01:38:15,830 --> 01:38:19,390 Tātad izrādās, ka ir arī citas komandas, kuras ir vērts zināt. 2135 01:38:19,390 --> 01:38:21,292 Un mēs šodien jums parādīsim tikai dažas no tām. 2136 01:38:21,292 --> 01:38:24,710 Un tuvāko nedēļu laikā jums būs iespējas paspēlēties arī ar citām. 2137 01:38:24,710 --> 01:38:26,260 Bet šīs ir dažas no pamatiem. 2138 01:38:26,260 --> 01:38:28,720 Un tās visas ir neticami kodolīgi, jo, protams, attiecībā uz lietām, 2139 01:38:28,720 --> 01:38:31,180 ko rakstāt komandrindā, cilvēki parasti nav vēlējušies rakstīt garas 2140 01:38:31,180 --> 01:38:33,640 komandas. 2141 01:38:33,640 --> 01:38:35,890 Tātad daudzas no tām šeit ir saīsinājumi. 2142 01:38:35,890 --> 01:38:38,753 Tātad, iespējams, visizplatītākā, ar ko es sākšu vispirms, ir ls — 2143 01:38:38,753 --> 01:38:41,616 mazais burts l un mazais s, kas kodolīgi apzīmē terminu angļu valodā 2144 01:38:41,616 --> 01:38:44,480 list - saraksts. 2145 01:38:44,480 --> 01:38:47,387 Tātad, ja es tagad dodos uz savu termināļa logu, kur līdz šim esmu 2146 01:38:47,387 --> 01:38:50,295 ierakstījis tikai kodu, kas ir VS koda lieta, lai veiktu datņu 2147 01:38:50,295 --> 01:38:53,202 atvēršanu, un make, kas aktivizē mana koda kompilāciju. Kā būtu, ja 2148 01:38:53,202 --> 01:38:56,110 es tagad ierakstītu ls? 2149 01:38:56,110 --> 01:38:59,055 Šeit tiks uzskaitītas visas datnes manā pašreizējā mapē--, manā 2150 01:38:59,055 --> 01:39:02,000 cietajā diskā mākonī, ja vēlaties. 2151 01:39:02,000 --> 01:39:05,780 Tātad, ja es nospiedīšu Enter, jūs redzēsit veselu virkni rezultātu. 2152 01:39:05,780 --> 01:39:07,240 Tagad tiem ir arī krāsu kods. 2153 01:39:07,240 --> 01:39:09,910 Baltās šeit beidzas ar .c. 2154 01:39:09,910 --> 01:39:12,850 Tās ir pirmkoda datnes, kuras es šodien rakstīju nodarbības laikā — 2155 01:39:12,850 --> 01:39:15,790 agree.c, compare.c, hello.c un meow.c. 2156 01:39:15,790 --> 01:39:20,086 Un jūs, iespējams, nojaušat, ka tās zaļās, kuru beigās parasti ir 2157 01:39:20,086 --> 01:39:24,382 zvaigznīte, lai apzīmētu, ka tās ir īpašas, ko apzīmē? 2158 01:39:24,382 --> 01:39:25,340 Viena no četrāmm pārējām. 2159 01:39:26,315 --> 01:39:27,800 Auditorija: Mašīnas kods? 2160 01:39:27,800 --> 01:39:29,520 DEIVIDS J. Malans: Jā, mašīnas kods. 2161 01:39:29,520 --> 01:39:31,930 Tātad tās ir manas faktiskās programmas, kurām ir identisks 2162 01:39:31,930 --> 01:39:34,340 nosaukums, atskaitot paplašinājumu .c. 2163 01:39:34,340 --> 01:39:36,830 Un zvaigznīte nozīmē, ka tie ir izpildāmi. 2164 01:39:36,830 --> 01:39:39,582 Tas ir macOS vai Windows pasaulē, jūs veiktu dubultklikšķi. 2165 01:39:39,582 --> 01:39:43,491 Bet komandrindas vidē tas nozīmē, ka, lai palaistu kodu jūs ievadāt 2166 01:39:43,491 --> 01:39:47,400 ./ un tad nosaukumu bez zvaigznītes. 2167 01:39:47,400 --> 01:39:49,930 Tātad, ja es atveru savu datņu pārlūkprogrammu un es šeit nospiežu 2168 01:39:49,930 --> 01:39:52,460 Command-B savā datorā kā īsinājumtaustiņu, jūs redzēsit tieši to 2169 01:39:52,460 --> 01:39:54,990 pašu. 2170 01:39:54,990 --> 01:39:59,210 Tātad ls ir komandrindas saskarne datņu uzskaitīšanai jūsu kontā. 2171 01:39:59,210 --> 01:40:02,711 Bet šeit, tā kā es izmantoju VS Code vai jebkuru tamlīdzīgu 2172 01:40:02,711 --> 01:40:06,213 programmu, man ir arī grafiskā lietotāja saskarne. 2173 01:40:06,213 --> 01:40:07,880 Tātad tās ir tikai divas dažādas vietas, kur būt. 2174 01:40:07,880 --> 01:40:09,680 Varat izmantot visu, kas jums patīk. 2175 01:40:09,680 --> 01:40:12,200 Bet laika gaitā jūs, protams, pieradīsiet un kļūsiet prasmīgāki, 2176 01:40:12,200 --> 01:40:14,720 izmantojot tikai termināļa logu. 2177 01:40:14,720 --> 01:40:16,773 Nu, kas vēl ir šajā sarakstā? 2178 01:40:16,773 --> 01:40:20,051 Nu, pārtraukumā es redzēju, ka, piemēram, vismaz viens no jums bija 2179 01:40:20,051 --> 01:40:23,330 izveidojis datni ar nosaukumu hello, nevis hello.c. 2180 01:40:23,330 --> 01:40:25,280 Tātad jūs bijāt situācijā, kad to izdarījāt nejauši un nospiedāt 2181 01:40:25,280 --> 01:40:27,230 Enter. 2182 01:40:27,230 --> 01:40:30,420 Un tad jūs turpinājāt un ierakstījāt visu savu kodu šādi. 2183 01:40:30,420 --> 01:40:34,760 Un tad termināļa logā jūs mēģinājāt ievadīt make hello, Enter.. 2184 01:40:34,760 --> 01:40:38,960 Un tas tagad faktiski neko nedeva. 2185 01:40:38,960 --> 01:40:42,380 Es nevaru,es spiežu, es mēģinu izpildīt komandu. 2186 01:40:42,380 --> 01:40:44,690 Man tika liegta atļauja, tāpat kā vismaz vienam no jums. 2187 01:40:44,690 --> 01:40:45,433 Tātad, kāpēc tā? 2188 01:40:45,433 --> 01:40:46,850 Nu, veiksim tikai ātru pārbaudi. 2189 01:40:46,850 --> 01:40:50,015 Ja es izpildu ls, tagad es redzu hello, bet hello blakus nav 2190 01:40:50,015 --> 01:40:53,180 zvaigznītes, kas nozīmē, ka tas nav izpildāms. 2191 01:40:53,180 --> 01:40:53,930 Tas ir mans kods. 2192 01:40:54,470 --> 01:40:56,005 Nu, ievērojiet, ka manas cilnes augšdaļa apstiprina, ak, es salaidu 2193 01:40:56,005 --> 01:40:57,540 dēlī. 2194 01:40:57,540 --> 01:41:00,740 Es savu datni nenosaucu par hello.c, kam tā vienkārši ir jābūt. 2195 01:41:00,740 --> 01:41:01,920 Tad ko darīt? 2196 01:41:01,920 --> 01:41:03,865 Nu, jūs varētu ļoti nemākulīgi nokopēt šo, izveidot jaunu datni, 2197 01:41:03,865 --> 01:41:05,810 ielīmēt to. 2198 01:41:05,810 --> 01:41:06,770 Vai nē, nē, nē. 2199 01:41:06,770 --> 01:41:08,330 Mēs zinām, kā tagad šeit pārdēvēt lietas, jo tā ir viena no mūsu 2200 01:41:08,330 --> 01:41:09,890 iespējām. 2201 01:41:09,890 --> 01:41:11,100 Ļaujiet man to izdarīt. 2202 01:41:11,100 --> 01:41:14,350 Ļaujiet man ievadīt mv, kas apzīmē angļu vārdu move - pārvietot, 2203 01:41:14,350 --> 01:41:17,600 hello un tad hello.c un nospiest taustiņu Enter. 2204 01:41:17,600 --> 01:41:20,250 Jūs redzēsit, ka cilne tiks aizvērta, jo Hello vairs nepastāv. 2205 01:41:20,250 --> 01:41:25,130 Bet, ja es tagad ierakstīšu ls, jūs redzēsiet, ah, tur ir hello.c. 2206 01:41:25,130 --> 01:41:28,910 Un, ja es tagad atveru šo datni, tad tur ir viss mans kods. 2207 01:41:28,910 --> 01:41:33,130 Un tagad, ja es izpildu make hello make hello - tagad es saņemu 2208 01:41:33,130 --> 01:41:37,350 izpildāmu datni, kura ir atjaunota.. 2209 01:41:37,350 --> 01:41:40,185 Tātad mv, tā ir ne tikai komanda pārdēvēšanai, bet izrādās, galu galā 2210 01:41:40,185 --> 01:41:43,020 arī datņu pārvietošanai. 2211 01:41:43,020 --> 01:41:45,230 Varat arī izveidot direktorijas vai mapes. 2212 01:41:45,230 --> 01:41:48,327 Piemēram, ja es vēlreiz atveru VS Code un pieņemsim, ka virzu kursoru 2213 01:41:48,327 --> 01:41:51,425 šeit un noklikšķinu nevis uz plusa datnes ikonas, bet gan uz plusa 2214 01:41:51,425 --> 01:41:54,522 mapes, es varu izveidot mapi ar nosaukumu, piemēram, pset1 1. 2215 01:41:54,522 --> 01:41:57,620 problēmu kopai nodarbībā. 2216 01:41:57,620 --> 01:42:00,230 Tagad jūs redzēsit, ka tas ir tukšs, jo visas citas manas datnes 2217 01:42:00,230 --> 01:42:02,840 atrodas mana konta noklusējuma mapē. 2218 01:42:02,840 --> 01:42:05,460 Bet es varētu tur ieiet arī šādi. 2219 01:42:05,460 --> 01:42:08,116 Un es varētu noklikšķināt uz File, un tagad es varu izveidot jaunu 2220 01:42:08,116 --> 01:42:10,773 datni ar nosaukumu mario.c, kas, piemēram, ir viena no pirmajām 2221 01:42:10,773 --> 01:42:13,430 problēmām. 2222 01:42:13,430 --> 01:42:18,960 Bet tagad jūs pamanīsit, ka mario.c atrodas mapē pset1. 2223 01:42:18,960 --> 01:42:22,840 Tātad, ja es attālināšu un termināļa logā ierakstīšu ls, es nekur 2224 01:42:22,840 --> 01:42:26,720 neredzēšu mario.c. 2225 01:42:26,720 --> 01:42:28,688 Bet es redzu mapi pset1. 2226 01:42:28,688 --> 01:42:31,730 Un tā ir gaiši zilā krāsā, kam seko slīpsvītra, kas jums nav jāievada. 2227 01:42:31,730 --> 01:42:33,300 Tas tikai norāda, ka tā ir mape. 2228 01:42:33,300 --> 01:42:37,640 Tagad es vizuāli redzu augšējā kreisajā stūrī, ka pwet1 satur mario.c. 2229 01:42:37,640 --> 01:42:40,220 Bet, ja es mēģinu izpildīt, piemēram, make mario šeit, nevar atrast 2230 01:42:40,220 --> 01:42:42,800 datni mario. 2231 01:42:42,800 --> 01:42:44,510 Šķiet, ka tā vienkārši neeksistē. 2232 01:42:44,510 --> 01:42:46,650 Un tas ir tāpēc, ka atrodaties nepareizajā direktorijā. 2233 01:42:46,650 --> 01:42:49,105 Tātad komandrindas saskarnē tas nav tik vienkārši, kā vienkārši 2234 01:42:49,105 --> 01:42:51,560 noklikšķināt uz mapes, un re, tā tiek atvērta. 2235 01:42:51,560 --> 01:42:55,250 Jums ir jāmaina direktorija vai mape. 2236 01:42:55,250 --> 01:42:57,660 Un cd būs tā komanda. 2237 01:42:57,660 --> 01:43:00,865 Tātad, ja es vēlos faktiski mainīt uz šo direktoriju, es varu 2238 01:43:00,865 --> 01:43:04,070 izpildīt cd, atstarpe, pset1, Enter. 2239 01:43:04,070 --> 01:43:05,960 Un tagad jūs redzēsit manas tūlītējās izmaiņas. 2240 01:43:05,960 --> 01:43:07,580 Un šis ir tikai viens no izplatītākajiem vadlīniju punktiem, taču tas 2241 01:43:07,580 --> 01:43:09,200 nav vienīgais. 2242 01:43:09,200 --> 01:43:10,835 Tagad man joprojām ir dolāra zīme, kas norāda, kur es varu rakstīt 2243 01:43:10,835 --> 01:43:12,470 komandas. 2244 01:43:12,470 --> 01:43:16,520 Bet pirms tās es pastāvīgi redzu atgādinājumu, kurā mapē esmu. 2245 01:43:16,520 --> 01:43:19,640 Un mēs to ievadījām apzināti, kā to dara daudzi Linux lietotāji, lai 2246 01:43:19,640 --> 01:43:22,760 atgādinātu sev, kur viņi atrodas, jo atšķirībā no macOS vai Windows, 2247 01:43:22,760 --> 01:43:25,880 kur jums ir jauks, liels logs, kas norāda, kur jūs atrodaties, 2248 01:43:25,880 --> 01:43:29,000 komandrindā jums ir vajadzīgi tekstuāli atgādinājumi. 2249 01:43:29,000 --> 01:43:33,350 Bet tagad, ja es ierakstu ls un nospiežu Enter, kas man būtu jāredz? 2250 01:43:33,350 --> 01:43:36,170 Auditorija: Mario.c DEIVIDS J. Malans: Jā, mario.c. 2251 01:43:36,170 --> 01:43:38,760 Un tagad, ja es vēlos to atvērt — ja vēlos to faktiski kompilēt, es 2252 01:43:38,760 --> 01:43:41,350 varu palaist make mario šajā direktorijā, tiklīdz esmu ierakstījis 2253 01:43:41,350 --> 01:43:43,940 visu kodu. 2254 01:43:43,940 --> 01:43:46,230 Varat būt droši, ka problēmu kopās un laboratorijas darbos mēs 2255 01:43:46,230 --> 01:43:48,520 gandrīz vienmēr — protams, pirmajās mācību nedēļās — jums dosim tieši 2256 01:43:48,520 --> 01:43:50,810 tādas komandas, kuras jāievada. 2257 01:43:50,810 --> 01:43:52,955 Tā kā daudziem no jums tas ir jaunums, iespējams, jūs nejauši 2258 01:43:52,955 --> 01:43:55,100 ierakstīsit nepareizās komandas. 2259 01:43:55,100 --> 01:43:56,000 Nekas sevišķš. 2260 01:43:56,000 --> 01:43:57,425 Vienkārši atcerieties, ka jums ir dažādi veidi, kā atrisināt šīs 2261 01:43:57,425 --> 01:43:58,850 problēmas. 2262 01:43:58,850 --> 01:44:00,524 Jums ir grafiskā datņu pārlūkprogramma, kurai vajadzētu šķist nedaudz 2263 01:44:00,524 --> 01:44:02,198 pazīstamākai. 2264 01:44:02,198 --> 01:44:06,312 Bet ar laiku jūs sāksit zināt un, godīgi sakot, iespējams, dot 2265 01:44:06,312 --> 01:44:10,426 priekšroku šādām komandām — tātad cd direktorijas maiņai, cp datnes 2266 01:44:10,426 --> 01:44:14,541 kopēšanai, ls sarakstam, mkdir direktorijas izveidei — izveidojiet 2267 01:44:14,541 --> 01:44:18,655 jaunu mapi komandrindā, nevis ar pogu — mv pārvietošanai vai 2268 01:44:18,655 --> 01:44:22,770 pārdēvēšanai, rm — AUDITORIJA: Dzēšanai. 2269 01:44:22,770 --> 01:44:23,728 DEIVIDS J. Malans: Dzēst. 2270 01:44:23,728 --> 01:44:24,960 Tāpēc esiet uzmanīgi ar to. 2271 01:44:24,960 --> 01:44:26,520 Rmdir, dzēst direktoriju. 2272 01:44:26,520 --> 01:44:28,860 Un ir vēl desmitiem, simtiem citu komandu. 2273 01:44:28,860 --> 01:44:31,085 Daudzas no tām jums nebūs vajadzīgas, taču laika gaitā mēs sāksim 2274 01:44:31,085 --> 01:44:33,310 iedziļināties vairāk. 2275 01:44:33,310 --> 01:44:36,405 Bet galu galā šī komandrindas saskarne būs jaudīgāks mehānisms, 2276 01:44:36,405 --> 01:44:39,500 jaudīgāks mehānisms un galu galā efektīvāks mehānisms koda 2277 01:44:39,500 --> 01:44:42,595 rakstīšanai, komandu izpildei, problēmu risināšanai, datu 2278 01:44:42,595 --> 01:44:45,690 vispārīgākai analīzei, lai gan ņemiet vērā, ka būs īslaicīgas 2279 01:44:45,690 --> 01:44:48,785 grūtības tikai tāpēc, ka tas, iespējams, ir tik jauns daudziem no 2280 01:44:48,785 --> 01:44:51,880 jums. 2281 01:44:51,880 --> 01:44:54,177 Tā sakot, mums vēl ir jāatrisina dažas problēmas, taču mēs šodien 2282 01:44:54,177 --> 01:44:56,475 solījām cepumus. 2283 01:44:56,475 --> 01:44:58,350 Tāpēc iesim un paņemsim 10 minūšu pārtraukumu. 2284 01:44:58,350 --> 01:45:00,150 Cepumi tagad tiek pasniegti transeptā. 2285 01:45:00,150 --> 01:45:02,910 Un mēs atgriezīsimies šeit pēc 10. 2286 01:45:04,740 --> 01:45:07,740 Un līdz šim katrs no C koda piemēriem, ko esam veikuši, ir 2287 01:45:07,740 --> 01:45:10,740 izstrādāts, lai parādītu vienu konkrētu tēmu. 2288 01:45:10,740 --> 01:45:13,644 Bet mēs domājām, ka mēģināsim spert soli atpakaļ un atrisināt 2289 01:45:13,644 --> 01:45:16,548 vispārīgāku problēmu un sniegt jums priekšstatu par to, kad tiek 2290 01:45:16,548 --> 01:45:19,452 dota, piemēram, problēmu kopa vai tikai programmēšanas problēma 2291 01:45:19,452 --> 01:45:22,356 vispārīgāk, ar ko jūs vispār sākat un kā jūs to darāt, kā pieejat 2292 01:45:22,356 --> 01:45:25,260 tam, kad nav skaidrs, kāda ir vingrinājuma jēga. 2293 01:45:25,260 --> 01:45:27,340 Tātad, viena no manām iecienītākajām spēlēm no pagājušā gada ir šī 2294 01:45:27,340 --> 01:45:29,420 “Super Mario Brothers”, kas kopš tā laika ir izlaista tik daudzos 2295 01:45:29,420 --> 01:45:31,500 dažādos veidos. 2296 01:45:31,500 --> 01:45:34,475 Bet šajā oriģinālajā divdimensiju sānu ritināšanas spēlē bija daudz 2297 01:45:34,475 --> 01:45:37,450 tādu mākslas darbu kā šis. 2298 01:45:37,450 --> 01:45:40,260 Tā, piemēram, šeit augšā debesīs bija četras jautājuma zīmes. 2299 01:45:40,260 --> 01:45:44,152 Un mēs atklāsim, ka sākotnēji C un daudzās programmēšanas valodās ir 2300 01:45:44,152 --> 01:45:48,045 daudz vieglāk, daudz pieejamāk tekstuāli koncentrēties uz melnbaltām 2301 01:45:48,045 --> 01:45:51,937 interaktīvām programmām, nevis uz pilnvērtīgu grafiku un tamlīdzīgi, 2302 01:45:51,937 --> 01:45:55,830 bet vairāk par grafiskāka akustiskā tipa programmām drīzumā. 2303 01:45:55,830 --> 01:45:59,152 Bet pagaidām ļaujiet man pāriet un ierosināt, lai mēs mēģinātu 2304 01:45:59,152 --> 01:46:02,475 vienkārši ieviest ASCII art — atkal ASCII, kas ir kods, kas vismaz 2305 01:46:02,475 --> 01:46:05,797 angļu valodā apvieno ciparus ar burtiem šo četru jautājuma zīmju 2306 01:46:05,797 --> 01:46:09,120 debesīs teksta versijā.. 2307 01:46:09,120 --> 01:46:11,130 Tāpēc ļaujiet man pāriet uz VS Code. 2308 01:46:11,130 --> 01:46:14,026 Es izveidošu savu mario.c versiju, kas atšķirsies no 1. problēmu 2309 01:46:14,026 --> 01:46:16,923 kopas. 2310 01:46:16,923 --> 01:46:20,866 Patiešām, 1. problēmu kopā jums būs jāizveido kaut kas līdzīgs šim, 2311 01:46:20,866 --> 01:46:24,810 lai gan ar tēmturi ASCII art, nevis grafika. 2312 01:46:24,810 --> 01:46:28,120 Un mario.c es vispirms vēlos atrisināt šo vienkāršo problēmu. 2313 01:46:28,120 --> 01:46:29,710 Tātad tas viss ir saistīts ar izlaidi. 2314 01:46:29,710 --> 01:46:33,090 Tāpēc es iekļaušu stdio.h, lai varētu izmantot printf. 2315 01:46:33,090 --> 01:46:35,066 Es izpildīšu savu int main(void) — vairāk par to, kāpēc mēs 2316 01:46:35,066 --> 01:46:37,043 turpināsim to darīt arī turpmākajās nedēļās. 2317 01:46:37,043 --> 01:46:39,626 Un es tikai sākotnēji izdarīšu kaut ko vienkāršu, piemēram, 1, 2, 3, 2318 01:46:39,626 --> 01:46:42,210 4, reversā slīpsvītra n. 2319 01:46:42,210 --> 01:46:44,943 Šis ir aptuveni vienkāršākais veids, kā es varu ievietot četras 2320 01:46:44,943 --> 01:46:47,676 jautājuma zīmes debesīs, piemēram, šīs šeit, izmantojot šādu tīru 2321 01:46:47,676 --> 01:46:50,410 tekstu. 2322 01:46:50,410 --> 01:46:54,180 Tāpēc ļaujiet man izpildīt make mario, ./mario un lūk. 2323 01:46:54,180 --> 01:46:55,830 Mums ir šīs četras jautājuma zīmes. 2324 01:46:55,830 --> 01:46:58,830 Bet mēs, protams, esam redzējuši, ka ir labāki veidi, kā to izdarīt. 2325 01:46:58,830 --> 01:47:01,920 Un, ja vēlaties to vispārināt, lai tur būtu piecas jautājuma zīmes, 2326 01:47:01,920 --> 01:47:05,010 sešas, 60 dažādas jautājuma zīmes, cikls vienmēr ir bijis atbilde, 2327 01:47:05,010 --> 01:47:08,100 lai mēs neatkārtotos. 2328 01:47:08,100 --> 01:47:12,600 Tāpēc, iespējams, man vajadzētu to pārrakstīt nedaudz elastīgāk un 2329 01:47:12,600 --> 01:47:17,100 pateikt kaut ko līdzīgu šim, for in i get 0, i mazāks par 4, i++. 2330 01:47:17,100 --> 01:47:21,450 Un tad for cikla iekšpusē es varu izveidot tikai vienu jautājuma 2331 01:47:21,450 --> 01:47:25,800 zīmi, bet es nedomāju, ka tas, ko es tikko izdarīju, ir pareizi. 2332 01:47:25,800 --> 01:47:29,280 Vai kāds jau ir pamanījis estētisko kļūdu? 2333 01:47:29,280 --> 01:47:34,200 Jā, kāpēc tas ir nepareizi, ja es vēlos izdrukāt to pašu? 2334 01:47:34,710 --> 01:47:38,275 teica, lai to izmantotu [nav saklausāms]. 2335 01:47:39,150 --> 01:47:41,955 Tāpēc es nedomāju, ka pēc katras jautājuma zīmes es vēlos reverso 2336 01:47:41,955 --> 01:47:44,760 slīpsvītru n, jo mērķis atkal ir šī jautājuma zīmju rinda debesīs. 2337 01:47:44,760 --> 01:47:47,730 Tātad, ja es tagad to pārkompilēšu, make mario, ./mario, labi, tas ir 2338 01:47:47,730 --> 01:47:50,700 gandrīz gatavs. 2339 01:47:50,700 --> 01:47:52,760 Bet tagad man ir tāda regresija, kur dolāra zīme neatrodas uz savas 2340 01:47:52,760 --> 01:47:54,820 līnijas. 2341 01:47:54,820 --> 01:47:57,355 Tāpēc es domāju, ka man ir vajadzīga jauna rindiņa, bet es nedomāju, 2342 01:47:57,355 --> 01:47:59,890 ka es to vēlos šeit, jo tas nebeigsies labi. 2343 01:47:59,890 --> 01:48:01,015 Kurā vietā es to gribu? 2344 01:48:03,310 --> 01:48:03,960 Ir instinkts? 2345 01:48:05,610 --> 01:48:07,380 Jā, tātad ārpus for cikla. 2346 01:48:07,380 --> 01:48:09,510 Tik tiešām, es varu vienkārši doties zem 8. rindas un virs 9. rindas, 2347 01:48:09,510 --> 01:48:11,640 izveidojot jaunu. 2348 01:48:11,640 --> 01:48:15,273 Un tagad ir pilnīgi pieņemami vienkārši izdrukāt jaunu šādu rindiņu. 2349 01:48:15,273 --> 01:48:17,190 Ar to nekas cits nav jādrukā. 2350 01:48:17,190 --> 01:48:18,970 Tas patiešām ir simbols pats par sevi. 2351 01:48:18,970 --> 01:48:21,900 Tāpēc izpildīsim make mario pēdējo reizi, ./mario. 2352 01:48:21,900 --> 01:48:24,010 Labi, tagad mēs esam uz pareizajām sliedēm. 2353 01:48:24,010 --> 01:48:26,466 Ko darīt, ja mēs vēlētos izveidot kādu citu ainu no “Mario”, 2354 01:48:26,466 --> 01:48:28,923 piemēram, šo šeit, kur ir daudz vertikālu šķēršļu, piemēram, šie 2355 01:48:28,923 --> 01:48:31,380 ķieģeļi? 2356 01:48:31,380 --> 01:48:34,470 Ja es tagad vēlētos izdrukāt trīs ķieģeļu kolonnu — un es izmantošu 2357 01:48:34,470 --> 01:48:37,560 tām atsauces, nevis kaut ko grafisku, tad es domāju, ka tas ir 2358 01:48:37,560 --> 01:48:40,650 gandrīz gatavs, vai ne? 2359 01:48:40,650 --> 01:48:44,080 Es domāju, ka tagad varu — tas ir gandrīz varbūt nedaudz vieglāk. 2360 01:48:44,080 --> 01:48:46,565 Es varu atgriezties šeit, nomainīt jautājuma zīmi uz kaut ko tādu, 2361 01:48:46,565 --> 01:48:49,050 kas vairāk izskatās pēc ķieģeļa, piemēram, šo numura zīmi. 2362 01:48:49,050 --> 01:48:51,489 Un es domāju, ka tagad es vēlos jaunas rindiņas simbolu, jo, kad es 2363 01:48:51,489 --> 01:48:53,928 tagad izpildu make mario, ./mario, labi, tur ir mana četru zīmju 2364 01:48:53,928 --> 01:48:56,368 siena. 2365 01:48:56,368 --> 01:48:56,910 Ak, bet pagaidiet. 2366 01:48:56,910 --> 01:48:58,050 Es negribēju četras. 2367 01:48:58,050 --> 01:49:00,185 Es gribēju būt konsekvents tikai ar šo konkrēto ainu, tāpēc es gribu 2368 01:49:00,185 --> 01:49:02,320 tikai trīs. 2369 01:49:02,320 --> 01:49:04,780 Tāpēc es joprojām varu to mainīt vienā vietā. 2370 01:49:04,780 --> 01:49:06,330 Un šeit atkal ir šī paradigma. 2371 01:49:06,330 --> 01:49:09,510 Pat neatkarīgi no tā, vai izmantojat 4 vai 3, ja esat pieraduši 2372 01:49:09,510 --> 01:49:12,690 skaitīt no 0, jūs turpināsiet līdz vērtībai, līdz kurai vēlaties 2373 01:49:12,690 --> 01:49:15,870 skaitīt, bet ne tālāk. 2374 01:49:15,870 --> 01:49:20,055 Tāpēc es tur izmantoju mazāks nekā, nevis mazāks vai vienāds ar. 2375 01:49:20,055 --> 01:49:22,707 Tātad šī būtu parastā paradigma, lai gan jūs to varētu skaitīt tā, kā 2376 01:49:22,707 --> 01:49:25,360 mēs to redzējām iepriekš dažādos veidos. 2377 01:49:25,360 --> 01:49:27,965 Bet ko tad, ja lietas eskalējas vēl vienu līmeni tālāk? 2378 01:49:27,965 --> 01:49:31,682 Un, kad atrodaties “Super Mario Brothers” pazemes versijā,tur ir 2379 01:49:31,682 --> 01:49:35,400 daudz šo pazemes šķēršļu, tostarp tādi ķieģeļu režģi kā šis. 2380 01:49:35,400 --> 01:49:38,733 Un ļaujiet man pieņemt, ka, ja jūs to sagriežat, tas ir aptuveni 2381 01:49:38,733 --> 01:49:42,066 3 x 3 ķieģeļu režģis, kurā visi skaisti savienojas, lai iegūtu tikai 2382 01:49:42,066 --> 01:49:45,400 vienu lielu, lielu ķieģeli, piemēram, šo. 2383 01:49:45,400 --> 01:49:49,126 Tātad, ja es vēlos izdrukāt 3 x 3 režģi, tagad lietas kļūst nedaudz 2384 01:49:49,126 --> 01:49:52,853 interesantākas, jo līdz šim esmu drukājis vai nu vienu rindu 2385 01:49:52,853 --> 01:49:56,580 horizontāli vai vienu kolonnu vertikāli. 2386 01:49:56,580 --> 01:49:59,625 Bet mēs īsti neesam redzējuši nevienu kodu, kurā es drukāju vai 2387 01:49:59,625 --> 01:50:02,670 dzīvoju divās dažādās dimensijās, kā tas ir paredzēts spēlē. 2388 01:50:02,670 --> 01:50:05,560 Bet ļaujiet man ierosināt, ko mēs varētu darīt. 2389 01:50:05,560 --> 01:50:08,030 Ļaujiet man pateikt: labi, pieņemsim, ka es vēlos izdrukāt ķieģeļu 2390 01:50:08,030 --> 01:50:10,500 režģi 3 x 3. 2391 01:50:10,500 --> 01:50:16,590 Tas tiešām tā ir, ka es gribu izdrukāt, ko, trīs ķieģeļu rindas. 2392 01:50:16,590 --> 01:50:18,063 Režģis ir trīs rindas. 2393 01:50:18,063 --> 01:50:20,204 Tātad, ja es pieņemu augsta līmeņa ideju un reducēju to uz kaut ko 2394 01:50:20,204 --> 01:50:22,345 nedaudz vienkāršāku, kā to izdarīt? 2395 01:50:22,345 --> 01:50:24,720 Nu, ļaujiet man uz brīdi atbrīvoties no printf, kā es to darīju. 2396 01:50:24,720 --> 01:50:27,610 Un ļaujiet man tikai precizēt, ka šis for loop, lai gan tas vēl 2397 01:50:27,610 --> 01:50:30,500 nedara neko lietderīgu, kaut ko darīs noteiktas reizes saskaņā ar 2398 01:50:30,500 --> 01:50:33,390 dizainu? 2399 01:50:33,390 --> 01:50:34,530 Labi, trīs reizes. 2400 01:50:34,530 --> 01:50:35,850 Šis cikls ir gatavs. 2401 01:50:35,850 --> 01:50:37,620 Tas kaut ko darīs trīs reizes, vienkārši izmantojot i, lai veiktu 2402 01:50:37,620 --> 01:50:39,390 skaitīšanu. 2403 01:50:39,390 --> 01:50:43,290 Labi, ja es tagad gribu izdrukāt trīs ķieģeļu rindu vienā rindā, tas 2404 01:50:43,290 --> 01:50:47,190 ir diezgan līdzīgi tam, ko mēs darījām iepriekš, kad es tikai gribēju 2405 01:50:47,190 --> 01:50:51,090 izdrukāt četras jautājuma zīmes debesīs. 2406 01:50:51,090 --> 01:50:52,960 Tāpēc mēs tur esam redzējuši risinājumu. 2407 01:50:52,960 --> 01:50:55,450 Un es uzdrošinos teikt, ka mēs varam iekļaut vienu otrā. 2408 01:50:55,450 --> 01:51:00,866 Tātad, ja es vēlos izdrukāt ķieģeļu rindu, es varētu to izdarīt, 2409 01:51:00,866 --> 01:51:06,283 forin i get 0 i mazāks nekā 3 i++, un tad šī iekšējā cikla iekšpusē, 2410 01:51:06,283 --> 01:51:11,700 ja vēlaties, ļaujiet man izdrukāt vienu šādu ķieģeli. 2411 01:51:11,700 --> 01:51:14,760 Un tad man nepatīk, kur tas virzās, bet es domāju, ka esmu paņēmis 2412 01:51:14,760 --> 01:51:17,820 divas idejas un apvienojis tās. 2413 01:51:17,820 --> 01:51:23,080 Bet kas šobrīd varētu būt problemātisks 5. un 7. rindā? 2414 01:51:23,080 --> 01:51:24,700 Kas te varētu būt slikts? 2415 01:51:24,700 --> 01:51:25,345 Jā, aizmugurē? 2416 01:51:25,345 --> 01:51:27,665 Auditorija: Jūs izmantojāt to pašu veselo skaitli i. 2417 01:51:27,665 --> 01:51:29,872 DEIVIDS J. Malans: Jā, es izmantoju to pašu veselo skaitli i, kas, 2418 01:51:29,872 --> 01:51:32,080 manuprāt, varētu mani ievest nepatikšanās. 2419 01:51:32,080 --> 01:51:35,240 Ja es mēģinu šeit saskaitīt trīs lietas, bet pēc tam nolaupu šo 2420 01:51:35,240 --> 01:51:38,400 mainīgo un izmantoju to cikla iekšpusē, man šķiet, ka man vajadzētu 2421 01:51:38,400 --> 01:51:41,560 izvairīties no šīs nosaukumu sadursmes. 2422 01:51:41,560 --> 01:51:43,930 Un kāda ir laba i alternatīva? 2423 01:51:43,930 --> 01:51:45,955 Programmētājs, ja šādā veidā iekļauj ciklus, diezgan bieži izmantotu 2424 01:51:45,955 --> 01:51:47,980 j. 2425 01:51:47,980 --> 01:51:50,290 Jūs noteikti varētu to mainīt uz rindām un kolonnām, ja vēlaties 2426 01:51:50,290 --> 01:51:52,600 aprakstošākus mainīgos. 2427 01:51:52,600 --> 01:51:54,940 Bet i un j ir diezgan kanoniski. 2428 01:51:54,940 --> 01:51:59,020 Tāpēc es turpināšu un darīšu šādi, j++, nevis i++ visur. 2429 01:51:59,020 --> 01:52:00,280 Un ļaujiet man mēģināt to apkopot. 2430 01:52:00,280 --> 01:52:04,330 Tātad make mario, Enter, ./mario. 2431 01:52:04,330 --> 01:52:06,560 Labi, tātad šeit ir dažas lietas nepareizi. 2432 01:52:06,560 --> 01:52:08,480 Šis nav 3 x 3 režģis. 2433 01:52:08,480 --> 01:52:10,667 Bet, ja jūs saskaitāt šīs lietas, cik daudz es tiešām vismaz 2434 01:52:10,667 --> 01:52:12,855 izdrukāju? 2435 01:52:12,855 --> 01:52:14,485 Jūs droši vien varat tikai loģiski uzminēt. 2436 01:52:14,485 --> 01:52:15,110 Auditorija: deviņas. 2437 01:52:15,110 --> 01:52:17,110 DEIVIDS J. Malans: Jā, tur ir deviņas numura zīmes. 2438 01:52:17,110 --> 01:52:21,340 Diemžēl tie visi atrodas vienā līnijā, nevis trīs dažādās līnijās. 2439 01:52:21,340 --> 01:52:24,910 Tātad, kur es varu to loģiski labot? 2440 01:52:24,910 --> 01:52:26,535 Es noteikti izdrukāju visus ķieģeļus. 2441 01:52:26,535 --> 01:52:28,077 Tie vienkārši nav pareizajos līmeņos. 2442 01:52:28,646 --> 01:52:30,633 Auditorija: Ja pirmajā ciklā ievietosiet jaunu rindiņu, jūs iegūsit 2443 01:52:30,633 --> 01:52:32,620 trīs atsevišķas rindas. 2444 01:52:33,495 --> 01:52:35,747 Tāpēc ievietojiet jaunu rindiņu pēc pirmā cikla, šī iekšējā cikla, ja 2445 01:52:35,747 --> 01:52:38,000 vēlaties, iekļautā cikla, ja vēlaties. 2446 01:52:38,000 --> 01:52:41,030 Tāpēc ļaujiet man šeit izdrukāt tikai reverso slīpsvītru n. 2447 01:52:41,030 --> 01:52:42,073 Un ko šis dara? 2448 01:52:42,073 --> 01:52:44,671 Es domāju, ka tas to atrisinās, vienkārši pārvietojot kursoru uz 2449 01:52:44,671 --> 01:52:47,270 nākamo rindiņu pēc vienas rindas pabeigšanas. 2450 01:52:47,270 --> 01:52:49,670 Ļaujiet man izpildīt make mario, Enter, ./mario, un tagad mēs esam uz 2451 01:52:49,670 --> 01:52:52,070 pareizajām sliedēm. 2452 01:52:52,070 --> 01:52:54,496 Tātad šī ir ļoti vienkāršota šīs pašas grafikas versija, taču es 2453 01:52:54,496 --> 01:52:56,923 tagad izmantoju divas dažādas idejas — vai drīzāk to pašu ideju divas 2454 01:52:56,923 --> 01:52:59,350 reizes. 2455 01:52:59,350 --> 01:53:01,660 Es izmantoju vienu ciklu, lai kontrolētu kursora virzību rindu pa 2456 01:53:01,660 --> 01:53:03,970 rindai, pa rindai. 2457 01:53:03,970 --> 01:53:06,300 Bet tad šajā ciklā es eju no kreisās uz labo pusi, punkts, punkts, 2458 01:53:06,300 --> 01:53:08,630 punkts, punkts, punkts, izdrukājot katru no šiem individuālajiem 2459 01:53:08,630 --> 01:53:10,960 ķieģeļiem šādi. 2460 01:53:10,960 --> 01:53:13,600 Tagad šeit joprojām ir neliela nevīžība. 2461 01:53:13,600 --> 01:53:17,873 Ja es vēlos, lai tas vienmēr būtu kvadrāts tikai tāpēc, ka tas tā 2462 01:53:17,873 --> 01:53:22,146 izskatās spēlē, es varētu to mainīt uz kvadrātu 4 x 4, rīkojoties 2463 01:53:22,146 --> 01:53:26,420 šādi, vai 5 x 5 režģi, rīkojoties šādi. 2464 01:53:26,420 --> 01:53:29,875 Kāpēc šis, iespējams, nav labākais dizains, lai turpinātu mainīt 2465 01:53:29,875 --> 01:53:33,330 skaitļus, kad vēlos mainīt izmēru? 2466 01:53:33,330 --> 01:53:34,440 Kur tas varētu noiet greizi? 2467 01:53:35,010 --> 01:53:38,255 Auditorija: ja tas ir kvadrāts, [NESAKLAUSĀMS] 2468 01:53:39,130 --> 01:53:41,095 Ja tas vienmēr būs kvadrāts un augstums būs vienāds ar platumu, es 2469 01:53:41,095 --> 01:53:43,060 tikai radu šeit liekas problēmas, vai ne? 2470 01:53:43,060 --> 01:53:44,110 Beigās es salaidīšu visu dēlī. 2471 01:53:44,110 --> 01:53:45,680 Es mainīšu vienu, bet ne otru. 2472 01:53:45,680 --> 01:53:48,070 Tad tas būs taisnstūris, nevis kārtīgs kvadrāts. 2473 01:53:48,070 --> 01:53:50,410 Tāpēc man, iespējams, tas būtu jārisina nedaudz savādāk. 2474 01:53:50,410 --> 01:53:51,160 Tāpēc ļaujiet man izdarīt tā. 2475 01:53:51,160 --> 01:53:54,440 Manas main funkcijas augšdaļā ļaujiet man iet uz priekšu un dot sev 2476 01:53:54,440 --> 01:53:57,720 mainīgo, ko sauc par varbūt n, lai norādītu vajadzīgo ķieģeļu skaitu 2477 01:53:57,720 --> 01:54:01,000 horizontāli un vertikāli. 2478 01:54:01,000 --> 01:54:03,550 Un es tikai inicializēšu to uz 3 sākotnēji. 2479 01:54:03,550 --> 01:54:06,610 Un tā vietā, lai šeit liktu 3, es burtiski izmantošu n. 2480 01:54:06,610 --> 01:54:10,227 Bet es to darīšu abās vietās, lai tagad, ja es kādreiz vēlēšos to 2481 01:54:10,227 --> 01:54:13,845 mainīt un mainīt uz 4, 5 vai kaut ko citu, es esmu sagatavojies. 2482 01:54:13,845 --> 01:54:16,720 Tas ir labāk izstrādāts, jo ir mazāka kļūdu iespējamība. 2483 01:54:16,720 --> 01:54:19,840 Bet es tehniski tomēr varētu kaut kā visu salaist dēlī. 2484 01:54:19,840 --> 01:54:22,888 Es varētu tehniski nejauši uzrakstīt koda rindiņu, piemēram, n++, vai 2485 01:54:22,888 --> 01:54:25,936 vienkārši mainīt šī mainīgā vērtību, lai gan es nevēlos, lai tas 2486 01:54:25,936 --> 01:54:28,985 jebkad mainītos. 2487 01:54:28,985 --> 01:54:31,993 Un varbūt tas ir tāpēc, ka esmu slikts programmētājs, es 2488 01:54:31,993 --> 01:54:35,002 kopēju/ielīmēju nepareizi, es strādāju ar kādu, kurš nezina, ko 2489 01:54:35,002 --> 01:54:38,011 apzīmē n, es varu pasargāt sevi un savu kodu no tādām cilvēciskām 2490 01:54:38,011 --> 01:54:41,020 kļūdām, dodoties šeit uz rindu. 5. 2491 01:54:41,020 --> 01:54:44,260 Un tā vietā, lai deklarētu vienkāršu mainīgo, kā mēs to darījām 2492 01:54:44,260 --> 01:54:47,500 Scratch, es varu vēl vairāk nostiprināt savu kodu, tā sakot, 2493 01:54:47,500 --> 01:54:50,740 deklarējot to kā konstanti, izmantojot atslēgvārdu const. 2494 01:54:50,740 --> 01:54:54,600 Tātad šī ir tikai C un dažu citu valodu funkcija, kas aizsargā jūs no 2495 01:54:54,600 --> 01:54:58,460 sevis, proaktīvi sakot, ka n ir konstante, konkrēti skaitlis 5 vai 2496 01:54:58,460 --> 01:55:02,320 iepriekš skaitlis 3. 2497 01:55:02,320 --> 01:55:05,530 Jūs nevarat nejauši ierakstīt kodu citur, kas to mainītu. 2498 01:55:05,530 --> 01:55:08,420 Dators parādīs kļūdu un uztvers šo kļūdu. 2499 01:55:08,420 --> 01:55:12,160 Tātad tas ir tikai veids, kā programmēt nedaudz vairāk piesardzīgāk. 2500 01:55:12,160 --> 01:55:13,235 Dažās valodās tas ir pieejams. 2501 01:55:13,235 --> 01:55:14,110 Dažās valodās tā nav. 2502 01:55:14,110 --> 01:55:15,970 Bet kopumā tā ir laba prakse. 2503 01:55:15,970 --> 01:55:19,770 Tas padara jūsu kodu labāk izstrādātu, jo tas ir tikpat neaizsargāts 2504 01:55:19,770 --> 01:55:23,570 pret jūsu, kolēģu vai jebkura cita koda izmantotāja kļūdām. 2505 01:55:23,570 --> 01:55:24,995 Tāpēc ļaujiet man mainīt to atpakaļ uz 3, lai tā būtu mūsu 2506 01:55:24,995 --> 01:55:26,420 noklusējuma vērtība. 2507 01:55:26,420 --> 01:55:28,580 Bet tagad abās vietās lietoju n. 2508 01:55:28,580 --> 01:55:30,915 Un, ja es izpildu make mario, ./mario, mēs esam atpakaļ tur, kur 2509 01:55:30,915 --> 01:55:33,250 sākotnēji sākām. 2510 01:55:33,250 --> 01:55:35,560 Bet kods ir nedaudz labāk izstrādāts. 2511 01:55:35,560 --> 01:55:37,330 Un ļaujiet man arī to atzīmēt. 2512 01:55:37,330 --> 01:55:40,720 Visu šo laiku esmu minējis, ka pareizība ir svarīga. 2513 01:55:40,720 --> 01:55:41,740 Dizains ir svarīgs. 2514 01:55:41,740 --> 01:55:43,700 Ir arī šis stila jautājums. 2515 01:55:43,700 --> 01:55:46,320 Es ļoti apzināti rakstīju skaistu kodu, ne tikai sintakses izcelšana, 2516 01:55:46,320 --> 01:55:48,940 kas ir automātiska. 2517 01:55:48,940 --> 01:55:52,060 Bet ievērojiet, ka es turpinu visur skaisti ielikt atkāpi. 2518 01:55:52,060 --> 01:55:54,730 Ikreiz, kad man ir figūriekavas, piemēram, 4. un 14. rindā, atkāpe ir 2519 01:55:54,730 --> 01:55:57,400 vienā līmenī. 2520 01:55:57,400 --> 01:56:00,960 Kad man ir papildu figūriekavas 7. un 13. rindā, arī viss ir labi 2521 01:56:00,960 --> 01:56:04,520 izlīdzināts. 2522 01:56:04,520 --> 01:56:10,090 Tehniski runājot, datoram nerūp šāda veida atstarpes, ja tā var teikt. 2523 01:56:10,090 --> 01:56:13,585 Un jūs patiešām varētu radīt haosu ar šādām lietām, jo jums ir 2524 01:56:13,585 --> 01:56:17,080 dīvaina stila izjūta vai vienkārši esat nedaudz pavirši. 2525 01:56:17,080 --> 01:56:20,170 Bet patiesībā šis kods joprojām ir pareizs. 2526 01:56:20,170 --> 01:56:24,220 Ja es to pārkompilēju — ļaujiet man atvērt savu termināļa logu — make 2527 01:56:24,220 --> 01:56:28,270 mario, nav kļūdu, ./mario, tas darbojas lieliski. 2528 01:56:28,270 --> 01:56:31,133 Bet jūs varat iedomāties, cik kaitinoši to tagad ir lasīt pasniedzēja 2529 01:56:31,133 --> 01:56:33,996 asistetam, protams, bet noteikti jums nākamajā dienā, noteikti 2530 01:56:33,996 --> 01:56:36,860 kolēģim, kuram ir jālasa jūsu kods. 2531 01:56:36,860 --> 01:56:38,020 Tas ir vienkārši slikts stils. 2532 01:56:38,020 --> 01:56:41,125 Tas joprojām darbojas, un tas ir labi izstrādāts, jo jūs rakstāt kodu 2533 01:56:41,125 --> 01:56:44,230 aizsardzības nolūkā, jūs izmantojat konstanti. 2534 01:56:44,230 --> 01:56:46,420 Bet, mans dievs, stils ir šausmīgs. 2535 01:56:46,420 --> 01:56:50,065 Tagad jūs bieži ievērosit, ka ir pieejami rīki, kas var palīdzēt 2536 01:56:50,065 --> 01:56:53,710 formatēt kodu tā, lai tas atbilstu kursiem vai uzņēmuma stilam. 2537 01:56:53,710 --> 01:56:55,465 Bet šī ir muskuļu atmiņa, kuru arī jūs vēlēsieties attīstīt laika 2538 01:56:55,465 --> 01:56:57,220 gaitā. 2539 01:56:57,220 --> 01:57:00,392 Izmantojiet šos VS koda ieteikumus, jo tas jūsu vietā izvada koda 2540 01:57:00,392 --> 01:57:03,565 rindas, jo tas mēģina formatēt jūsu kodu lasāmā veidā. 2541 01:57:03,565 --> 01:57:06,940 Un, ak, mans dievs, ja un kad jūsu kodā ir kļūdas un lietām pat nav 2542 01:57:06,940 --> 01:57:10,315 vienāda lieluma atkāpe , jūs, cilvēks, nevarēsit apzināties, kas un 2543 01:57:10,315 --> 01:57:13,690 kur notiek. 2544 01:57:13,690 --> 01:57:16,060 Jūs tikai padarāt problēmu sev grūtāku. 2545 01:57:16,060 --> 01:57:21,190 Tāpēc arī izveidojiet šo ieradumu, izpaužot labu stilu. 2546 01:57:21,190 --> 01:57:24,880 Labi, ļaujiet man ierosināt, ka mēs nevēlamies tikai 3 x 3 režģi. 2547 01:57:24,880 --> 01:57:26,840 Mēs vēlamies, lai tas būtu nedaudz dinamiskāks. 2548 01:57:26,840 --> 01:57:29,430 Tātad, pieņemsim, ka mēs attālinājāmies no konstantes, lai izmantotu 2549 01:57:29,430 --> 01:57:32,020 tikai veselu skaitli, ko sauc par n. 2550 01:57:32,020 --> 01:57:35,170 Un jautāsim lietotājam šī režģa izmēru, uzvedinot ar get_int, kā mēs 2551 01:57:35,170 --> 01:57:38,320 to darījām iepriekš. 2552 01:57:38,320 --> 01:57:40,150 Un es to glabāšu šeit, n. 2553 01:57:40,150 --> 01:57:43,300 Un tad es varu turpināt un, dinamiskāk, palaist make mario, lai to 2554 01:57:43,300 --> 01:57:46,450 apkopotu — ups. 2555 01:57:46,450 --> 01:57:49,930 Ak, es nejauši salaidu visu dēlī. 2556 01:57:49,930 --> 01:57:53,785 Ko tas man liek darīt, kaut arī noslēpumaini? 2557 01:57:53,785 --> 01:57:56,660 Auditorija: jāiekļauj datne cs50.h. 2558 01:57:56,660 --> 01:57:58,295 DEIVIDS J. Malans: Jā, es aizmirsu iekļaut augšpusē CS50 galvenes 2559 01:57:58,295 --> 01:57:59,930 datni. 2560 01:57:59,930 --> 01:58:03,420 Un tāpēc tas nezina, ka get_int patiesībā ir derīgs. 2561 01:58:03,420 --> 01:58:04,880 Tātad tas ir vienkārši labojams. 2562 01:58:04,880 --> 01:58:07,730 Es tikai došos šeit un iekļaušu cs50.h. 2563 01:58:07,730 --> 01:58:10,790 Tagad es notīrīšu savu termināli un atkārtošu make mario. 2564 01:58:10,790 --> 01:58:12,800 Tagad viss ir labi... ./mario. 2565 01:58:12,800 --> 01:58:14,550 Un tagad ievērojiet, ka man tiek prasīts norādīt izmēru. 2566 01:58:14,550 --> 01:58:16,490 Tātad, ja es ierakstu 3, tas ir tāds pats kā iepriekš. 2567 01:58:16,490 --> 01:58:18,695 Ja es ierakstu 10, tas ir vēl lielāks, bet tagad tas viss notiek 2568 01:58:18,695 --> 01:58:20,900 automātiski. 2569 01:58:20,900 --> 01:58:23,360 Bet ir dažas lietas, kuras mēs nekonstatējam. 2570 01:58:23,360 --> 01:58:25,940 Piemēram, pieņemsim, ka es ierakstu kaķis. 2571 01:58:25,940 --> 01:58:28,770 Nu, to apstrādā funkcija get_int, kā es apgalvoju iepriekš. 2572 01:58:28,770 --> 01:58:30,687 Tā ir viena no bibliotēkas izmantošanas funkcijām. 2573 01:58:30,687 --> 01:58:32,570 Jums nav jāsaskaras ar kļūdainu ievadi. 2574 01:58:32,570 --> 01:58:36,200 Bet mēs izstrādājām tikai funkciju get_int, lai iegūtu veselu skaitli. 2575 01:58:36,200 --> 01:58:38,440 Mēs nezinām, vai vēlaties, lai tas būtu pozitīvs, negatīvs, nulle vai 2576 01:58:38,440 --> 01:58:40,680 kāda to kombinācija. 2577 01:58:40,680 --> 01:58:44,560 Un ir dīvaini ļaut lietotājam ievadīt negatīvu 1 režģa izmēram vai 2578 01:58:44,560 --> 01:58:48,440 negatīvu 3 režģa izmēram. 2579 01:58:48,440 --> 01:58:51,230 Un patiešām, jūsu kods neko nedara, tāpēc vismaz tas neavārē. 2580 01:58:51,230 --> 01:58:52,730 Bet tas ir stulbi, vai ne? 2581 01:58:52,730 --> 01:58:54,940 Būtu jauki piespiest lietotāju norādīt, ja viņš vēlas, lai režģis 2582 01:58:54,940 --> 01:58:57,150 mums sniegtu pozitīvu vērtību. 2583 01:58:57,150 --> 01:58:58,530 Tātad, kā mēs to varētu izdarīt? 2584 01:58:58,530 --> 01:59:03,360 Nu, es varētu uziet šeit un teikt, piemēram, ja n ir mazāks par 1 — 2585 01:59:03,360 --> 01:59:08,190 tātad, ja tas ir 0 vai negatīvs, ko es negribu, ko es varu darīt? 2586 01:59:08,190 --> 01:59:12,380 Nu, es varētu teikt, labi, vēlreiz dodiet lietotājam izmēra uzvedni . 2587 01:59:12,380 --> 01:59:15,455 Un tagad ievērojiet, es vairs nedeklarēju n, jo, tiklīdz tas pastāv, 2588 01:59:15,455 --> 01:59:18,530 jums nav vēlreiz jāpiemin datu tips. 2589 01:59:18,530 --> 01:59:19,790 Mēs to minējām iepriekš. 2590 01:59:19,790 --> 01:59:21,510 Bet tas ir kaut kā stulbi. 2591 01:59:22,010 --> 01:59:25,680 Jo tagad, kad esat devis lietotājam otru iespēju, labi, tagad es 2592 01:59:25,680 --> 01:59:29,350 varbūt darīšu tā — labi, ja šī n versija ir mazāka par 1, tad ejam un 2593 01:59:29,350 --> 01:59:33,020 uzvedināsim lietotāju trešo reizi. 2594 01:59:33,020 --> 01:59:35,240 Es domāju, jūs varat redzēt, kur tas muļķīgi virzās. 2595 01:59:35,240 --> 01:59:37,550 Tas nevar būt pareizais risinājums, lai atkal un atkal rekursīvi 2596 01:59:37,550 --> 01:59:39,860 rakstītu vienu un to pašu. 2597 01:59:39,860 --> 01:59:40,790 Kur tas apstātos? 2598 01:59:40,790 --> 01:59:42,800 Jums vajadzētu dot viņiem ierobežotu skaitu iespēju vai vienkārši 2599 01:59:42,800 --> 01:59:44,810 sajaukt savu kodu. 2600 01:59:44,810 --> 01:59:48,170 Tātad, kas šeit būtu intuitīvi labāks risinājums? 2601 01:59:48,170 --> 01:59:49,128 Aauditorija: while cikls. 2602 01:59:49,128 --> 01:59:50,920 DEIVIDS J. Malans: Jā, tātad kaut kāds cikls. 2603 01:59:50,920 --> 01:59:52,160 Mēs esam redzējuši while ciklu. 2604 01:59:52,160 --> 01:59:54,240 Mēs esam redzējuši for ciklu, tāpēc varbūt kāds no tiem. 2605 01:59:54,240 --> 01:59:55,290 Tāpēc ļaujiet man izmēģināt šo. 2606 01:59:55,290 --> 01:59:58,760 Ļaujiet man izdzēst šo nekārtību un atgriezties pie pirmā jautājuma. 2607 01:59:59,790 --> 02:00:04,675 Tātad, lai gan n ir mazāks par 1 — tātad, lai gan skaitlis nav tas, 2608 02:00:04,675 --> 02:00:09,560 ko mēs vēlamies, šoreiz liksim lietotājam vēlreiz norādīt izmēru. 2609 02:00:09,560 --> 02:00:12,515 Tagad arī šeit, tas ir labāk, jo tie ir tikai divi informācijas 2610 02:00:12,515 --> 02:00:15,470 pieprasījumi. 2611 02:00:15,470 --> 02:00:19,640 Taču skaidrs, ka 6. un 9. rinda ir gandrīz identiskas, izņemot int. 2612 02:00:19,640 --> 02:00:22,210 Un, ja es ieeju un mainu izmēru, ja es pievienoju šo, ja es mainu 2613 02:00:22,210 --> 02:00:24,780 formulējumu šeit, nomainu to uz citu valodu, man tas ir jāmaina divās 2614 02:00:24,780 --> 02:00:27,350 vietās. 2615 02:00:27,350 --> 02:00:27,850 Tas ir slikti. 2616 02:00:27,850 --> 02:00:29,330 Kopēt/ielīmēt, slikti. 2617 02:00:29,330 --> 02:00:31,040 Tātad, kas varētu būt labāks? 2618 02:00:31,040 --> 02:00:34,385 Izrādās, ka C ir cita paradigma, ko varat izmantot, lai apietu šo 2619 02:00:34,385 --> 02:00:37,730 problēmu, šo koda dublēšanos. 2620 02:00:37,730 --> 02:00:41,210 Būtu daudz patīkamāk, ja es tikai vienu reizi uzrakstītu kodu. 2621 02:00:41,210 --> 02:00:43,360 Un es to varu izdarīt, izmantojot trešā veida ciklu, ko sauc par do 2622 02:00:43,360 --> 02:00:45,510 while ciklu. 2623 02:00:45,510 --> 02:00:48,000 Tātad izrādās, ka C valodā varat to izdarīt. 2624 02:00:48,000 --> 02:00:50,685 Ja vēlaties iegūt tāda mainīgā kā n vērtību, vispirms vienkārši 2625 02:00:50,685 --> 02:00:53,370 izveidojiet mainīgo bez sākotnējās vērtības. 2626 02:00:53,370 --> 02:00:56,870 Tātad int n semikols nozīmē, ka mēs nezinām, kāda tā vērtība ir, jā. 2627 02:00:56,870 --> 02:00:57,590 Bet viss kārtībā.. 2628 02:00:57,590 --> 02:00:59,840 Galu galā mēs tam pievienosim vērtību. 2629 02:00:59,840 --> 02:01:02,870 Tad es teikšu šo, do, burtiski. 2630 02:01:02,870 --> 02:01:04,460 Es atvēršu savas figūriekavas. 2631 02:01:04,460 --> 02:01:05,930 Un ko es gribu izdarīt? 2632 02:01:05,930 --> 02:01:08,840 Es vēlos n piešķirt get_int atgriezto vērtību, liekot lietotājam 2633 02:01:08,840 --> 02:01:11,750 norādīt izmēru. 2634 02:01:11,750 --> 02:01:14,040 Nu, kad jūs vēlaties to darīt? 2635 02:01:14,040 --> 02:01:17,900 Es vēlos to darīt, kamēr n ir mazāks par 1. 2636 02:01:17,900 --> 02:01:20,735 Un šis kods tagad sasniedz tieši to pašu mērķi, bet nekad man 2637 02:01:20,735 --> 02:01:23,570 neatkārtojoties. 2638 02:01:24,230 --> 02:01:27,702 Nu, ievērojiet šajās koda rindās tagad, es burtiski saku 6. rindā, 2639 02:01:27,702 --> 02:01:31,175 dodiet man mainīgo, ko sauc par n tipa veselu skaitli. 2640 02:01:31,175 --> 02:01:33,300 Sākotnēji tam nav vērtības, bet tas ir labi. 2641 02:01:33,300 --> 02:01:34,640 Jūs to varat izdarīt. 2642 02:01:34,640 --> 02:01:36,380 7. rindā ir teikts, rīkojieties šādi. 2643 02:01:36,380 --> 02:01:39,890 Ko jūs gribat darīt? 2644 02:01:36,380 --> 02:01:39,020 get_int, liekot lietotājam ievadīt vārda lielumu, un vienkārši glabāt 2645 02:01:39,020 --> 02:01:41,660 šo vērtību n. 2646 02:01:41,660 --> 02:01:44,662 Bet, tā kā C kods darbojas no augšas uz leju, no kreisās uz labo 2647 02:01:44,662 --> 02:01:47,665 pusi, tagad ir saprātīgi 11. rindā uzdot šo jautājumu. Labi, vai 2648 02:01:47,665 --> 02:01:50,667 pašreizējā n vērtība, kas noteikti tika iegūta 8. rindā, ir mazāka 2649 02:01:50,667 --> 02:01:53,670 par 1? 2650 02:01:53,670 --> 02:01:56,035 Un, ja lietotājs nesadarbojās — viņš ierakstīja 0 vai negatīvu 1 vai 2651 02:01:56,035 --> 02:01:58,400 negatīvu 3 — kas notiks? 2652 02:01:58,400 --> 02:02:01,465 Tas atgriezīsies šeit un atkārtos, atkārtos, atkārtos visu do while 2653 02:02:01,465 --> 02:02:04,530 cikla ietvaros. 2654 02:02:04,530 --> 02:02:06,505 Tātad do while cikls C valodā… kas nav kaut kas tāds, kas ir citās 2655 02:02:06,505 --> 02:02:08,480 valodās. 2656 02:02:08,480 --> 02:02:10,730 Python, ja jūs to zināt, nav do while cikla. 2657 02:02:10,730 --> 02:02:14,010 Tas, iespējams, ir tīrākais veids, kā to panākt, lai gan ir nedaudz 2658 02:02:14,010 --> 02:02:17,290 dīvaini, ka jums ir jādeklarē savs mainīgais, jāizveido mainīgais 2659 02:02:17,290 --> 02:02:20,570 augšpusē un pēc tam tas jāpārbauda zemāk. 2660 02:02:20,570 --> 02:02:22,980 Bet citādi tas ir līdzīgs while ciklam. 2661 02:02:22,980 --> 02:02:26,150 Tas tikai maina secību, kādā jūs uzdodat jautājumu. 2662 02:02:26,150 --> 02:02:28,820 Vai ir kādi jautājumi par šo konstrukciju? 2663 02:02:28,820 --> 02:02:32,230 Un do while, kopumā ir ļoti noderīgs, ja vēlaties saņemt informāciju 2664 02:02:32,230 --> 02:02:35,640 no lietotāja un pārliecināties, ka tā atbilst noteiktām prasībām. 2665 02:02:35,640 --> 02:02:39,530 Nu labi, tagad mums ir šis pamatelementspēc šī starplaika. 2666 02:02:39,530 --> 02:02:41,750 Kā es varu tīrīt šo kodu? 2667 02:02:41,750 --> 02:02:44,735 Un tad nobeigumā apskatīsim lietas, kuras mūsu kods nevar izdarīt vai 2668 02:02:44,735 --> 02:02:47,720 nevar darīt ļoti labi vai pareizi. 2669 02:02:47,720 --> 02:02:50,620 Ļaujiet man ierosināt, ka Mario galīgajā versijā ļaujiet man 2670 02:02:50,620 --> 02:02:53,520 vienkārši pievienot dažus komentārus. 2671 02:02:53,520 --> 02:02:56,346 Izrādās, ka kodā C var definēt to, ko sauc par komentāriem, kas ir 2672 02:02:56,346 --> 02:02:59,173 tikai piezīmes sev. 2673 02:02:59,173 --> 02:03:00,840 Daži no jums tos atklāja programmā Scratch. 2674 02:03:00,840 --> 02:03:02,760 Te ir mazas dzeltenas līmlapiņas, kuras varat izmantot, lai 2675 02:03:02,760 --> 02:03:04,680 pievienotu citātus vai paskaidrojumus. 2676 02:03:04,680 --> 02:03:07,020 C valodā ir daži veidi, kā rakstīt komentārus. 2677 02:03:07,020 --> 02:03:10,440 Un vispār komentāri ir piezīmes jums pašiem, jūsu pasniedzēja 2678 02:03:10,440 --> 02:03:13,860 asistentam, jūsu kolēģim par to, ko jūsu kods dara un kāpēc vai kā. 2679 02:03:13,860 --> 02:03:15,860 Tā ir neliela paskaidrojoša piezīme angļu valodā vai jebkurā citā 2680 02:03:15,860 --> 02:03:17,860 valodā, kas varētu būt jūsu cilvēku valoda. 2681 02:03:17,860 --> 02:03:21,982 Piemēram, ko es varētu darīt, ieviešot šo mario versiju, es vispirms 2682 02:03:21,982 --> 02:03:26,105 varētu sev uzdot šādu jautājumu - es varētu vispirms veikt sev 2683 02:03:26,105 --> 02:03:30,227 līdzīgu piezīmi jaunā rindā virs šī pirmā koda bloka, Iegūst režģa 2684 02:03:30,227 --> 02:03:34,350 izmēru. 2685 02:03:34,350 --> 02:03:37,420 Tā ir tikai paskaidrojoša piezīme īsā angļu valodā, kas parasti 2686 02:03:37,420 --> 02:03:40,490 izskaidro nākamās sešas rindas, nākamo koda daļu vai bloku, ja 2687 02:03:40,490 --> 02:03:43,560 vēlaties. 2688 02:03:43,560 --> 02:03:46,500 Būtu nedaudz pārmērīgi komentēt katru rindiņu. 2689 02:03:46,500 --> 02:03:48,090 Kādā brīdī programmētājam vajadzētu zināt, ko dara atsevišķas koda 2690 02:03:48,090 --> 02:03:49,680 rindas. 2691 02:03:49,680 --> 02:03:53,895 Taču ir patīkami apskatīt šo komentāru 6. rindiņā, kas sākas ar divām 2692 02:03:53,895 --> 02:03:58,110 slīpsvītrām, un sintakses izcelšanas fukcija to iekrāso pelēku.. 2693 02:03:58,110 --> 02:03:59,070 Tā nav loģika. 2694 02:03:59,070 --> 02:04:00,440 Tā ir tikai piezīme sev. 2695 02:04:00,440 --> 02:04:02,800 Tas parasti sniedz man nelielu špikeri par to, kas būtu jādara šādām 2696 02:04:02,800 --> 02:04:05,160 koda rindām un/vai kāpēc. 2697 02:04:05,160 --> 02:04:08,910 Un tad šeit lejā ir otrs koda bloks, kas ir virkne līniju. 2698 02:04:08,910 --> 02:04:14,130 Bet kopā šis tikai, ko, izdrukā ķieģeļu režģi. 2699 02:04:14,130 --> 02:04:17,340 Un tāpēc tas ir vēl viens mans komentārs, kas tikai padara to nedaudz 2700 02:04:17,340 --> 02:04:20,550 saprotamāku, ko dara šīs aptuveni 20  koda rindiņas, pievienojot tam 2701 02:04:20,550 --> 02:04:23,760 dažus paskaidrojumus angļu valodā. 2702 02:04:23,760 --> 02:04:28,680 Bet tagad, kad man tie ir, vai nebūtu jauki, ja es varētu abstrahēt 2703 02:04:28,680 --> 02:04:33,600 šīs funkcionalitātes daļas, šo izmēru noteikšanu un režģa drukāšanu? 2704 02:04:33,600 --> 02:04:37,590 Citiem vārdiem sakot, pieņemsim, ka nezināt, ar ko sākt šajā problēmā. 2705 02:04:37,590 --> 02:04:40,540 Un aktuālā problēma bija burtiski ieviest programmu, kas izdrukā 2706 02:04:40,540 --> 02:04:43,490 dažāda izmēra ķieģeļu režģi — 3, 4, 5 vai vienalga, ko cilvēks 2707 02:04:43,490 --> 02:04:46,440 ievada. 2708 02:04:46,440 --> 02:04:49,730 Ja jums patiešām nav ne jausmas, ar ko sākt, komentāri patiesībā ir 2709 02:04:49,730 --> 02:04:53,020 labs veids, kā sākt, jo komentāri var būt kaut kas aptuvens tam, ko 2710 02:04:53,020 --> 02:04:56,310 mēs saucam par pagājušās nedēļas pseidokodu. 2711 02:04:56,310 --> 02:04:58,233 Pseidokods ir īss formulējums angļu valodā, kas ļauj saprast jūsu 2712 02:04:58,233 --> 02:05:00,156 domu, piemēram, meklējot kaut ko tālruņu katalogā, tāpat kā 2713 02:05:00,156 --> 02:05:02,080 iepriekšējā reizē. 2714 02:05:02,080 --> 02:05:04,495 Tātad, ja jūs īsti nezināt, ar ko sākt, jūs varētu darīt kaut ko 2715 02:05:04,495 --> 02:05:06,910 līdzīgu šim. 2716 02:05:06,910 --> 02:05:10,760 Piemēram, es varētu vienkārši pateikt: Iegūt režģa izmēru kā pirmo 2717 02:05:10,760 --> 02:05:14,610 soli un pēc tam kā otro soli Drukāt ķieģeļu režģi. 2718 02:05:14,610 --> 02:05:16,410 Un tas ir viss manai programmai tiktāl. 2719 02:05:16,410 --> 02:05:18,690 Tagad tas ir izteikts pseidokodā. 2720 02:05:18,690 --> 02:05:20,910 Man tur ir daži lieli vietturi. 2721 02:05:20,910 --> 02:05:22,380 Man vēl ir darbs darāms. 2722 02:05:22,380 --> 02:05:26,050 Bet vismaz man komentāros ir augsta līmeņa problēmas risinājums. 2723 02:05:26,050 --> 02:05:28,230 Un tagad es pat varu iet tik tālu. 2724 02:05:28,230 --> 02:05:31,440 Es varētu teikt, labi, pieņemsim, ka jau pastāv funkcija, ko sauc par 2725 02:05:31,440 --> 02:05:34,650 lieluma iegūšanas funkciju. 2726 02:05:34,650 --> 02:05:36,220 Es varētu darīt kaut ko līdzīgu šim. 2727 02:05:36,220 --> 02:05:38,790 Es varētu ievadīt int n vienāds ar get_size. 2728 02:05:38,790 --> 02:05:40,895 Un tagad man tikai šobrīd ir jāpieņem, ka pastāv kāda abstrakcija ar 2729 02:05:40,895 --> 02:05:43,000 nosaukumu get_size. 2730 02:05:43,000 --> 02:05:43,500 Tādas nav. 2731 02:05:43,500 --> 02:05:45,420 Tāda nav iekļauta CS50 bibliotēkā. 2732 02:05:45,420 --> 02:05:47,520 Bet es to varētu izdomāt, varu derēt. 2733 02:05:47,520 --> 02:05:49,110 Kā citādi es varētu rīkoties? 2734 02:05:49,110 --> 02:05:53,085 Pagaidām pieņemsim, ka ir arī funkcija print_grid, kas vienkārši 2735 02:05:53,085 --> 02:05:57,060 izdrukā n izmēra režģi. 2736 02:05:57,060 --> 02:05:58,950 Tātad arī šeit ir abstrakcija. 2737 02:05:58,950 --> 02:06:00,330 Šīs puzles detaļas neeksistē. 2738 02:06:00,330 --> 02:06:01,800 Šīs funkcijas vēl nepastāv. 2739 02:06:01,800 --> 02:06:06,240 Bet C, tāpat kā Scratch, es varu izveidot savas funkcijas. 2740 02:06:06,240 --> 02:06:07,600 Kā es to daru? 2741 02:06:07,600 --> 02:06:09,630 Ļaujiet man iet uz leju tālāk datnē. 2742 02:06:09,630 --> 02:06:11,220 Un saskaņā ar vispārpieņemto, jūs parasti vēlaties atstāt galveno 2743 02:06:11,220 --> 02:06:12,810 datnes augšdaļā. 2744 02:06:13,110 --> 02:06:15,600 Jo tā ir galvenā funkcija, un tieši tā ir vieta, kur cilvēka acs 2745 02:06:15,600 --> 02:06:18,090 skatīsies, lai redzētu, ko dara kāda koda datne. 2746 02:06:19,360 --> 02:06:22,685 Es vēlos izveidot savu funkciju ar nosaukumu get_size, kuras mērķis 2747 02:06:22,685 --> 02:06:26,010 dzīvē ir iegūt lietotāja vēlamo izmēru. 2748 02:06:26,010 --> 02:06:28,380 Es vēlos, lai šī funkcija atgrieztu veselu skaitli. 2749 02:06:28,380 --> 02:06:31,650 Un sintakse, lai to izdarītu, ir šī, pareizi, līdzīgi mainīgajam, 2750 02:06:31,650 --> 02:06:34,920 datu tips, ko šī funkcija atgriež. 2751 02:06:34,920 --> 02:06:37,450 Man nav vajadzīga šī funkcija, lai saņemtu ievades datus. 2752 02:06:37,450 --> 02:06:39,540 Un tāpēc es izmantošu jaunu atslēgvārdu, ko mēs faktiski izmantojām 2753 02:06:39,540 --> 02:06:41,630 līdz šim — vairāk par to citreiz — vienkārši saukts par void - 2754 02:06:41,630 --> 02:06:43,720 tukšums, kas tikai nozīmē, ka šī funkcija get_size neprasa nekādus 2755 02:06:43,720 --> 02:06:45,810 ievades datus. 2756 02:06:45,810 --> 02:06:46,950 Tam ir izvade. 2757 02:06:46,950 --> 02:06:48,138 Tas izvada int. 2758 02:06:48,138 --> 02:06:50,430 Un šī ir tikai dīvainā secība, kādā jūs to rakstāt. 2759 02:06:50,430 --> 02:06:53,175 Iekavās ierakstiet izvades formātu, funkcijas nosaukumu un pēc tam 2760 02:06:53,175 --> 02:06:55,920 ievades datus, ja tādi ir. 2761 02:06:55,920 --> 02:06:57,727 Un tagad es varu ieviest get_size. 2762 02:06:57,727 --> 02:06:59,310 Bet es jau esmu ieviesis get_size. 2763 02:06:59,310 --> 02:07:03,180 Vai vismaz tagad šajā stāsta punktā es vismaz konkrēti zinu, ko darīt. 2764 02:07:03,180 --> 02:07:07,110 Un es varētu izdomāt, iespējams, ar dažiem izmēģinājumiem un kļūdām, 2765 02:07:07,110 --> 02:07:11,040 labi, ja es deklarēju mainīgo un izpildu sekojošo n ir vienāds ar 2766 02:07:11,040 --> 02:07:14,970 get_int, liekot lietotājam norādīt izmēru, un es turpinu to darīt, 2767 02:07:14,970 --> 02:07:18,900 kamēr n ir mazāks par 1, kad koda bloks ir pabeigts, šeit ir jauns C 2768 02:07:18,900 --> 02:07:22,830 atslēgvārds, ar kuru varat atgriezt šo vērtību n. 2769 02:07:22,830 --> 02:07:25,080 Tāpēc es turpinu atsaukties uz šīm vērtībām, kuras dažas funkcijas 2770 02:07:25,080 --> 02:07:27,330 atgriež kā atgriešanas vērtības. 2771 02:07:27,330 --> 02:07:32,150 C valodā burtiski ir atslēgvārds, ko sauc par return - atgriezt, kas 2772 02:07:32,150 --> 02:07:36,970 atgriezīs jebkuru funkciju, kas izmanto attiecīgo funkciju. 2773 02:07:36,970 --> 02:07:42,125 Īsumā, starp 15. un 21. rindiņu tagad ir kods, kas ir identisks mūsu 2774 02:07:42,125 --> 02:07:47,280 iepriekšējam risinājumam, kas no lietotāja iegūst pozitīvu vērtību n. 2775 02:07:47,280 --> 02:07:48,720 Tā ir 1, 2 vai lielāka. 2776 02:07:48,720 --> 02:07:51,180 Tā nav 0 vai tā nav mazāka par 1. 2777 02:07:51,180 --> 02:07:53,770 Un, tiklīdz mēs iegūstam šo vērtību, mēs to atdodam kā atgriešanās 2778 02:07:53,770 --> 02:07:56,360 vērtību. 2779 02:07:56,360 --> 02:07:58,990 Ievērojiet, kā es izmantoju šo funkciju 7. rindā. 2780 02:07:58,990 --> 02:08:01,820 Tāpat kā ar get_int, tāpat kā ar get_string, es izsaucu funkciju — 2781 02:08:01,820 --> 02:08:04,650 šajā gadījumā nekā nav iekavās. 2782 02:08:04,650 --> 02:08:07,310 Bet tad es izmantoju piešķiršanas operatoru, lai iekopētu tā 2783 02:08:07,310 --> 02:08:09,970 atgriešanās vērtību savā mainīgajā n. 2784 02:08:09,970 --> 02:08:14,530 Un tāpēc tagad man ir funkcija, kas agrāk nepastāvēja, ko sauca 2785 02:08:14,530 --> 02:08:19,090 get_size, kas iegūst pozitīvu veselu skaitli neatkarīgi ne no kā. 2786 02:08:19,090 --> 02:08:21,710 Un tagad režģim, kā to izdarīt? 2787 02:08:21,710 --> 02:08:24,435 Kā izgudrot funkciju ar nosaukumu print_grid, kas izmanto vienu 2788 02:08:24,435 --> 02:08:27,160 argumentu, skaitli un izdrukā šāda izmēra režģi? 2789 02:08:27,160 --> 02:08:29,180 Nu, iesim šeit lejā. 2790 02:08:29,180 --> 02:08:32,050 Es uzrakstīšu šīs funkcijas nosaukumu print_grid. 2791 02:08:32,050 --> 02:08:33,590 Šai funkcijai ir tikai jādrukā. 2792 02:08:33,590 --> 02:08:35,440 Tam ir blakusefekts, kā mēs turpinām teikt. 2793 02:08:35,440 --> 02:08:38,230 Tāpēc es tikai teikšu, ka tam nav atgrieztās vērtības. 2794 02:08:38,230 --> 02:08:39,040 Tas vienkārši ir tukšs. 2795 02:08:39,040 --> 02:08:40,820 Tam pašam nav izvades, kā tādas. 2796 02:08:40,820 --> 02:08:42,670 Tā ir tikai estētiska blakusparādība. 2797 02:08:42,670 --> 02:08:44,660 Bet tas prasa argumentu. 2798 02:08:44,660 --> 02:08:48,498 Arguments ir ievade, un tā sintakse valodā C ir izmantotās ievades 2799 02:08:48,498 --> 02:08:52,337 veida nosaukšana un mainīgā lieluma nosaukums. 2800 02:08:52,337 --> 02:08:53,920 Un es to varētu saukt par jebko, ko vēlos. 2801 02:08:53,920 --> 02:08:54,940 Es to saukšu par size. 2802 02:08:54,940 --> 02:08:56,140 Es to varētu saukt par n. 2803 02:08:56,140 --> 02:08:58,585 Un ir pieņemami izmantot vienu un to pašu mainīgo dažādās funkcijās, 2804 02:08:58,585 --> 02:09:01,030 bet es to nosaukšu par size, lai tas būtu atšķirīgs. 2805 02:09:01,030 --> 02:09:04,120 Un tad šajā funkcijā es vienkārši nokopēšu no atmiņas to pašu kodu, 2806 02:09:04,120 --> 02:09:07,210 kas bija iepriekš. 2807 02:09:03,010 --> 02:09:09,422 for int i get 0,i mazāks par size-- 3–- vietā i++, šī iekšpusē, for 2808 02:09:09,422 --> 02:09:15,835 int j get 0, j ir mazāks par size j++, un tā iekšpusē izdrukājiet ar 2809 02:09:15,835 --> 02:09:22,247 printf vienu numura zīmi, izdrukājiet ārā pēc šī cikla vienu jaunu 2810 02:09:22,247 --> 02:09:28,660 rindiņu, un viss. 2811 02:09:28,660 --> 02:09:30,370 Tagad es to izdarīju ātri, protams. 2812 02:09:30,370 --> 02:09:32,860 Bet tas ir tas pats kods, ko rakstīju iepriekš. 2813 02:09:32,860 --> 02:09:34,970 Taču tagad, tāpat kā ar Scratch, ļaujiet man vairākas reizes 2814 02:09:34,970 --> 02:09:37,080 patvaļīgi nospiest taustiņu Enter, lai kodu pārvietotu ārpus 2815 02:09:37,080 --> 02:09:39,190 redzesloka un prāta. 2816 02:09:39,190 --> 02:09:40,900 Tagad man ir abstrakcijas. 2817 02:09:40,900 --> 02:09:43,320 Man ir puzles gabali, kas tagad pastāv, ko sauc par get_size un 2818 02:09:43,320 --> 02:09:45,740 print_grid, pie kuru sintakses ir jāpierod, bet tagad tie vienkārši 2819 02:09:45,740 --> 02:09:48,160 pastāv. 2820 02:09:48,160 --> 02:09:50,590 Izņemot to, ka man ir jāizdara viena lieta. 2821 02:09:50,590 --> 02:09:53,560 Tā kā C ir nedaudz naiva, ja mēģinu tagad ievadīt make mario un 2822 02:09:53,560 --> 02:09:56,530 nospiest taustiņu Enter, funkcijas get_size netiešā deklarācija ir 2823 02:09:56,530 --> 02:09:59,500 nederīga. 2824 02:09:59,500 --> 02:10:03,460 Un mēs to esam redzējuši iepriekš, kad nebiju pievienojis datni. 2825 02:10:03,460 --> 02:10:06,362 Kad es nebiju iekļāvis CS50 bibliotēku, get_int nedarbojās. 2826 02:10:06,362 --> 02:10:09,070 Bet par to šeit nav runa, jo tas nav no bibliotēkas. 2827 02:10:09,070 --> 02:10:10,270 Es tikko šo izdomāju. 2828 02:10:10,270 --> 02:10:12,580 C jūs uztver burtiski. 2829 02:10:12,580 --> 02:10:15,745 Un, ja šīs funkcijas definējat datnes apakšā, tās nepastāv 7. vai 10. 2830 02:10:15,745 --> 02:10:18,910 rindā. 2831 02:10:18,910 --> 02:10:20,690 Tāpēc es varētu izdarīt šo. 2832 02:10:20,690 --> 02:10:23,516 Es varētu, labi, labi, ļaujiet man to visu izcelt, izgriezt 2833 02:10:23,516 --> 02:10:26,342 starpliktuvē un ielīmēt to šeit. 2834 02:10:26,342 --> 02:10:27,550 Tas atrisinātu problēmu. 2835 02:10:27,550 --> 02:10:28,915 Es varētu vienkārši pārvietot visas šīs funkcijas savas datnes 2836 02:10:28,915 --> 02:10:30,280 augšdaļā. 2837 02:10:30,280 --> 02:10:33,380 Tas ir kaitinoši, jo tagad main ir datnes apakšā. 2838 02:10:33,380 --> 02:10:34,930 Lai to atrastu, būs nepieciešams ilgāks laiks. 2839 02:10:34,930 --> 02:10:36,560 Tas nav veiksmīgs risinājums. 2840 02:10:36,560 --> 02:10:39,170 Tāpēc ļaujiet man to novietot atpakaļ tur, kur tas bija apakšā. 2841 02:10:40,730 --> 02:10:43,395 Šī ir vienīgā reize CS50 un patiešām C programmēšanā, kur 2842 02:10:43,395 --> 02:10:46,060 kopēšana/ielīmēšana ir saprātīgs risinājums. 2843 02:10:46,060 --> 02:10:49,797 Ja nokopējat un ielīmējat katras funkcijas pirmo koda rindiņu un pēc 2844 02:10:49,797 --> 02:10:53,535 tam pabeidzat to ar semikolu, varat paķircināt kompilatoru, datnes 2845 02:10:53,535 --> 02:10:57,272 augšdaļā dodot tam pietiekamu mājienu, ka šīs funkcijas neeksistē, 2846 02:10:57,272 --> 02:11:01,010 pirms tās parādās tālāk kodā.. 2847 02:11:01,010 --> 02:11:03,190 Bet šeit ir mājiens, ka tie būs. 2848 02:11:03,190 --> 02:11:07,660 Tādā veidā jūs varat pārliecināt kompilatoru jums uzticēties. 2849 02:11:07,660 --> 02:11:11,830 Tāpēc šīs citas funkcijas joprojām var būt zemāk datnē, zem main. 2850 02:11:11,830 --> 02:11:15,190 Bet tagad, kad es gatavoju mario... ak, sasodīts. 2851 02:11:15,190 --> 02:11:17,260 Ak, es teicu drukāt, nevis printf. 2852 02:11:17,260 --> 02:11:20,860 Mana vaina - printf. 2853 02:11:20,860 --> 02:11:24,325 Tātad, ja es izpildu make mario, ./mario, tagad varu ierakstīt 3, un 2854 02:11:24,325 --> 02:11:27,790 mēs atkal esam uz pareizajām sliedēm. 2855 02:11:27,790 --> 02:11:32,800 Tātad tas bija ļoti grūts veids, kā rast daudz sarežģītāku risinājumu. 2856 02:11:32,800 --> 02:11:35,240 Bet šis risinājums savā ziņā ir labāk izstrādāts. 2857 02:11:35,740 --> 02:11:37,900 Jo tagad, īpaši bez komentāriem, es domāju, paskatieties, cik īss ir 2858 02:11:37,900 --> 02:11:40,060 mans kods. 2859 02:11:40,060 --> 02:11:42,430 Mana main funkcija burtiski ir divas koda rindiņas. 2860 02:11:42,940 --> 02:11:46,338 Nu, es iekļāvu svarīgākās lietas savās funkcijās. 2861 02:11:46,338 --> 02:11:49,856 Un tagad, it īpaši, ja es strādāju ar kolēģiem vai citiem, jūs varētu 2862 02:11:49,856 --> 02:11:53,374 iedomāties lielu programmu sadalīt mazākās daļās, lai dažādi cilvēki 2863 02:11:53,374 --> 02:11:56,892 izstrādā dažādas daļas, ja vien jūs visi iepriekš vienojaties par to, 2864 02:11:56,892 --> 02:12:00,410 kas patiesībā ir šīs ievades un izvades. 2865 02:12:00,410 --> 02:12:04,300 Labi, tāpēc tagad apsvērsim, ko datori var darīt labi un ne tik labi. 2866 02:12:04,300 --> 02:12:07,541 C patiešām matemātiski atbalsta veselu virkni operatoru, ar kuriem 2867 02:12:07,541 --> 02:12:10,783 mēs varam veikt saskaitīšanu, atņemšanu, reizināšanu, dalīšanu un pat 2868 02:12:10,783 --> 02:12:14,025 aprēķināt atlikumu, dalot vienu skaitli ar citu. 2869 02:12:14,025 --> 02:12:16,577 Patiesībā, kāpēc, lai mēs neizmantotu tos ļoti vienkāršā programmā un 2870 02:12:16,577 --> 02:12:19,130 neizgatavotu paši savu kalkulatoru? 2871 02:12:19,130 --> 02:12:21,400 Tāpēc ļaujiet man pāriet uz VS Code. 2872 02:12:21,400 --> 02:12:23,215 Ļaujiet man iet uz priekšu un izveidot jaunu datni ar nosaukumu 2873 02:12:23,215 --> 02:12:25,030 calculator.c. 2874 02:12:25,030 --> 02:12:29,350 Un šajā datnē, turpināsim un vispirms iekļausim dažas tagad 2875 02:12:29,350 --> 02:12:33,670 pazīstamas galvenes datnes — cs50.h, kā arī stdio.h. 2876 02:12:33,670 --> 02:12:37,540 Turpināsim un deklarēsim int main(void). 2877 02:12:37,540 --> 02:12:40,250 Un tad iekš main darīsim kaut ko salīdzinoši vienkāršu. 2878 02:12:40,250 --> 02:12:44,145 Deklarēsim int un nosauksim to par x un iestatīsim to vienādu ar get 2879 02:12:44,145 --> 02:12:48,040 int atgriezto vērtību, aicinot lietotāju ievadīt x vērtību. 2880 02:12:48,040 --> 02:12:50,240 Tad iedosim sev otru mainīgo. 2881 02:12:50,240 --> 02:12:51,490 Mēs to sauksim, teiksim, par y. 2882 02:12:51,490 --> 02:12:54,635 Iestatiet vērtību, kas vienāda ar cita izsaukuma get_int atgriezto 2883 02:12:54,635 --> 02:12:57,780 vērtību, šoreiz pieprasot lietotājam norādīt šo vērtību y. 2884 02:12:57,780 --> 02:13:01,430 Un tad vienkārši turpināsim pašās beigās un izdrukāsim, teiksim, x 2885 02:13:01,430 --> 02:13:05,080 plus y summu, ļoti vienkāršs kalkulators. 2886 02:13:05,080 --> 02:13:08,005 Tāpēc es izmantošu printf, atver pēdiņas/aizver pēdiņas, %i veselam 2887 02:13:08,005 --> 02:13:10,930 skaitlim, reverso slīpsvītru n, lai dotu man jauno rindu. 2888 02:13:10,930 --> 02:13:14,640 Tad es turpināšu un izpildīšu x plus y, lai patiešām izdrukātu summu. 2889 02:13:14,640 --> 02:13:16,710 Ļaujiet man tagad doties uz savu termināļa logu. 2890 02:13:16,710 --> 02:13:20,340 Ļaujiet man izpildīt make calculator, lai apkopotu kodu. 2891 02:13:20,340 --> 02:13:22,080 Nav kļūdas ziņojumu, tas ir labi. 2892 02:13:22,080 --> 02:25:48,970 Ļaujiet man izpildīt ./calculator. 2893 02:13:23,880 --> 02:13:26,190 Un darīsim kaut ko līdzīgu 2 plus 2, kam, protams, vajadzētu būt 2894 02:13:26,190 --> 02:13:28,500 vienādam ar 4. 2895 02:13:28,500 --> 02:13:29,340 Un tas ir. 2896 02:13:29,340 --> 02:13:34,677 Bet izrādās, ka dažreiz būs ierobežojumi, ar kuriem mēs saskarsimies. 2897 02:13:34,677 --> 02:13:36,510 Un ļaujiet man šeit kļūt nedaudz ambiciozākam. 2898 02:13:36,510 --> 02:13:37,890 Ļaujiet man notīrīt termināļa logu. 2899 02:13:37,890 --> 02:13:39,990 Un ļaujiet man vēlreiz palaist kalkulatoru. 2900 02:13:39,990 --> 02:13:47,280 Un šoreiz pieņemsim, ak, x ir 2 miljardi, un ierakstīsim to pašu y. 2901 02:13:47,280 --> 02:13:49,920 Un, protams, tagad atbildei 2 miljardi plus 2 miljardi, protams, 2902 02:13:49,920 --> 02:13:52,560 vajadzētu būt 4 miljardiem. 2903 02:13:52,560 --> 02:13:53,970 Un tomēr tā nav. 2904 02:13:53,970 --> 02:13:58,020 Interesantā kārtā, mēs redzam šeit negatīvu skaitli, kas liek domāt, 2905 02:13:58,020 --> 02:14:02,070 ka plus operators nedarbojas tik labi, kā mēs varētu vēlēties. 2906 02:14:02,070 --> 02:14:04,240 Tātad, kāpēc tas tā patiesībā varētu būt? 2907 02:14:04,240 --> 02:14:06,545 Nu, izrādās, ka jūsu datora iekšpusē, protams, ir atmiņa vai 2908 02:14:06,545 --> 02:14:08,850 operatīvā atmiņa, brīvpiekļuves atmiņa. 2909 02:14:08,850 --> 02:14:12,340 Un atkarībā no datora izmēra un datora tipa tas var izskatīties 2910 02:14:12,340 --> 02:14:15,830 līdzīgs šim — neliela shēmas plate ar šiem melnajiem moduļiem, kas 2911 02:14:15,830 --> 02:14:19,320 faktiski satur visus datora atmiņas baitus. 2912 02:14:19,320 --> 02:14:22,687 Diemžēl jums un man ir tikai ierobežots šīs atmiņas daudzums mūsu 2913 02:14:22,687 --> 02:14:26,055 datoros, kas nozīmē, lai cik tālu mēs vēlētos aizskaitīt, galu galā 2914 02:14:26,055 --> 02:14:29,422 būs ierobežojumi attiecībā uz to, cik tālu mēs varam aizskaitīt, jo 2915 02:14:29,422 --> 02:14:32,790 mums ir tikai ierobežots daudzums atmiņas. 2916 02:14:32,790 --> 02:14:35,800 Mums nav bezgalīgi daudz nulles un vieninieku, ar kuriem spēlēties. 2917 02:14:35,800 --> 02:14:38,640 Galu galā mums nākas būt ierobežotiem. 2918 02:14:38,640 --> 02:14:40,072 Tātad, kāda ir šī ietekme? 2919 02:14:40,072 --> 02:14:42,754 Izrādās, ka datori parasti izmanto pat 32 bitus nullēs vai 2920 02:14:42,754 --> 02:14:45,437 vieniniekus, lai attēlotu kaut ko līdzīgu veselam skaitlim vai C, 2921 02:14:45,437 --> 02:14:48,120 int. 2922 02:14:48,120 --> 02:14:51,070 Piemēram, mazākais skaitlis, ko mēs varētu attēlot, izmantojot 2923 02:14:51,070 --> 02:14:54,020 32 veselus skaitļus, protams, izmantojot 32 bitus, būtu nulle — 2924 02:14:54,020 --> 02:14:56,970 32 nulles,kā piemēram, šeit. 2925 02:14:56,970 --> 02:15:00,380 Un lielākais skaitlis, ko mēs varētu attēlot, ir visas šīs nulles 2926 02:15:00,380 --> 02:15:03,790 nomainot pret vieniniekiem, kas šajā gadījumā ideālā variantā mums 2927 02:15:03,790 --> 02:15:07,200 dotu skaitli, kas kopā ir aptuveni 4 miljardi. 2928 02:15:07,200 --> 02:15:12,180 Tas faktiski ir maksimāli 4 294 967 295, ja visus 32 bitus iestatāt 2929 02:15:12,180 --> 02:15:17,160 uz vieniniekiem un pēc tam veicat faktisko aprēķinu. 2930 02:15:17,160 --> 02:15:20,945 Āķis ir tajā, ka mēs, cilvēki un datori, arī dažreiz vēlamies un mums 2931 02:15:20,945 --> 02:15:24,730 ir jāspēj attēlot negatīvus skaitļus. 2932 02:15:24,730 --> 02:15:27,606 Tātad, ja vēlaties attēlot negatīvus skaitļus, kā arī pozitīvos 2933 02:15:27,606 --> 02:15:30,483 skaitļus ar 0, jūs nevarat vienkārši sākt skaitīt ar 0 un sasniegt 2934 02:15:30,483 --> 02:15:33,360 aptuveni 4 miljardus. 2935 02:15:33,360 --> 02:15:36,203 Jums ir jāsadala starpība un, iespējams, jāpiešķir puse no nullēm un 2936 02:15:36,203 --> 02:15:39,046 vieniniekiem negatīviem skaitļiem, bet aptuveni otra puse - 2937 02:15:39,046 --> 02:15:41,890 pozitīviem skaitļiem. 2938 02:15:41,890 --> 02:15:45,426 Tātad faktiski, ja izmantojat pat 32 bitus, lielākais skaitlis, kuru 2939 02:15:45,426 --> 02:15:48,963 dators varētu saskaitīt, noteikti tādā programmā kā šī C valoda, 2940 02:15:48,963 --> 02:15:52,500 izmantojot int, būtu aptuveni 2 miljardi. 2941 02:15:52,500 --> 02:15:57,180 Tas ir 2 147 483 647. 2942 02:15:57,180 --> 02:16:00,330 Bet medaļas otra puse ir tāda, ka mēs varētu arī tagad, izmantojot 2943 02:16:00,330 --> 02:16:03,480 dažādus bitu modeļus, attēlot negatīvus skaitļus, līdz pat aptuveni 2944 02:16:03,480 --> 02:16:06,630 negatīviem 2 miljardiem. 2945 02:16:06,630 --> 02:16:09,873 Bet, protams, tas nozīmē, ka, ja mums ir tikai ierobežots bitu skaits 2946 02:16:09,873 --> 02:16:13,116 un mēs varam skaitīt tikai tik daudz, kādā brīdī mums, tā sakot, 2947 02:16:13,116 --> 02:16:16,360 beigsies biti. 2948 02:16:16,360 --> 02:16:18,600 Citiem vārdiem sakot, mēs sastopamies ar to, ko parasti sauc par 2949 02:16:18,600 --> 02:16:20,840 veselu skaitļu pārpildi, kad vēlaties izmantot vairāk bitu, nekā jums 2950 02:16:20,840 --> 02:16:23,080 ir pieejams. 2951 02:16:23,080 --> 02:16:26,767 Un rezultātā jūs pārpildat pieejamo vietu. 2952 02:16:26,767 --> 02:16:28,600 Ko tas patiesībā nozīmē realitātē? 2953 02:16:28,600 --> 02:16:31,426 Pieņemsim, ka jums ir tikai trīs biti, bet es iekrāsošu ceturto bitu 2954 02:16:31,426 --> 02:16:34,253 pelēku, lai norādītu, kur mēs galu galā vēlamies ievietot papildu 2955 02:16:34,253 --> 02:16:37,080 bitu. 2956 02:16:37,080 --> 02:16:45,360 Ja tas, protams, ir 0, nedēļā 0 diskusiju, tas ir 1, 2, 3, 4, 5, 6, 7. 2957 02:16:45,360 --> 02:16:48,990 Tātad ideālā gadījumā binārajā formātā, ja vēlaties šai vērtībai 7 2958 02:16:48,990 --> 02:16:52,620 pievienot vēl vienu, jums būs matemātiski jāpārnes 1, un ideālā 2959 02:16:52,620 --> 02:16:56,250 gadījumā tas dotu 1000. 2960 02:16:56,250 --> 02:17:01,040 Bet, ja jums nav četru bitu un jūsu dators ir tikai tik sarežģīts, 2961 02:17:01,040 --> 02:17:05,830 lai tajā būtu trīs biti, pat ne 32, bet trīs, tas nozīmē, ka tas 2962 02:17:05,830 --> 02:17:10,620 faktiski sastāda nevis 1000, bet gan 000. 2963 02:17:10,620 --> 02:17:13,030 Šeit vienkārši nav vietas, kur glabāt ceturto bitu, ko esmu šeit 2964 02:17:13,030 --> 02:17:15,440 iekrāsojis pelēkā krāsā, proti, jūsu veselais skaitlis var tikt 2965 02:17:15,440 --> 02:17:17,850 pārpildīts. 2966 02:17:17,850 --> 02:17:20,943 Un, tiklīdz jūs sasniedzat 7, nākamais skaitlis, pievienojot 1, 2967 02:17:20,943 --> 02:17:24,036 faktiski būs 0 vai vēl ļaunāk, kā mēs šeit redzējām manā kodā, 2968 02:17:24,036 --> 02:17:27,129 negatīva vērtība. 2969 02:17:27,129 --> 02:17:30,209 Tātad, ko mēs varētu darīt, lai novērstu šāda veida bažas? 2970 02:17:30,209 --> 02:17:32,490 Nu, C ir ne tikai veseli skaitļi vai inti. 2971 02:17:32,490 --> 02:17:35,479 Tai ir arī lielie veselie skaitļi, kas, kā norāda nosaukums, ir tikai 2972 02:17:35,479 --> 02:17:38,469 lielāki veseli skaitļi, kas nozīmē, ka tiem ir pieejami vairāk bitu. 2973 02:17:38,469 --> 02:17:40,080 Tāpēc ļaujiet man atgriezties pie sava koda šeit. 2974 02:17:40,080 --> 02:17:41,430 Es notīrīšu termināļa logu. 2975 02:17:41,430 --> 02:17:44,220 Un ļaujiet man iet uz priekšu un mainīt savus veselos skaitļus uz 2976 02:17:44,220 --> 02:17:47,010 burtiski lielajiem šeit,lielajiem šeit. 2977 02:17:47,010 --> 02:17:50,119 Man būs jāmaina sava funkcija CS50 bibliotēkā, lai tā nebūtu get_int, 2978 02:17:50,119 --> 02:17:53,228 bet gan get_long. 2979 02:17:53,228 --> 02:17:55,770 Un tā patiešām ir vēl viena funkcija, kuru mēs nodrošinām bibliotēkā. 2980 02:17:55,770 --> 02:17:57,809 Ļaujiet man mainīt arī šo get_int uz get_long. 2981 02:17:57,809 --> 02:17:59,644 Es nemainīšu savus mainīgo nosaukumus, taču man ir jāveic vēl viena 2982 02:17:59,644 --> 02:18:01,480 izmaiņa. 2983 02:18:01,480 --> 02:18:05,204 Izrādās, ka printf atbalsta arī citu formātu kodus - tātad ne tikai 2984 02:18:05,204 --> 02:18:08,929 %i veseliem skaitļiem vai %s simbolu virknēm, bet arī, piemēram, %li 2985 02:18:08,929 --> 02:18:12,654 long - lielam veselam skaitlim, kā arī % f peldošā komata vērtībām ar 2986 02:18:12,654 --> 02:18:16,379 decimāldaļām . 2987 02:18:16,379 --> 02:18:19,034 Tā sakot, ejam uz priekšu un mainīsim manu printf rindiņu, lai tā 2988 02:18:19,034 --> 02:18:21,690 būtu nevis %i, bet gan %li. 2989 02:18:21,690 --> 02:18:25,425 Tagad ļaujiet man iet uz priekšu un vēlreiz izpildīt make 2990 02:18:25,425 --> 02:18:29,160 calculator — tagad nav redzamu kļūdu — ./calculator. 2991 02:18:29,160 --> 02:18:31,740 Un 2 plus 2 joprojām ir vienāds ar 4 tāpat kā iepriekš. 2992 02:18:31,740 --> 02:18:35,890 Bet tagad, ja es vēlreiz izmantoju kalkulatoru un ievadum vēlreiz 2 2993 02:18:35,890 --> 02:18:40,040 miljardus, kā arī 2 miljardus y, iepriekš mēs pārpildījām vesela 2994 02:18:40,040 --> 02:18:44,190 skaitļa lielumu un ieguvām dīvainu negatīvu skaitli, jo modelis tika 2995 02:18:44,190 --> 02:18:48,340 nepareizi interpretēts, tā teikt, kā negatīvs. 2996 02:18:48,340 --> 02:18:51,510 Bet lielais, tā vietā, lai izmantotu 32 bitus, parasti izmanto 64 2997 02:18:51,510 --> 02:18:54,680 bitus, kas nozīmē, ka mums ir vairāk nekā pietiekami daudz rezerves 2998 02:18:54,680 --> 02:18:57,850 bitu, ko izmantot, ja mēs pievienojam 2 miljardi plus 2 miljardi. 2999 02:18:57,850 --> 02:19:01,345 Un tagad faktiski mēs saņemam pareizo atbildi — 4 miljardi, kas 3000 02:19:01,345 --> 02:19:04,840 ietilpst lielā veselā skaitļa izmērā. 3001 02:19:04,840 --> 02:19:07,459 Tātad, lielais var aizskaitīt diezgan tālu.. 3002 02:19:07,459 --> 02:19:12,340 Un patiesībā tas var sasniegt pat 9 kvintiljonus. 3003 02:19:12,340 --> 02:19:14,889 Un tas mums dos daudz garāku ieskriešanās joslu . 3004 02:19:14,889 --> 02:19:17,837 Bet, protams, arī tas galu galā būs ierobežots. 3005 02:19:17,837 --> 02:19:20,383 Tātad, ja jums ir skaitļi, kuriem ir jābūt lielākiem, jums joprojām 3006 02:19:20,383 --> 02:19:22,930 var būt problēmas. 3007 02:19:22,930 --> 02:19:25,430 Tagad ir vēl viena problēma, ar kuru mēs varētu arī saskarties. 3008 02:19:25,430 --> 02:19:28,660 Un mēs to varam redzēt pat šī vienkāršā kalkulatora kontekstā. 3009 02:19:28,660 --> 02:19:32,397 Datori arī cieš no potenciāli tā sauktās noapaļošanas, jo īpaši tad, 3010 02:19:32,397 --> 02:19:36,135 ja veicat aprēķinus, izmantojot peldošā komata vērtības, proti, 3011 02:19:36,135 --> 02:19:39,872 skaitļus ar decimāldaļām, jūs varat nejauši, neapzināti noapaļot 3012 02:19:39,872 --> 02:19:43,610 vērtību, tas nozīmē, ka tiek zaudēts viss pēc komata. 3013 02:19:43,610 --> 02:19:45,549 Tātad patiesībā ļaujiet man atgriezties pie VS Code šeit. 3014 02:19:45,549 --> 02:19:46,900 Es notīrīšu savu termināļa logu. 3015 02:19:46,900 --> 02:19:49,710 Un joprojām izmantosim lielus veselus skaitļus, bet ejam uz priekšu 3016 02:19:49,710 --> 02:19:52,520 un šeit saskaitīšanas vietā izmantosim dalīšanu. 3017 02:19:52,520 --> 02:19:55,090 Tāpēc ļaujiet man mainīt šo plus uz dalīšanas operatoru. 3018 02:19:55,090 --> 02:19:57,055 Ļaujiet man iet uz priekšu un pārkompilēt kodu šeit, izmantojot make 3019 02:19:57,055 --> 02:19:59,020 calculator. 3020 02:19:59,020 --> 02:20:02,695 Ļaujiet man iet uz priekšu un palaist ./calculator, un ļaujiet man 3021 02:20:02,695 --> 02:20:06,370 turpināt ievadot, piemēram, x ir 1 un y ir 3. 3022 02:20:06,370 --> 02:20:08,380 Un mēs redzēsim,ka… pagaidiet nedaudz. 3023 02:20:08,380 --> 02:20:11,500 Es uzzināju, ka 1 dalīts ar 3 vajadzētu būt 1/3. 3024 02:20:11,500 --> 02:20:14,963 Bet peldošā komata vērtībā tam vajadzētu būt 0,33333, varbūt ar 3025 02:20:14,963 --> 02:20:18,426 nelielu līniju virs tās, kā pamatskolā, bet patiesībā bezgalīgs 3026 02:20:18,426 --> 02:20:21,890 trijnieku skaits. 3027 02:20:21,890 --> 02:20:25,965 Un tomēr šķiet, ka esam pazaudējuši vismaz vienu no šiem trim pēc 3028 02:20:25,965 --> 02:20:30,040 komata, jo atbilde šeit atgriežas kā tikai 0. 3029 02:20:30,040 --> 02:20:31,700 Tātad, kāpēc tas tā varētu būt? 3030 02:20:31,700 --> 02:20:35,367 Ja es zinu, ka diviem veseliem skaitļiem, dalot vienu ar otru, man 3031 02:20:35,367 --> 02:20:39,035 būtu jādod daļa, peldošā komata vērtību ar decimālzīmi, es nevaru 3032 02:20:39,035 --> 02:20:42,702 turpināt lietot veselus skaitļus vai pat, šajā gadījumā, lielos 3033 02:20:42,702 --> 02:20:46,370 veselos skaitļus, kuri neatbalsta decimālkomata lietojumu. 3034 02:20:46,370 --> 02:20:49,766 Ļaujiet man nomainīt šo formāta kodu no %li uz %f, kas atkal 3035 02:20:49,766 --> 02:20:53,163 apzīmēpeldošā komata vērtību, nevis lielu veselu skaitli vai pat 3036 02:20:53,163 --> 02:20:56,560 veselu skaitli. 3037 02:20:56,560 --> 02:21:00,330 Un ļaujiet man turpināt un definēt, iespējams, trešo mainīgo, z, kā 3038 02:21:00,330 --> 02:21:04,100 skaitli ar peldošo komatu. 3039 02:21:04,100 --> 02:21:07,300 Tāpēc es došu sev mainīgo z, kas vienāds ar x dalīts ar y. 3040 02:21:07,300 --> 02:21:10,720 Un tagad tā vietā, lai drukātu x dalītu ar y, izdrukāsim z. 3041 02:21:10,720 --> 02:21:14,217 Tāpēc tagad es darbojos peldošā komata vērtību pasaulē, jo es 3042 02:21:14,217 --> 02:21:17,715 proaktīvi domāju, ka liels vesels skaitlis vai vesels skaitlis, kas 3043 02:21:17,715 --> 02:21:21,212 dalīts ar citu šādu vērtību, ja tam ir paredzēts daļskaitlis, ir 3044 02:21:21,212 --> 02:21:24,710 jāglabā peldošā komata vērtībā, kaut kas ar komatu. 3045 02:21:24,710 --> 02:21:27,866 Ļaujiet man šeit doties uz savu termināļa logu un atkārtoti palaist 3046 02:21:27,866 --> 02:21:31,023 make calculator — šķiet, ka darbojas labi — ./calculator, un vēlreiz 3047 02:21:31,023 --> 02:21:34,180 izpildīsim 1 dalīts ar 3. 3048 02:21:34,180 --> 02:21:36,868 Un joprojām šeit mēs redzam visas nulles. 3049 02:21:36,868 --> 02:21:39,109 Tātad mēs redzam vismaz decimālkomatu, tātad esam panākuši zināmu 3050 02:21:39,109 --> 02:21:41,350 progresu, pateicoties %f un skaitlim ar peldošo komatu. 3051 02:21:41,350 --> 02:21:46,570 Bet šķiet, ka mēs jau esam noapaļojuši vērtību 1, kas dalīta ar 3. 3052 02:21:46,570 --> 02:21:48,520 Tātad, kā mēs patiesībā varam apiet šo problēmu? 3053 02:21:48,520 --> 02:21:51,694 Ja jūs, programmētājs, zināt, ka jums ir darīšana ar pasauli, kas 3054 02:21:51,694 --> 02:21:54,868 jums dos peldošā komata vērtības ar decimālzīmēm, jums, iespējams, 3055 02:21:54,868 --> 02:21:58,042 būs jāizmanto tā sauktā funkcija, kas pazīstama kā tipa pārveidošana, 3056 02:21:58,042 --> 02:22:01,216 proti, viena datu tipa pārveidošana citā, skaidri pasakot 3057 02:22:01,216 --> 02:22:04,390 kompilatoram, ka vēlaties to darīt. 3058 02:22:04,390 --> 02:22:05,480 Tagad, kā to izdarīt? 3059 02:22:05,480 --> 02:22:07,100 Nu, atgriezīsimies pie mana koda šeit. 3060 02:22:07,100 --> 02:22:11,532 Un, ja problēma būtībā ir tāda, ka C joprojām uzskata x un y kā 3061 02:22:11,532 --> 02:22:15,965 veselus skaitļus — vai tehniski, kā lielos bez komata — un dala vienu 3062 02:22:15,965 --> 02:22:20,397 ar otru, tāpēc tajā nav vietas, tā sakot, skaitļiem aiz 3063 02:22:20,397 --> 02:22:24,830 decimālkomata, kāpēc es to nelaboju? 3064 02:22:24,830 --> 02:22:29,370 Ļaujiet man, izmantojot nedaudz jaunu sintaksi ar iekavām, norādīt, 3065 02:22:29,370 --> 02:22:33,910 ka es vēlos proaktīvi pārvērst x no lielā uz peldošo. 3066 02:22:33,910 --> 02:22:36,930 Ļaujiet man proaktīvi norādīt, ka vēlos arī y pārvērst no lielā uz 3067 02:22:36,930 --> 02:22:39,950 peldošo. 3068 02:22:39,950 --> 02:22:43,076 Un tagad ļaujiet man turpināt un ticēt, ka nz vajadzētu būt 3069 02:22:43,076 --> 02:22:46,203 rezultātam, dalot nevis lielo veselo ar lielo veselo vai veselo ar 3070 02:22:46,203 --> 02:22:49,330 veselo, bet gan peldošo ar peldošo. 3071 02:22:49,330 --> 02:22:52,315 Ļaujiet man notīrīt termināļa logu, palaist make calculator vēlreiz — 3072 02:22:52,315 --> 02:22:55,300 šķiet, ka tas darbojas labi — ./calculator. 3073 02:22:55,300 --> 02:23:00,340 Un tagad 1, 3 un, cerams, tagad mēs tiešām redzēsim, ka mans kods ir 3074 02:23:00,340 --> 02:23:05,380 izvadījis 0.333333. 3075 02:23:05,380 --> 02:23:08,545 Un es domāju, ka, ja mēs turpinātu rādīt vairāk skaitļu pēc komata, 3076 02:23:08,545 --> 02:23:11,710 mēs teorētiski redzētu tik daudz šo trijnieku, cik mēs vēlētos. 3077 02:23:11,710 --> 02:23:13,900 Bet joprojām ir vēl viens āķis. 3078 02:23:13,900 --> 02:23:17,200 Un jo īpaši, ja mēs šādā veidā manipulējam ar skaitļiem datorā, 3079 02:23:17,200 --> 02:23:20,500 izmantojot ierobežotu atmiņas apjomu, vēl viens izaicinājums, ar kuru 3080 02:23:20,500 --> 02:23:23,800 mēs varētu saskarties — ne tikai veselu skaitļu pārpilde, bet arī 3081 02:23:23,800 --> 02:23:27,100 noapaļošana — tā ir peldošā komata neprecizitāte. 3082 02:23:27,100 --> 02:23:31,140 Tāpat kā mēs nevaram attēlot tik lielu veselu skaitli, cik mēs 3083 02:23:31,140 --> 02:23:35,180 vēlamies, izmantojot tikai int vai long, jo būs augšējā robeža, tāpat 3084 02:23:35,180 --> 02:23:39,220 ir noteikta robeža tam, cik precīzi var būt mūsu skaitļi. 3085 02:23:39,220 --> 02:23:41,560 Un tiešām, atgriezīsimies šeit pie VS Code. 3086 02:23:41,560 --> 02:23:43,430 Es vēlreiz notīrīšu savu termināļa logu. 3087 02:23:43,430 --> 02:23:46,370 Un šoreiz ļaujiet man izmantot nedaudz maz ticamu sintaksi, lai 3088 02:23:46,370 --> 02:23:49,310 norādītu, ka es nevēlos redzēt noklusējuma skaitļu skaitu aiz komata, 3089 02:23:49,310 --> 02:23:52,250 ko %f mums piešķir automātiski. 3090 02:23:52,250 --> 02:23:57,520 Turpināsimun parādīsim man 20 skaitļus aiz komata. 3091 02:23:57,520 --> 02:24:02,980 Un dīvainā sintakse šim nolūkam ir nevis %f, bet %.20, lai norādītu, 3092 02:24:02,980 --> 02:24:08,440 ka es vēlos redzēt 20 ciparus, nevis noklusējuma skaitu. 3093 02:24:08,440 --> 02:24:10,390 Ļaujiet man vēlreiz palaist make calculator. 3094 02:24:10,390 --> 02:24:12,550 Ļaujiet man vēlreiz izpildīt ./calculator. 3095 02:24:12,550 --> 02:24:14,890 Un ievadīsim 1, ievadīsim3. 3096 02:24:14,890 --> 02:24:17,560 Un tagad tā ir vēl dīvaināka, vai ne? 3097 02:24:17,560 --> 02:24:19,570 Pamatskolā jūs, iespējams, uzzinājāt, ka 1 dalīts ar 3, protams, ir 3098 02:24:19,570 --> 02:24:21,580 1/3. 3099 02:24:21,580 --> 02:24:24,880 Bet tam vajadzētu būt 0,33333 bezgalīgi daudz reižu vai uz papīra ar 3100 02:24:24,880 --> 02:24:28,180 nelielu strīpiņu virs tā. 3101 02:24:28,180 --> 02:24:31,660 Bet dators šeit veic dīvainu tuvinājumu. 3102 02:24:31,660 --> 02:24:37,480 Tā ir vesela virkne 3 un tad 4326744079590. 3103 02:24:37,480 --> 02:24:39,790 Nu, tas, kas patiesībā notiek zem pārsega, atkal ir šī peldošā komata 3104 02:24:39,790 --> 02:24:42,100 neprecizitātes problēma. 3105 02:24:42,100 --> 02:24:47,200 Ja jums ir tikai ierobežots skaits bitu un, ierobežots atmiņas 3106 02:24:47,200 --> 02:24:52,300 apjoms, dators patiešām var būt tik precīzs tikai intuitīvi. 3107 02:24:52,300 --> 02:24:54,745 Līdzvērtīgi dators ir izlēmis kādā veidā attēlot peldošā komata 3108 02:24:54,745 --> 02:24:57,190 vērtības. 3109 02:24:57,190 --> 02:25:00,473 Taču āķis ir tāds, pamatskolas matemātika: ir bezgalīgs skaitļu 3110 02:25:00,473 --> 02:25:03,756 skaits un bezgalīgs skaits peldošā komata vērtību, jo, ja vēlaties, 3111 02:25:03,756 --> 02:25:07,040 varat turpināt pievienot arvien vairāk un vairāk ciparu. 3112 02:25:07,040 --> 02:25:10,770 Tātad dators, ņemot vērā veidu, kā tas ievieš šīs peldošā komata 3113 02:25:10,770 --> 02:25:14,500 vērtības, būtībā sniedz mums vistuvāko tuvinājumu. 3114 02:25:14,500 --> 02:25:17,740 Tagad, kā mēs varam uzlabot situāciju? 3115 02:25:17,740 --> 02:25:19,180 Nu, ir viena alternatīva. 3116 02:25:19,180 --> 02:25:21,040 Tā vietā, lai izmantotu peldošo, es varu izmantot kaut ko, ko sauc 3117 02:25:21,040 --> 02:25:22,900 par dubultās precizitātes decimāldaļu, kas, kā norāda nosaukums, 3118 02:25:22,900 --> 02:25:24,760 izmanto divreiz vairāk bitu nekā peldošais. 3119 02:25:24,760 --> 02:25:27,820 Tātad parasti 32 vietā tas izmantos 64. 3120 02:25:27,820 --> 02:25:29,695 Un tā ir gluži kā atšķirība starp lielo veselo un veselo, kas mums 3121 02:25:29,695 --> 02:25:31,570 deva vairāk bitu. 3122 02:25:31,570 --> 02:25:34,480 Bet šajā gadījumā tas tiks izmantots lielākai precizitātei. 3123 02:25:34,480 --> 02:25:36,850 Turpināsim un pārveidosim x tipu uz dubulto. 3124 02:25:36,850 --> 02:25:38,740 Pārveidosim y uz dubulto. 3125 02:25:38,740 --> 02:25:41,980 Turpināsimun, izmantosim to pašu formāta kodu - %.20f joprojām ir 3126 02:25:41,980 --> 02:25:45,220 piemērots dubultajiem. 3127 02:25:45,220 --> 02:25:46,990 Ļaujiet man izpildīt make calculator. 3128 02:25:48,970 --> 02:25:51,460 Un tagad ļaujiet man ievadīt 1 dalīts ar 3. 3129 02:25:51,460 --> 02:25:53,770 Un mums joprojām daļēji ir šīs neprecizitātes. 3130 02:25:53,770 --> 02:25:56,590 Un to ir vēl vairāk, ja mēs aplūkojam vairāk nekā tikai 20 ciparus. 3131 02:25:56,590 --> 02:25:59,900 Bet tagad mums ir vairāk trijnieku aiz komata. 3132 02:25:59,900 --> 02:26:01,770 Tātad tas ir vismaz vairāk, un vairāk, un vairāk precīzs, bet tas nav 3133 02:26:01,770 --> 02:26:03,640 ideāls. 3134 02:26:03,640 --> 02:26:06,520 Bet tas ir vismaz precīzāks. 3135 02:26:06,520 --> 02:26:10,650 Tāpēc šāda veida problēmas būs jāpatur prātā ikreiz, kad darāt kaut 3136 02:26:10,650 --> 02:26:14,780 ko skaitliski, zinātniski, vismaz ar C valodu, kurā jūs saskaraties 3137 02:26:14,780 --> 02:26:18,910 ar šiem reālās pasaules aparatūras un valodas ierobežojumiem. 3138 02:26:18,910 --> 02:26:21,952 Tātad, vēlāk semestrī, mēs pāriesim uz valodu, ko sauc par Python. 3139 02:26:21,952 --> 02:26:24,458 Un tas faktiski atrisinās vismaz vienu no šīm problēmām, vienkārši 3140 02:26:24,458 --> 02:26:26,964 automātiski piešķirot mums vairāk bitu, tā sakot, tik cik mums tie ir 3141 02:26:26,964 --> 02:26:29,470 nepieciešami, vismaz veseliem skaitļiem. 3142 02:26:29,470 --> 02:26:33,140 Bet pat jautājums par peldošā komata neprecizitāti paliks. 3143 02:26:33,140 --> 02:26:35,170 Tagad, cik reālas ir šīs problēmas? 3144 02:26:35,170 --> 02:26:39,750 1999. gadā mēs to sajutām, kad pasaule pirms šī saprata, ka datoru un 3145 02:26:39,750 --> 02:26:44,330 programmatūras ieviešana tajos, glabājot mehānismus, izmantojot tikai 3146 02:26:44,330 --> 02:26:48,910 divus ciparus, varētu nebūt bijusi labākā ideja. 3147 02:26:48,910 --> 02:26:53,073 Piemēram, tā vietā, lai glabātu 1999. gadu, lai attēlotu 1999. gadu, 3148 02:26:53,073 --> 02:26:57,236 daudziem datoriem vietas un izmaksu dēļ bija ieradums ekonomēti un 3149 02:26:57,236 --> 02:27:01,400 izmantot tikai divus ciparus, lai sekotu līdzi gadam. 3150 02:27:01,400 --> 02:27:05,297 Problēma ir tāda, ka, ja sistēmas netika atjauninātas līdz 3151 02:27:05,297 --> 02:27:09,195 1999. gadam, lai atbalstītu 2000., 2001. gadu un tā tālāk, ir tāda, 3152 02:27:09,195 --> 02:27:13,092 ka, tāpat kā iepriekš ar veselu skaitļu pārpildīšanu, daži datori 3153 02:27:13,092 --> 02:27:16,990 savā atmiņā gadam var pievienot 1, 99.gads. 3154 02:27:16,990 --> 02:27:20,427 Tam vajadzētu būt 2000. gadam, bet, ja viņi izmanto tikai divus 3155 02:27:20,427 --> 02:27:23,865 ciparus, lai attēlotu gadus, viņi varētu sajaukt gadu — kā dažās 3156 02:27:23,865 --> 02:27:27,302 sistēmās tas ļoti iespējams varētu būt — tā vietā, liekot 1900. gadu, 3157 02:27:27,302 --> 02:27:30,740 burtiski sperot lielu soli atpakaļ, tā teikt. 3158 02:27:30,740 --> 02:27:32,906 Tātad jūs varētu domāt, ka šāda veida problēma ir aiz muguras, jo 3159 02:27:32,906 --> 02:27:35,073 īpaši tāpēc, ka mēs vēl jo vairāk saprotam koda un skaitļošanas 3160 02:27:35,073 --> 02:27:37,240 ierobežojumus. 3161 02:27:37,240 --> 02:27:39,700 Bet patiesībā mēs atkal saskarsimies ar šāda veida problēmu jau pēc 3162 02:27:39,700 --> 02:27:42,160 dažiem gadiem. 3163 02:27:42,160 --> 02:27:46,480 2038. gada 19. janvārī mums šobrīd lielākajā daļā datoru būs 3164 02:27:46,480 --> 02:27:50,800 beigušies biti, lai sekotu līdzi laikam. 3165 02:27:50,800 --> 02:27:54,835 Izrādās, ka pirms gadiem cilvēki nolēma izmantot 32 bitu veselu 3166 02:27:54,835 --> 02:27:58,870 skaitli, lai izsekotu, cik sekundes laika gaitā ir pagājušas. 3167 02:27:58,870 --> 02:28:02,865 Viņi izvēlējās zināmā mērā patvaļīgu datumu pagātnē — 1970. gada 3168 02:28:02,865 --> 02:28:06,860 1. janvāri — un tikai sāka skaitīt sekundes no šī brīža. 3169 02:28:06,860 --> 02:28:09,476 Tātad, ja dators saglabā noteiktu sekunžu skaitu, tas norāda datoram, 3170 02:28:09,476 --> 02:28:12,093 cik sekundes ir pagājušas kopš konkrētā datuma, 1970. gada 3171 02:28:12,093 --> 02:28:14,710 1. janvāra. 3172 02:28:14,710 --> 02:28:17,630 Diemžēl, izmantojot 32 bitu veselu skaitli, kā mēs redzējām, jūs 3173 02:28:17,630 --> 02:28:20,550 varat skaitīt tikai tik tālu, un tad jūs pārpildat šī mainīgā 3174 02:28:20,550 --> 02:28:23,470 lielumu. 3175 02:28:23,470 --> 02:28:28,217 Un tāpēc, iespējams, ja mēs līdz 2038. gada 19. janvārim netiksim tam 3176 02:28:28,217 --> 02:28:32,965 priekšā kā cilvēki, sabiedrība, kā datorzinātnieki, šis bits varētu 3177 02:28:32,965 --> 02:28:37,712 apgāzties, tādējādi pārpildot šo veselo skaitļu lielumu, atgriežot 3178 02:28:37,712 --> 02:28:42,460 mūs skaitļošanas ziņā 1901. gada 13. decembrī. 3179 02:28:42,460 --> 02:28:45,510 Ar to vēlos teikt, ka ar visām šīm skaitļošanas iespējām un kodiem 3180 02:28:45,510 --> 02:28:48,560 nāk pienākums pa īstam uzrakstīt pareizo kodu. 3181 02:28:48,560 --> 02:28:50,560 Nākamnedēļ mēs mazliet atkārtosim. 3182 02:28:50,560 --> 02:28:52,555 Bet pagaidām šī bija 1. nedēļa, un novēlam veiksmi ar 1. problēmu 3183 02:28:52,555 --> 02:28:54,550 kopu. 3184 02:28:54,550 --> 02:28:57,850 [APLAUSI]