1 00:00:00,000 --> 00:00:02,742 2 00:00:02,742 --> 00:00:05,680 >> SPEAKER 1: Sveiki visiem. 3 00:00:05,680 --> 00:00:07,530 Mēs gatavojamies, lai sāktu. 4 00:00:07,530 --> 00:00:09,330 Es domāju, ka cilvēki joprojām dodas būt filtrāciju. 5 00:00:09,330 --> 00:00:12,840 Bet interesēs laikā, tāpēc mēs varam Get You puiši no šejienes uz laiku, 6 00:00:12,840 --> 00:00:14,110 mēs ejam, lai sāktu. 7 00:00:14,110 --> 00:00:18,780 Tātad laipni lūdzam CS50 Quiz 0 pārskatīšanu. 8 00:00:18,780 --> 00:00:23,020 Attiecībā uz tiem no jums, kas nav sapratuši vēl, jums ir jautājums par trešdien. 9 00:00:23,020 --> 00:00:25,700 Woo-hoo. 10 00:00:25,700 --> 00:00:29,780 >> Ja jūs neesat sācis studēt vēl vai nav sapratuši, ka tas pastāv vēl, 11 00:00:29,780 --> 00:00:34,070 pagātnes viktorīnas un visa informācija par Jūsu viktorīna ir uz cs50.net/quizzes. 12 00:00:34,070 --> 00:00:38,090 Tur ir dažas diezgan labas sīkumi tur, pagātnes viktorīnas no pēdējā 10 13 00:00:38,090 --> 00:00:43,760 gadiem, kā arī informācija par šo viktorīnas un tēmām 14 00:00:43,760 --> 00:00:46,250 , kas tiks segtas. 15 00:00:46,250 --> 00:00:48,980 Tātad, pieņemsim sāktu. 16 00:00:48,980 --> 00:00:54,240 >> Tātad jūs guys varētu atcerēties, pirmais diena klases Dāvida bija šīs lampas uz. 17 00:00:54,240 --> 00:00:59,650 Tātad būtībā, viss, kas iet gada ar kapuci no datora ir 18 00:00:59,650 --> 00:01:00,860 darīts bināro. 19 00:01:00,860 --> 00:01:04,080 Binārā nozīmē, ko tas izklausās piemēram, 0 un 1 s. 20 00:01:04,080 --> 00:01:09,290 Tai ir divas vērtības, kas var tikt pārstāvētas. 21 00:01:09,290 --> 00:01:14,675 >> Tātad tāpat kā pirmajā dienā sadaļas kad David ieslēgts gaismu 22 00:01:14,675 --> 00:01:21,990 spuldze pārstāvēt tālāk, vai 1, mūsu datoru saprot bināro kā 0 un 23 00:01:21,990 --> 00:01:24,110 1 s, ieslēgt vai izslēgt. 24 00:01:24,110 --> 00:01:25,360 Pamati bināro. 25 00:01:25,360 --> 00:01:29,440 26 00:01:29,440 --> 00:01:32,470 Katrā vietā ir pārstāvēts bāzē divi. 27 00:01:32,470 --> 00:01:36,260 Tātad jūs pievienot 2 līdz 0 līdz 1 līdz 2 visu ceļu uz augšu. 28 00:01:36,260 --> 00:01:41,970 >> Lai aprēķinātu, ko jūsu bināro ir decimal, jūs vienkārši sekot šo vienādojumu 29 00:01:41,970 --> 00:01:42,840 tipa lieta. 30 00:01:42,840 --> 00:01:49,510 Ja jums ir 1 kādā no šīm vietām, jūs reizināt to ar jebkādiem 31 00:01:49,510 --> 00:01:53,820 pamatot tas ir, pievienojiet to uz augšu, un jums decimālo. 32 00:01:53,820 --> 00:01:57,930 Tātad, tas ir, kā jūs skaits 5 bināro. 33 00:01:57,930 --> 00:02:01,400 Tāpat kā tas, ko mēs darām uz pēdējais slaids, tas ir, kā jūs būtu 34 00:02:01,400 --> 00:02:02,650 pārstāvēt 1 līdz 5. 35 00:02:02,650 --> 00:02:05,320 36 00:02:05,320 --> 00:02:09,660 >> Tāpat, tāpat kā jūs varat pievienot un atņemt decimālā vai balstīt 10, vai 37 00:02:09,660 --> 00:02:13,040 īsti bāze, uz var pievienot un atņemt bināro. 38 00:02:13,040 --> 00:02:18,400 Tieši tas, ko jūs varētu sagaidīt, kad jūs pievienot divas augšu, ja tas būs vienāds lielāks 39 00:02:18,400 --> 00:02:24,220 par 1, jums ir 1, padara 0, un to papildinājumu, ka veidā, tikai 40 00:02:24,220 --> 00:02:29,910 kā jūs varētu gaidīt ar regulāru decimālā vai jebkura cita bāze. 41 00:02:29,910 --> 00:02:30,970 Cool. 42 00:02:30,970 --> 00:02:35,140 >> Tātad, piemēram, es teicu, viss, kas iet saskaņā ar kapuci mūsu datora 43 00:02:35,140 --> 00:02:37,560 tiek darīts 0 un 1 s, vai bināro. 44 00:02:37,560 --> 00:02:43,470 Tātad, kā mēs izteikt, piemēram, burti vai skaitļi vai simboli? 45 00:02:43,470 --> 00:02:45,560 Un to, ka atbilde ir ASCII. 46 00:02:45,560 --> 00:02:49,380 >> ASCII ir kartēšana starp rakstzīmēm ka mēs parasti redzam 47 00:02:49,380 --> 00:02:53,360 Angļu valoda, piemēram, s, B s, C s, uzsvērt, domuzīmes, un 48 00:02:53,360 --> 00:02:54,910 kaut kā tā. 49 00:02:54,910 --> 00:02:57,260 Un tas kartes, kas uz ASCII vērtību. 50 00:02:57,260 --> 00:03:03,080 ASCII vērtība ir tikai skaitlis, kas var saprast ar datoru. 51 00:03:03,080 --> 00:03:07,430 Un, tāpat kā jūs varat darīt saskaitīšanu un atņemšanu ar numuriem, jūs varat darīt 52 00:03:07,430 --> 00:03:10,890 viņiem ar ASCII vērtībām. 53 00:03:10,890 --> 00:03:14,050 >> Tātad, šajā piemērā, ko būs šis izdrukāt? 54 00:03:14,050 --> 00:03:26,790 55 00:03:26,790 --> 00:03:35,480 Jā, tā vienkārši telpa B telpa C telpa D. Kur mana pele iet? 56 00:03:35,480 --> 00:03:39,200 57 00:03:39,200 --> 00:03:43,380 Ievērojiet, jūs varat definēt int 65. 58 00:03:43,380 --> 00:03:47,080 Un, kad jūs drukāt, ka, izmantojot C procentiem, tas būs interpretēt, ka 59 00:03:47,080 --> 00:03:49,330 raksturs un izdrukāt A. 60 00:03:49,330 --> 00:03:52,800 >> Līdzīgi, jūs varat deklarēt tā kā char. 61 00:03:52,800 --> 00:03:56,860 Un, kad jūs to izdrukāt, izmantojot procentiem C, tas būs interpretēt, ka 62 00:03:56,860 --> 00:04:05,240 procenti D. Un, tāpat kā jūs varat pievienot numuru, jūs varat pievienot rakstzīmes 63 00:04:05,240 --> 00:04:06,878 ASCII vērtības, šajā gadījumā. 64 00:04:06,878 --> 00:04:11,370 65 00:04:11,370 --> 00:04:16,130 >> Tātad nedaudz rādītājs visiem. 66 00:04:16,130 --> 00:04:19,610 5, kā virkne, nav faktiski vienāds 5. 67 00:04:19,610 --> 00:04:26,610 Tātad, kā mēs varbūt pārvērst string 5 līdz veselam skaitlim 5? 68 00:04:26,610 --> 00:04:28,930 Jebkuras idejas? 69 00:04:28,930 --> 00:04:31,630 Jā. 70 00:04:31,630 --> 00:04:36,720 >> Tātad, ja mums ir 5 kā virkne, mēs varam atņemt 0. 71 00:04:36,720 --> 00:04:37,820 Un tas mums dos 5. 72 00:04:37,820 --> 00:04:41,670 Un tāpat, ja mums ir 5, skaitlis, piebilst, ka uz virkni 0. 73 00:04:41,670 --> 00:04:43,112 Un tas dod mums virkni 5. 74 00:04:43,112 --> 00:04:46,350 75 00:04:46,350 --> 00:04:48,350 Cool. 76 00:04:48,350 --> 00:04:52,940 >> Tagad, atgādināt atpakaļ uz lekciju vienu kur mēs runājām par algoritmiem. 77 00:04:52,940 --> 00:04:57,260 Tātad, kā mēs patiesībā gribam datoru darīt interesantas lietas? 78 00:04:57,260 --> 00:05:00,460 Jūs zināt, tikai pievienojot un atņemot numuri un drukāšanas lietas nav 79 00:05:00,460 --> 00:05:01,730 kas aizraujošs. 80 00:05:01,730 --> 00:05:04,620 Parasti, mēs vēlamies, lai mūsu datoru, lai veikt kādu algoritmu. 81 00:05:04,620 --> 00:05:07,820 Kaut nedaudz sarežģītāka nekā tikai vienkārša aritmētika. 82 00:05:07,820 --> 00:05:11,930 >> Algoritms ir tikai soli pa solim komplektu norādījumus, kā veikt 83 00:05:11,930 --> 00:05:14,640 noteiktu task-- 84 00:05:14,640 --> 00:05:15,660 tāpat kā recepti. 85 00:05:15,660 --> 00:05:19,990 Jūs varētu atcerēties pirmo dienu klase, kur Dāvids mums rēķināties istabu 86 00:05:19,990 --> 00:05:22,550 cilvēki un cik daudz cilvēku bija telpā. 87 00:05:22,550 --> 00:05:24,480 Jūs varētu izmantot, lai skaitīšanu pa vienam. 88 00:05:24,480 --> 00:05:25,860 1, 2, 3, 4. 89 00:05:25,860 --> 00:05:28,010 Tādā gadījumā, lineārā laika algoritms. 90 00:05:28,010 --> 00:05:31,710 >> Bet Dāvids ieviesa algoritms jūs saskaitīt cilvēkus telpā 91 00:05:31,710 --> 00:05:37,340 kur visi pieceļas, tu saki JŪSU numurs citai personai, piebildīšu, ka 92 00:05:37,340 --> 00:05:39,200 numuru uz augšu, un viens cilvēks apsēžas. 93 00:05:39,200 --> 00:05:40,410 Un jūs atkārtot, ka. 94 00:05:40,410 --> 00:05:42,910 Tas ir viens veids algoritmu. 95 00:05:42,910 --> 00:05:47,520 Mēs varam analizēt, kā efektīvāks algoritms ir balstīts uz tā darbības laiks. 96 00:05:47,520 --> 00:05:49,680 Bet mēs runājam mazliet vairāk par to vēlāk. 97 00:05:49,680 --> 00:05:52,740 98 00:05:52,740 --> 00:05:57,090 >> Lai visi algoritmi var arī raksta pseudocode. 99 00:05:57,090 --> 00:06:01,120 Pseudocode ir tikai angļu valodā, piemēram, sintakse izmanto, lai pārstāvētu 100 00:06:01,120 --> 00:06:02,420 programmēšanas valoda. 101 00:06:02,420 --> 00:06:06,070 Piemēram, ja mēs vēlējāmies uzdot lietotāju uzminēt manu iecienītāko numuru, mēs 102 00:06:06,070 --> 00:06:08,390 varētu būt pseudocode kā tādu. 103 00:06:08,390 --> 00:06:09,850 >> Get a lietotājiem uzminēt. 104 00:06:09,850 --> 00:06:13,570 Ja minējums ir pareizs, pateikt viņiem viņi ir pareizi, cits pateikt viņiem 105 00:06:13,570 --> 00:06:15,560 viņi nav pareizi. 106 00:06:15,560 --> 00:06:22,530 Un pseudocode ir veids, kā viegli pārstāv ideja vai algoritms. 107 00:06:22,530 --> 00:06:26,910 Tātad tagad mēs varētu vēlēties, lai faktiski rakstīt Tas valodā ka dators 108 00:06:26,910 --> 00:06:27,980 varētu izpratne. 109 00:06:27,980 --> 00:06:35,660 Lai mēs varētu rakstīt savu pseudocode un interpretēt, ka uz avota kodu. 110 00:06:35,660 --> 00:06:41,320 >> Līdz šim, pirmkods ir jāievēro ar noteiktu sintaksi 111 00:06:41,320 --> 00:06:42,490 programmēšanas valoda. 112 00:06:42,490 --> 00:06:45,430 Un līdz šim, jo ​​CS50, mēs esam bijis, izmantojot galvenokārt c. 113 00:06:45,430 --> 00:06:48,320 Tātad tas varētu būt pirmkods c. 114 00:06:48,320 --> 00:06:51,440 Vēlāk gaitā, tu nakts nākt saskarsmē ar citiem plānošanas 115 00:06:51,440 --> 00:06:52,480 valodas, piemēram, PHP. 116 00:06:52,480 --> 00:06:57,540 Vai, ja jūs pat veikt citas klases, jums varētu darīt, Java, Python, vai pat OCML. 117 00:06:57,540 --> 00:07:01,570 Bet mūsu c programmas valoda, tas ir kā mēs varētu rakstīt pirmkodu 118 00:07:01,570 --> 00:07:04,760 pseudocode algoritms, kas Es tikko aprakstīts iepriekš. 119 00:07:04,760 --> 00:07:08,630 120 00:07:08,630 --> 00:07:11,430 >> Tātad, kā jūsu dators faktiski saprotu, ka? 121 00:07:11,430 --> 00:07:14,490 Tāpat kā es teicu, tas tikai patiešām saprot nullēm un tiem. 122 00:07:14,490 --> 00:07:17,880 Tātad, kā tas saņem no avota kodu, lai kaut ko, kas var būt 123 00:07:17,880 --> 00:07:18,960 saprot? 124 00:07:18,960 --> 00:07:22,920 Nu, mums ir kaut kas sauc kompilatoru. 125 00:07:22,920 --> 00:07:28,450 >> Ja jūs atceraties atpakaļ lielāko daļu jūsu psets, jums bija sava veida programmas 126 00:07:28,450 --> 00:07:30,370 uzrakstīts dot c failu. 127 00:07:30,370 --> 00:07:32,550 Un tad jūs varētu rakstīt marku. 128 00:07:32,550 --> 00:07:35,970 Tātad, ko darīt dara? 129 00:07:35,970 --> 00:07:39,970 >> Jūs varat ierakstīt make sastādīt savu programmu, jo someone-- 130 00:07:39,970 --> 00:07:42,730 kurš uzrakstīja savu p komplektu; iespējams David-- 131 00:07:42,730 --> 00:07:44,190 radīja make failu. 132 00:07:44,190 --> 00:07:51,320 Un, kas stāsta padara jāzina, lai palaistu jūsu kompilatoru, ko sauc šķindēt, ka griba 133 00:07:51,320 --> 00:07:55,560 tad sastādīt savu pirmkodu iebilst kods, kas ir nullēm un tiem 134 00:07:55,560 --> 00:07:57,720 ka jūsu dators saprot. 135 00:07:57,720 --> 00:08:01,610 Bet nedaudz vēlāk, mēs iesim dziļāk par kompilatoru. 136 00:08:01,610 --> 00:08:05,640 137 00:08:05,640 --> 00:08:10,800 >> Tātad atgādināt PSET 0, where-- jā, Jums ir jautājums? 138 00:08:10,800 --> 00:08:11,620 >> Mērķauditorija: [dzirdams]? 139 00:08:11,620 --> 00:08:12,490 >> SPEAKER 1: Jā. 140 00:08:12,490 --> 00:08:14,960 Es domāju, ka viņi tiešām vajadzētu būt tiešsaistē. 141 00:08:14,960 --> 00:08:15,120 Jā. 142 00:08:15,120 --> 00:08:16,572 >> AUDITORIJA: Vai tas, piemēram, [nedzirdama]? 143 00:08:16,572 --> 00:08:19,476 144 00:08:19,476 --> 00:08:20,830 >> SPEAKER 1: nav. 145 00:08:20,830 --> 00:08:25,810 Ir uz cs50.net/quizzes. 146 00:08:25,810 --> 00:08:32,900 >> AUDITORIJA: Slash viktorīnas, slash 2013, slīpsvītra 0, un vienkārši noklikšķiniet caur 147 00:08:32,900 --> 00:08:35,956 viktorīnas 2013. un viktorīna 0, pārskata sadaļā slaidi. 148 00:08:35,956 --> 00:08:40,380 >> SPEAKER 1: Jā, tāpēc, ja jūs puiši vēlas velciet to uz augšu, un apskatīt to uz jūsu 149 00:08:40,380 --> 00:08:42,740 pašu datoru, tas ir jauki too. 150 00:08:42,740 --> 00:08:43,130 Teikt, ka atkal. 151 00:08:43,130 --> 00:08:44,546 >> AUDITORIJA: [nedzirdama]. 152 00:08:44,546 --> 00:08:48,780 >> SPEAKER 1: Jā, [nedzirdama] ir mākslīgais mainīgais. 153 00:08:48,780 --> 00:08:49,644 Ak, jā? 154 00:08:49,644 --> 00:08:51,372 >> Mērķauditorija: [dzirdams]? 155 00:08:51,372 --> 00:08:54,300 >> SPEAKER 1: Nē, streiki nav uz eksāmenu. 156 00:08:54,300 --> 00:08:55,950 Atvainojiet, viņas jautājums bija, bija streiki uz eksāmenu. 157 00:08:55,950 --> 00:08:59,530 Un tā nav. 158 00:08:59,530 --> 00:09:05,780 Tātad PSET 0, jums puiši ir jābūt visiem īstenota kaut izmantojot nulles. 159 00:09:05,780 --> 00:09:13,100 Un mēs uzzinājām dažus pamata programmēšanu celtniecības bloki, izmantojot nulles. 160 00:09:13,100 --> 00:09:15,590 >> Tātad, pieņemsim to apskatīt dažus no šiem pamatelementiem 161 00:09:15,590 --> 00:09:18,170 , kas veido programmu. 162 00:09:18,170 --> 00:09:20,570 Pirmais ir Būla izteiksme. 163 00:09:20,570 --> 00:09:24,540 Būla izteiksmes ir tie, un 0 s vai kaut kas ir iecelta 164 00:09:24,540 --> 00:09:25,700 divas iespējamās vērtības. 165 00:09:25,700 --> 00:09:30,320 Šajā gadījumā, patiess vai nepatiess, ieslēgt vai izslēgt, un jā vai nē. 166 00:09:30,320 --> 00:09:35,390 Piemērs vienkāršs, ļoti vienkāršs, programma, kas izmanto Būla 167 00:09:35,390 --> 00:09:39,140 izteiksme šeit. 168 00:09:39,140 --> 00:09:43,220 >> Tātad, lai par Būla izpausmju ziņā būt noderīga, mums ir Būla operatorus. 169 00:09:43,220 --> 00:09:48,920 Tie ir uzņēmēji, kas var tikt izmantotas salīdzināt dažas vērtības. 170 00:09:48,920 --> 00:09:52,820 Tātad mums ir, un vai nav vienāds ar, mazāk par vai vienāda ar vai lielāka par 171 00:09:52,820 --> 00:09:55,130 vienāds ar, un mazāk nekā vai lielāks. 172 00:09:55,130 --> 00:09:59,060 Bet šie operatori nav ļoti noderīgs ja mēs varam tos apvienot 173 00:09:59,060 --> 00:10:00,320 nosacījumi. 174 00:10:00,320 --> 00:10:04,370 >> Tātad jūs puiši varētu atcerēties no nulles un no sava p nosaka, ka mēs 175 00:10:04,370 --> 00:10:05,400 bija apstākļus. 176 00:10:05,400 --> 00:10:09,710 Tie ir, būtībā, tāpat dakšas loģika savu programmu, kas 177 00:10:09,710 --> 00:10:12,670 izpilda atkarībā no tā, vai nosacījums ir izpildīts. 178 00:10:12,670 --> 00:10:18,150 Tātad viens no nosacījumiem, kas mums bija izmanto daudzas reizes šajā kursā ir 179 00:10:18,150 --> 00:10:21,470 ja cits, ja, un cits nosacījumi. 180 00:10:21,470 --> 00:10:24,060 >> Lūk, piemērs, kā jūs varētu izmantot. 181 00:10:24,060 --> 00:10:28,430 Vai kāds zina atšķirību starp tikai izmantojot ja paziņojumus visiem 182 00:10:28,430 --> 00:10:32,530 galam vārsmas, ja cits, ja, un cits apvienot? 183 00:10:32,530 --> 00:10:33,013 Jā? 184 00:10:33,013 --> 00:10:34,263 >> AUDITORIJA: [nedzirdama]. 185 00:10:34,263 --> 00:10:40,741 186 00:10:40,741 --> 00:10:42,160 >> SPEAKER 1: Tieši tā. 187 00:10:42,160 --> 00:10:50,210 Tātad, ja man bija, ja visu ceļu pa šo veidā, pat tad, ja šis nosacījums atdevi 188 00:10:50,210 --> 00:10:52,800 taisnība, tas joprojām turpinās testēšana nākamo divas. 189 00:10:52,800 --> 00:11:00,120 Tā kā, ar ko citu-ja, kas VĒL paziņojumu, ja viens atgriež patiess, 190 00:11:00,120 --> 00:11:02,640 citi netiek pārbaudītas. 191 00:11:02,640 --> 00:11:05,955 Visus jautājumus par to? 192 00:11:05,955 --> 00:11:06,890 Cool. 193 00:11:06,890 --> 00:11:12,240 >> Tātad jūs izmantojat, ja-cits no Else paziņojums, ja jūs zināt, ka tas var tikai 194 00:11:12,240 --> 00:11:14,470 būt viens no šiem gadījumiem. 195 00:11:14,470 --> 00:11:21,550 Tātad mēs zinām, ja x ir mazāks par 0, tas ir noteikti nebūs 196 00:11:21,550 --> 00:11:22,890 lielāks par 0. 197 00:11:22,890 --> 00:11:26,940 198 00:11:26,940 --> 00:11:31,480 >> Nākamais, vēl pamatelements ka mēs uzzinājām cilpas. 199 00:11:31,480 --> 00:11:33,310 Mums ir trīs veidu cilpas. 200 00:11:33,310 --> 00:11:35,830 Cilpas, kamēr cilpas, un darīt, kamēr cilpas. 201 00:11:35,830 --> 00:11:38,730 Un vispār, kad jūs sēdēt rakstīt kaut ko, jums ir jāizlemj 202 00:11:38,730 --> 00:11:40,060 kurš no trim, kuru vēlaties izmantot. 203 00:11:40,060 --> 00:11:41,900 Tātad, kā mēs izlemt, kurš? 204 00:11:41,900 --> 00:11:44,920 205 00:11:44,920 --> 00:11:48,790 >> Mēs parasti izmanto, lai cilpa, ja mēs zinām, cik reizes mēs vēlamies atkārtot 206 00:11:48,790 --> 00:11:53,650 cauri kaut vai cik reizes mēs vēlamies, lai veiktu uzdevumu. 207 00:11:53,650 --> 00:11:58,830 Mēs izmantojam kamēr cilpas, ja mums ir nepieciešams zināms nosacījums, lai būtu patiesība, lai saglabātu darbību. 208 00:11:58,830 --> 00:12:03,730 Un mēs izmantojam darīt, kamēr ļoti līdzīgs kamēr, bet mēs vēlamies, lai mūsu kods palaist 209 00:12:03,730 --> 00:12:04,880 Vismaz vienu reizi. 210 00:12:04,880 --> 00:12:09,410 >> Tātad darīt, kamēr, kāds ir do būs vienmēr veikt vismaz vienu reizi. 211 00:12:09,410 --> 00:12:13,120 Tā kā ar laiku, to nedrīkst darboties vispār, ja 212 00:12:13,120 --> 00:12:15,490 nosacījums nav izpildīts. 213 00:12:15,490 --> 00:12:16,740 Visus jautājumus ar šo? 214 00:12:16,740 --> 00:12:20,480 215 00:12:20,480 --> 00:12:22,860 >> Tātad struktūra cilpa. 216 00:12:22,860 --> 00:12:23,620 Jums puiši visi esam redzējuši šo. 217 00:12:23,620 --> 00:12:25,320 Tu inicializēt to. 218 00:12:25,320 --> 00:12:26,600 Jums ir sava veida stāvoklī. 219 00:12:26,600 --> 00:12:32,340 Tā, piemēram, varam sāktu kā man ir vienāds ar 0. 220 00:12:32,340 --> 00:12:34,040 i ir mazāks par 10. 221 00:12:34,040 --> 00:12:35,442 Un es ++. 222 00:12:35,442 --> 00:12:39,010 Ļoti vienkāršs, ko mēs esam darījuši. 223 00:12:39,010 --> 00:12:42,210 >> Par kamēr cilpa, tāpat, jums ir ir sava veida inicializācijas, 224 00:12:42,210 --> 00:12:44,980 sava veida stāvoklī, un sava veida atjauninājumu. 225 00:12:44,980 --> 00:12:51,990 Tātad, mēs varam īstenot mūsu cilpa arī kā kamēr cilpa, izmantojot šo. 226 00:12:51,990 --> 00:12:56,000 Un līdzīgi ar do kamēr cilpa, mēs varētu būt dažas inicializācijas, 227 00:12:56,000 --> 00:12:58,640 izpildīt kaut ko, to atjaunina, un Tad pārbaudīt stāvokli. 228 00:12:58,640 --> 00:13:03,500 229 00:13:03,500 --> 00:13:05,140 >> Tāpēc tagad funkcijas. 230 00:13:05,140 --> 00:13:06,460 Mēs ieliekam visu kopā. 231 00:13:06,460 --> 00:13:10,140 Mēs varētu vēlēties uzrakstīt kādu veida funkciju. 232 00:13:10,140 --> 00:13:12,790 Kopējā funkcija, kas jūs varētu esmu redzējis jau ir galvenais. 233 00:13:12,790 --> 00:13:13,770 Galvenais ir funkcija. 234 00:13:13,770 --> 00:13:16,160 Tā ir atgriešanās tipa, int. 235 00:13:16,160 --> 00:13:18,470 Tā ir funkcija nosaukums, galvenais. 236 00:13:18,470 --> 00:13:20,810 Un tas ir argumentus, argc un ARGV. 237 00:13:20,810 --> 00:13:24,040 Tātad galvenais ir tikai funkcija. 238 00:13:24,040 --> 00:13:27,230 >> Citas funkcijas, jūs varētu būt izmantotas, printf-- printf ir function-- 239 00:13:27,230 --> 00:13:29,330 GetInt, toupper. 240 00:13:29,330 --> 00:13:32,010 Bet tie gadās bijis īstenoti mums pa 241 00:13:32,010 --> 00:13:33,270 sava veida bibliotēkas. 242 00:13:33,270 --> 00:13:37,400 Ja jūs guys atcerēties, ieskaitot šis CS50.h bibliotēku vai 243 00:13:37,400 --> 00:13:38,510 standarta I / O bibliotēka. 244 00:13:38,510 --> 00:13:39,200 Jā, jautājums? 245 00:13:39,200 --> 00:13:41,610 >> AUDITORIJA: Vai galvenais tikai raksturīga c? 246 00:13:41,610 --> 00:13:44,740 Vai tas ir tikai sava veida [nedzirdama]? 247 00:13:44,740 --> 00:13:47,370 >> SPEAKER 1: Jautājums ir ja galvenais ir raksturīgs c. 248 00:13:47,370 --> 00:13:51,460 Un jā, visas funkcijas ir galvenā funkcija. 249 00:13:51,460 --> 00:13:55,290 Tas ir sava veida nepieciešamas datora zināt, kur sākt 250 00:13:55,290 --> 00:13:55,993 darbojas kodu. 251 00:13:55,993 --> 00:13:58,108 >> AUDITORIJA: Tātad tu negribēji [nedzirdama]? 252 00:13:58,108 --> 00:13:59,480 >> SPEAKER 1: Nē 253 00:13:59,480 --> 00:14:00,760 Jebkādi citi jautājumi? 254 00:14:00,760 --> 00:14:03,430 255 00:14:03,430 --> 00:14:04,770 Cool. 256 00:14:04,770 --> 00:14:08,050 Tātad, tāpat kā jūs varat izmantot funkciju , kas ir rakstīts, lai jūs, jūs varat arī 257 00:14:08,050 --> 00:14:10,380 uzrakstiet savu funkciju. 258 00:14:10,380 --> 00:14:17,050 Šī ir funkcija, ka kāds varētu ir rakstīts, lai aprēķinātu tilpumu 259 00:14:17,050 --> 00:14:18,395 no Q, piemēram. 260 00:14:18,395 --> 00:14:21,300 261 00:14:21,300 --> 00:14:29,500 Tur ir atgriešanās tips šeit, šajā gadījumā int, mūsu funkcijas nosaukums q un mūsu 262 00:14:29,500 --> 00:14:31,360 saraksts parametru. 263 00:14:31,360 --> 00:14:34,550 >> Un ņemiet vērā, ka jums ir, lai rakstītu datus Parametra vēlaties veids 264 00:14:34,550 --> 00:14:38,660 izmantot vai arī funkcija nav zināt, kāda veida 265 00:14:38,660 --> 00:14:41,650 parametrs man būtu pieņemt. 266 00:14:41,650 --> 00:14:48,110 Tātad, šajā gadījumā, mēs gribam skaitlis kā mūsu ieguldījumu. 267 00:14:48,110 --> 00:14:50,390 Tātad, kāpēc, iespējams, mēs vēlamies izmantot funkcijas? 268 00:14:50,390 --> 00:14:52,800 >> Pirmkārt, liels organizācijai. 269 00:14:52,800 --> 00:14:56,350 Tās palīdz izjaukt jūsu kodu vairāk organizēts gabalos un padarīt 270 00:14:56,350 --> 00:14:57,960 vieglāk lasīt. 271 00:14:57,960 --> 00:14:59,760 Vienkāršošana. 272 00:14:59,760 --> 00:15:01,740 Tas ir labs dizains. 273 00:15:01,740 --> 00:15:04,570 Kad jūs lasāt kādu kodu un galvenā funkcija ir patiešām, 274 00:15:04,570 --> 00:15:07,750 tiešām garš, tas varētu būt grūtāk iemesls, par to, kas notiek. 275 00:15:07,750 --> 00:15:11,710 Tātad, ja jūs sadalīt minēto funkciju, tas varētu būt vieglāk lasīt. 276 00:15:11,710 --> 00:15:12,750 Un atkārtoti-spējas. 277 00:15:12,750 --> 00:15:16,940 Ja jums ir rieciens kodu, kas ir to sauc vai palaist vairākas reizes, 278 00:15:16,940 --> 00:15:20,690 vietā pārrakstīšana šī kodeksa 10 reizes savu galveno funkciju, jūs varētu 279 00:15:20,690 --> 00:15:21,440 vēlas atkārtoti to. 280 00:15:21,440 --> 00:15:25,740 Un tad katru reizi, jums ir nepieciešams, lai izmantotu, ka gabals koda, zvanu funkciju. 281 00:15:25,740 --> 00:15:30,550 282 00:15:30,550 --> 00:15:35,380 >> Tāpēc tagad, ja mēs atceramies atpakaļ uz nulles, mēs arī runājām par dažiem jēdzieniem, 283 00:15:35,380 --> 00:15:37,680 no kuriem viens ir vītņu. 284 00:15:37,680 --> 00:15:41,120 Pavediens ir jēdziens vairākiem sekvences koda 285 00:15:41,120 --> 00:15:43,040 izpildes, tajā pašā laikā. 286 00:15:43,040 --> 00:15:47,490 Tāpēc domāju, ka atpakaļ uz vienu dienu, kad Deivids bija Jūs guys skaits off skaitu 287 00:15:47,490 --> 00:15:48,440 cilvēki telpā. 288 00:15:48,440 --> 00:15:50,550 >> Būtībā, kas notiek gada ir visiem jums, puiši bija 289 00:15:50,550 --> 00:15:52,370 darbojas atsevišķus pavedienus. 290 00:15:52,370 --> 00:15:55,540 Un šie diegi nāca kopā saņemt kādu atbildi. 291 00:15:55,540 --> 00:15:58,890 Līdzīgi, Scratch, ja jums ir vairākas sprites, jūs varētu 292 00:15:58,890 --> 00:16:01,070 ir kaķis un suns. 293 00:16:01,070 --> 00:16:08,770 Un viņi būtu vienlaicīgi rādīt savus skriptus. 294 00:16:08,770 --> 00:16:10,020 Tas ir piemērs vītni. 295 00:16:10,020 --> 00:16:12,860 296 00:16:12,860 --> 00:16:18,000 >> Un otra jēdziens, kas bija ieviesta nulles bija notikumiem. 297 00:16:18,000 --> 00:16:22,550 Un notikumi, kad vairākas daļas jūsu kods komunicēt ar otru. 298 00:16:22,550 --> 00:16:26,840 Jo nulles, tas bija tad, kad tu izmanto raidījums kontrole un Kad es 299 00:16:26,840 --> 00:16:29,500 Saņem blokus. 300 00:16:29,500 --> 00:16:35,170 >> Un arī, kas Problēmas Set 4, mēs redzējām mazliet par notikumiem, kā arī. 301 00:16:35,170 --> 00:16:38,250 Jums puiši varētu būt izmantoti Gevent bibliotēka. 302 00:16:38,250 --> 00:16:42,450 Un tur bija funkcija waitForClick kurā tu gaidīja 303 00:16:42,450 --> 00:16:44,300 lai lietotājam klikšķi. 304 00:16:44,300 --> 00:16:47,870 Un jūsu klikšķi, šajā gadījumā, būtu notikums un gaidīt klikšķi ir Tavs 305 00:16:47,870 --> 00:16:49,120 notikumu apdarinātājs. 306 00:16:49,120 --> 00:16:53,690 307 00:16:53,690 --> 00:16:58,630 >> Un arī visā rādīt psets un strādā pie saviem psets, tu 308 00:16:58,630 --> 00:17:01,920 varētu nonākt saskarē ar daži no šiem komandas. 309 00:17:01,920 --> 00:17:05,579 Tas ir tas, ko jūs drukāti uz jūsu termināla logu vai kāds logs 310 00:17:05,579 --> 00:17:12,119 , kas parādās uz jūsu g rediģēt līdz, būtībā, vadīt savu datoru. 311 00:17:12,119 --> 00:17:19,440 >> Tā, piemēram, LS uzskaitīti saturu direktorijā. 312 00:17:19,440 --> 00:17:22,510 Padarīt katalogs izveido jaunu mapi. 313 00:17:22,510 --> 00:17:24,819 CD, mainīt direktoriju. 314 00:17:24,819 --> 00:17:28,400 RM, noņemt, dzēš failu vai kādu direktoriju. 315 00:17:28,400 --> 00:17:31,050 Un pēc tam noņemiet direktoriju noņem direktoriju. 316 00:17:31,050 --> 00:17:32,300 >> Mērķauditorija: [dzirdams]? 317 00:17:32,300 --> 00:17:36,978 318 00:17:36,978 --> 00:17:38,370 >> SPEAKER 1: Jā, protams. 319 00:17:38,370 --> 00:17:42,530 320 00:17:42,530 --> 00:17:46,040 Atvainojiet, jautājums bija, ja jums ieteiktu liekot šo 321 00:17:46,040 --> 00:17:48,840 uz apkrāptu lapas. 322 00:17:48,840 --> 00:17:49,440 Tas varētu palīdzēt. 323 00:17:49,440 --> 00:17:51,490 Ja jums ir telpa, jūs varat nodot to tālāk. 324 00:17:51,490 --> 00:17:56,170 Tas ir arī tikai parasti pietiekami labs atcerēties, ka tad, kad jūs to izmantot 325 00:17:56,170 --> 00:17:59,060 Jūs varētu vēlēties, lai tikai ir to iegaumētu. 326 00:17:59,060 --> 00:18:02,750 Kas būs padarīt savu dzīvi daudz vieglāku. 327 00:18:02,750 --> 00:18:04,000 Vai es atbildētu uz jūsu jautājumu? 328 00:18:04,000 --> 00:18:10,528 329 00:18:10,528 --> 00:18:14,290 >> Tātad tagad, mēs runājām mazliet īsi par bibliotēkām. 330 00:18:14,290 --> 00:18:18,570 Bet divi galvenie tie, kas mēs esam bijuši izmantojot līdz šim gaitā ir 331 00:18:18,570 --> 00:18:20,860 standarta I / O un CS50. 332 00:18:20,860 --> 00:18:25,410 Kāda veida lietas ir iekļauti standarta I / O bibliotēka? 333 00:18:25,410 --> 00:18:28,410 >> Jā, tik tālu mēs esam izmanto printf. 334 00:18:28,410 --> 00:18:31,150 Jo CS50, mēs esam izmanto GetInt un GetString. 335 00:18:31,150 --> 00:18:37,200 Un datu tips string arī notiek jādeklarē šajā CS50 bibliotēkā. 336 00:18:37,200 --> 00:18:40,250 Mēs runājam nedaudz padziļināti par kā bibliotēkas darbu un to, kā viņi 337 00:18:40,250 --> 00:18:41,870 mijiedarbojas ar pārējo savu kodu. 338 00:18:41,870 --> 00:18:46,220 Bet tie ir divi galvenie, ka mēs saskārusies ar tik tālu 339 00:18:46,220 --> 00:18:48,430 kurss. 340 00:18:48,430 --> 00:18:50,050 >> Veidi. 341 00:18:50,050 --> 00:18:58,120 Tie ir labi atcerēties, cik daudz katrs veids tiek pārstāv vai cik 342 00:18:58,120 --> 00:19:02,840 daudzi baiti katra tipa requires-- 343 00:19:02,840 --> 00:19:04,990 int, 4 baiti; char, 1 baits. 344 00:19:04,990 --> 00:19:06,550 Pludiņš ir 4 baiti. 345 00:19:06,550 --> 00:19:07,782 Kas ir dubultā? 346 00:19:07,782 --> 00:19:09,032 >> AUDITORIJA: [nedzirdama]. 347 00:19:09,032 --> 00:19:11,398 348 00:19:11,398 --> 00:19:16,240 >> SPEAKER 1: Jā, tāpēc peldēt bet divtik. 349 00:19:16,240 --> 00:19:17,150 Kas par ilgu? 350 00:19:17,150 --> 00:19:18,400 >> AUDITORIJA: [nedzirdama]. 351 00:19:18,400 --> 00:19:21,614 352 00:19:21,614 --> 00:19:24,680 >> SPEAKER 1: OK. 353 00:19:24,680 --> 00:19:25,410 Kas ir ilgi? 354 00:19:25,410 --> 00:19:26,660 >> AUDITORIJA: [nedzirdama]. 355 00:19:26,660 --> 00:19:29,400 356 00:19:29,400 --> 00:19:31,450 >> SPEAKER 1: Jā, dubultā int. 357 00:19:31,450 --> 00:19:34,240 358 00:19:34,240 --> 00:19:34,705 Jā. 359 00:19:34,705 --> 00:19:36,100 >> AUDITORIJA: [nedzirdama]. 360 00:19:36,100 --> 00:19:38,030 >> SPEAKER 1: Long [nedzirdama]. 361 00:19:38,030 --> 00:19:41,860 Un tad ilgi ilgi ir divas reizes. 362 00:19:41,860 --> 00:19:42,814 >> AUDITORIJA: Nē, nē. 363 00:19:42,814 --> 00:19:47,107 Sen ir tikai int. 364 00:19:47,107 --> 00:19:50,910 Tas ir atkarīgs no arhitektūras pirms [nedzirdama] 365 00:19:50,910 --> 00:19:52,922 un int ir vienāda izmēra. 366 00:19:52,922 --> 00:19:54,172 [Nedzirdama]. 367 00:19:54,172 --> 00:19:58,841 368 00:19:58,841 --> 00:20:00,920 >> SPEAKER 1: Tik garš un int ir vienādi. 369 00:20:00,920 --> 00:20:02,943 Un tad ilgi ilgi ir dubultā int. 370 00:20:02,943 --> 00:20:03,910 Cool. 371 00:20:03,910 --> 00:20:05,550 Un tad, kas ir pēdējais veids? 372 00:20:05,550 --> 00:20:06,510 >> AUDITORIJA: Pointer. 373 00:20:06,510 --> 00:20:10,350 >> SPEAKER 1: Jā, tāpēc mēs uzzinājām mazliet par norādes. 374 00:20:10,350 --> 00:20:14,015 Un neatkarīgi no tā, ko rādītājs ir norādot kuri paredzēti, tas varētu būt char zvaigzne 375 00:20:14,015 --> 00:20:15,880 vai int star-- 376 00:20:15,880 --> 00:20:20,530 tas vienmēr ir 4 baiti rādītājs. 377 00:20:20,530 --> 00:20:21,633 Jautājumi par ka? 378 00:20:21,633 --> 00:20:22,116 Jā? 379 00:20:22,116 --> 00:20:24,531 >> Mērķauditorija: [dzirdams]? 380 00:20:24,531 --> 00:20:29,530 >> SPEAKER 1: Tik garš un int ir pats šajā CS50 ierīces. 381 00:20:29,530 --> 00:20:32,302 >> AUDITORIJA: Ierīce ir pilnīgi savstarpēji aizvietojami. 382 00:20:32,302 --> 00:20:33,510 >> SPEAKER 1: Jā. 383 00:20:33,510 --> 00:20:36,610 Tik tad ilgi ilgi ir dubultā int. 384 00:20:36,610 --> 00:20:39,250 >> AUDITORIJA: Tas ir 32 bitu? 385 00:20:39,250 --> 00:20:40,620 >> SPEAKER 1: 32 bit, jā. 386 00:20:40,620 --> 00:20:43,572 >> AUDITORIJA: Tātad [nedzirdama]? 387 00:20:43,572 --> 00:20:46,790 >> SPEAKER 1: Jā, ja tā nav skaidri saka, jums 388 00:20:46,790 --> 00:20:47,870 būtu jāuzņemas 32 bitu. 389 00:20:47,870 --> 00:20:50,040 >> AUDITORIJA: Tas kaut ko teikt piemēram, pieņemot 390 00:20:50,040 --> 00:20:51,498 arhitektūra kā ierīces. 391 00:20:51,498 --> 00:20:58,800 392 00:20:58,800 --> 00:21:01,710 64 bit, vienīgās lietas, kas pārmaiņas ir garie un norādes. 393 00:21:01,710 --> 00:21:05,614 Viņi abi [nedzirdama]. 394 00:21:05,614 --> 00:21:06,590 >> SPEAKER 1: Jā? 395 00:21:06,590 --> 00:21:07,566 >> AUDITORIJA: Jautājums. 396 00:21:07,566 --> 00:21:10,982 Tātad par vienu no prakses viktorīnas, tā vaicā par neparakstītu int. 397 00:21:10,982 --> 00:21:15,374 Tātad, kā tas, ka jānosaka no int [nedzirdama]? 398 00:21:15,374 --> 00:21:18,140 >> SPEAKER 1: neparakstīts kas ir arī 4 baiti. 399 00:21:18,140 --> 00:21:21,172 Bet to, kas ir atšķirīgs par parakstīta int un neparakstīts int? 400 00:21:21,172 --> 00:21:22,422 >> AUDITORIJA: [nedzirdama]. 401 00:21:22,422 --> 00:21:24,868 402 00:21:24,868 --> 00:21:25,630 >> SPEAKER 1: Right. 403 00:21:25,630 --> 00:21:27,570 Var pārstāvēt negatīvas vērtības. 404 00:21:27,570 --> 00:21:28,580 Bet kā tas izdarīt? 405 00:21:28,580 --> 00:21:30,536 >> AUDITORIJA: [nedzirdama]. 406 00:21:30,536 --> 00:21:36,370 >> SPEAKER 1: Jā, tas ietaupa 1 bitu pārstāvēt zīmi. 407 00:21:36,370 --> 00:21:40,910 408 00:21:40,910 --> 00:21:45,040 Parakstīja ir viens bits, ka pārstāv zīmi. 409 00:21:45,040 --> 00:21:48,886 Un neparakstīts vienkārši visus pozitīvos. 410 00:21:48,886 --> 00:21:50,365 >> AUDITORIJA: OK. 411 00:21:50,365 --> 00:21:54,230 Tātad jūs sakāt, ka dubultā ir divas reizes lielāka par pludiņa? 412 00:21:54,230 --> 00:21:58,202 >> SPEAKER 1: Double ir divreiz lielums pludiņa, jā. 413 00:21:58,202 --> 00:22:01,639 >> AUDITORIJA: Kā rādītāju lai ilgi ilgi [nedzirdama]? 414 00:22:01,639 --> 00:22:06,058 415 00:22:06,058 --> 00:22:10,870 >> SPEAKER 1: Tātad jautājums ir, kā tas rādītāju uz ilgu long-- 416 00:22:10,870 --> 00:22:13,800 cik ir tas, ka tikai četri baiti kad ilgi ilgi tās 8 baiti. 417 00:22:13,800 --> 00:22:17,310 Tātad, atcerieties, kas ir rādītājs, būtībā, pie ļoti bāzes vērtību. 418 00:22:17,310 --> 00:22:19,046 >> AUDITORIJA: [nedzirdama]. 419 00:22:19,046 --> 00:22:22,670 >> SPEAKER 1: Jā, tāpēc rādītājs ir tikai vieta atmiņā. 420 00:22:22,670 --> 00:22:28,040 Tāpēc tas nav svarīgi, cik daudz vietas ka rādītājs ir vērsta uz. 421 00:22:28,040 --> 00:22:32,060 Tas tikai vajag 4 baiti, lai sekotu šīs atmiņas vietā. 422 00:22:32,060 --> 00:22:34,760 423 00:22:34,760 --> 00:22:36,010 Jebkādi citi jautājumi? 424 00:22:36,010 --> 00:22:39,800 425 00:22:39,800 --> 00:22:41,050 Cool. 426 00:22:41,050 --> 00:22:42,920 427 00:22:42,920 --> 00:22:47,460 >> Tātad pēdējā lieta, man ir ir standarta produkcija. 428 00:22:47,460 --> 00:22:51,020 Jums vajadzētu izmantot tos bieži pietiekami, ka jūs varat atcerēties. 429 00:22:51,020 --> 00:22:54,800 Bet tas ir tad, kad mēs izmantojam printf, piem. 430 00:22:54,800 --> 00:22:59,260 Un mums ir šie vietturus, ka sauca formāta kodi. 431 00:22:59,260 --> 00:23:03,910 >> Tātad procenti c char, procenti i par int, un mēs varam izmantot arī procentiem d. 432 00:23:03,910 --> 00:23:05,130 Tas ir tas pats. 433 00:23:05,130 --> 00:23:08,200 Bet, vispār, kas CS50 mēs mēģināt izmantot procentiem i. 434 00:23:08,200 --> 00:23:09,860 Procenti f par apgrozāmos līdzekļus. 435 00:23:09,860 --> 00:23:15,620 Procenti ld ilgi ilgi un procenti s virkni. 436 00:23:15,620 --> 00:23:18,550 >> Tāpat mēs esam, izmantojot dažus Šo escape. 437 00:23:18,550 --> 00:23:22,431 Piemēram, slīpsvītru n jaunu līniju. 438 00:23:22,431 --> 00:23:26,910 Tas ir tikai tad, kad jūs esat formatēšanu Jūsu kods drukas f. 439 00:23:26,910 --> 00:23:27,260 Jā? 440 00:23:27,260 --> 00:23:28,906 >> AUDITORIJA: Kas ir procenti d atrast? 441 00:23:28,906 --> 00:23:31,850 >> SPEAKER 1: Tātad jautājums ir tas, kas ir procenti d atrast? 442 00:23:31,850 --> 00:23:33,270 Procenti d ir ints. 443 00:23:33,270 --> 00:23:37,392 Percent d un procenti i ir vienādi. 444 00:23:37,392 --> 00:23:41,130 >> AUDITORIJA: Kāda ir atšķirība starp slīpsvītru n un slīpsvītru r? 445 00:23:41,130 --> 00:23:45,300 >> SPEAKER 1: Tātad jautājums ir par to, kas ir Atšķirība starp negatīva reakcija n un 446 00:23:45,300 --> 00:23:48,615 Brīvkustību r? 447 00:23:48,615 --> 00:23:50,906 Es domāju, ka reversā slīpsvītra r is-- 448 00:23:50,906 --> 00:23:54,340 >> AUDITORIJA: Tātad slīpsvītru r vienkārši nozīmē atgriežas rindas sākumā 449 00:23:54,340 --> 00:23:56,670 bez faktiski iet uz jaunu līniju. 450 00:23:56,670 --> 00:24:01,000 Tātad, ja jūs drukāt reversā slīpsvītra r un jūs doties atpakaļ uz rindas sākumā 451 00:24:01,000 --> 00:24:04,005 tad jūs drukāt vairāk stuff, jūs pārrakstīt sīkumi, kas ir jau par 452 00:24:04,005 --> 00:24:04,390 [Nedzirdama]. 453 00:24:04,390 --> 00:24:06,725 Tā kā n faktiski iet uz jaunu līnijas un iet uz [nedzirdama]. 454 00:24:06,725 --> 00:24:10,525 455 00:24:10,525 --> 00:24:13,915 >> SPEAKER 1: Nu, kādi citi jautājumi? 456 00:24:13,915 --> 00:24:15,430 Viss labi. 457 00:24:15,430 --> 00:24:18,617 Es esmu gatavojas nodot to off Dan kurš turpināsies. 458 00:24:18,617 --> 00:24:25,078 >> [Aplausi] 459 00:24:25,078 --> 00:25:08,814 460 00:25:08,814 --> 00:25:09,720 >> DAN: Visu righty. 461 00:25:09,720 --> 00:25:18,590 Tāpēc es ņemšu runāt par citu plata diapazons idejas no klases, kas ir 462 00:25:18,590 --> 00:25:23,220 aptuveni pārstāvis nedēļas divas un sākums nedēļas trīs sākot off 463 00:25:23,220 --> 00:25:28,690 ar liešanu, kas ir tikai veids apstrādājot vērtību konkrēta veida, kā 464 00:25:28,690 --> 00:25:30,830 vērtība cita tipa. 465 00:25:30,830 --> 00:25:34,110 Tātad, mēs varam izdarīt ar simboliem līdz ints, pludiņi, lai ints, un 466 00:25:34,110 --> 00:25:35,360 ilgi ilgojas divkāršot. 467 00:25:35,360 --> 00:25:38,170 468 00:25:38,170 --> 00:25:44,500 >> Visas šīs lietas var izmantot kā veidos ārstē kādu skaitlisku vērtību 469 00:25:44,500 --> 00:25:48,370 mīnus char kā daži citi skaitliska vērtība. 470 00:25:48,370 --> 00:25:54,480 Tātad ir daži jautājumi, ar to, no Protams, kas nāk, kad jūs cast 471 00:25:54,480 --> 00:25:57,860 lietas, piemēram, peldēt uz ints. 472 00:25:57,860 --> 00:26:00,500 Tātad tas ir mazliet dīvaini. 473 00:26:00,500 --> 00:26:03,170 Mums ir pludiņš, kas ir 1,31. 474 00:26:03,170 --> 00:26:05,220 Mēs reizināt to ar 10000. 475 00:26:05,220 --> 00:26:08,380 Un tad mēs to izdrukāt, kā int. 476 00:26:08,380 --> 00:26:09,630 Ko tas izeja? 477 00:26:09,630 --> 00:26:11,600 478 00:26:11,600 --> 00:26:14,020 10.000 reizes 1.31. 479 00:26:14,020 --> 00:26:18,761 Tātad 13,000, ir tas, ka minējums? 480 00:26:18,761 --> 00:26:20,685 >> AUDITORIJA: Es domāju, ka tas ir 10,000. 481 00:26:20,685 --> 00:26:24,234 >> DAN: Tāpēc es esmu reizinot to ar 10000 pirms es esmu liešana to. 482 00:26:24,234 --> 00:26:25,202 >> AUDITORIJA: Ak. 483 00:26:25,202 --> 00:26:27,622 Nebūtu tur būt viens 9 un daži 0 skaitļi? 484 00:26:27,622 --> 00:26:29,270 >> DAN: Jūs varētu būt daži dīvaini cipariem. 485 00:26:29,270 --> 00:26:32,410 486 00:26:32,410 --> 00:26:37,670 Tik labi, tas ir 1,3 reizes 10000. 487 00:26:37,670 --> 00:26:40,040 Tā ka ir 13,000. 488 00:26:40,040 --> 00:26:41,313 Un šis papildu weird-- 489 00:26:41,313 --> 00:26:42,160 >> AUDITORIJA: 13,100. 490 00:26:42,160 --> 00:26:42,650 >> DAN: 13,100. 491 00:26:42,650 --> 00:26:44,910 Paldies jums, Rob. 492 00:26:44,910 --> 00:26:46,610 Un šis papildu weirdness-- 493 00:26:46,610 --> 00:26:48,060 šis 9,9-- 494 00:26:48,060 --> 00:26:53,860 ir vienkārši tāpēc, ka šī liešana beidzās noapaļošana uz leju, kur 495 00:26:53,860 --> 00:26:55,394 tā nedrīkst būt. 496 00:26:55,394 --> 00:26:55,871 Jā. 497 00:26:55,871 --> 00:26:58,256 >> AUDITORIJA: liešana notiek pēc tam, kad kaut kas cits? 498 00:26:58,256 --> 00:27:03,865 >> DAN: Tāpēc, ka man ir šī drukātā, tā tas šo vairošanos pirms tā 499 00:27:03,865 --> 00:27:05,230 tas šo liešana. 500 00:27:05,230 --> 00:27:06,140 >> AUDITORIJA: [nedzirdama]. 501 00:27:06,140 --> 00:27:11,350 >> DAN: Es domāju, ka tas varētu likt pirmkārt, yeah, kas būtu 10000. 502 00:27:11,350 --> 00:27:12,610 Kaut kas cits? 503 00:27:12,610 --> 00:27:13,330 Cool. 504 00:27:13,330 --> 00:27:16,344 Tātad tas ir 13,099. 505 00:27:16,344 --> 00:27:17,840 Kāpēc tas notiek? 506 00:27:17,840 --> 00:27:18,900 Neprecizitāte. 507 00:27:18,900 --> 00:27:21,020 >> Pludiņi nav ideāls. 508 00:27:21,020 --> 00:27:27,550 Tie var tikai pārstāvēt numurus noteikts skaits nozīmīgiem cipariem. 509 00:27:27,550 --> 00:27:35,120 Tātad, ja mēs izdrukāt 8 sig vīģes uz šis float, mēs iegūstam sava veida 510 00:27:35,120 --> 00:27:36,800 neglīts meklē numurs. 511 00:27:36,800 --> 00:27:45,580 Un tas ir tāpēc, ka 1,31 nevar precīzi pārstāvēs vienkāršu 512 00:27:45,580 --> 00:27:49,000 pilnvaras divas mašīnas. 513 00:27:49,000 --> 00:27:53,530 Tātad, tas beidzas līdz ņemot vistuvāk uzminēt, kas beidzas 514 00:27:53,530 --> 00:27:55,710 ir nedaudz zems. 515 00:27:55,710 --> 00:27:57,730 Jēga? 516 00:27:57,730 --> 00:27:59,110 OK. 517 00:27:59,110 --> 00:28:05,840 >> Tagad, ieslēgts ir savādākas darot nosacījuma pārskatus, ja visas 518 00:28:05,840 --> 00:28:09,900 mums rūp, ir viena mainīga. 519 00:28:09,900 --> 00:28:16,570 Tātad šajā konkrētajā piemērā, mēs esam kļūst vesels skaitlis no lietotāja. 520 00:28:16,570 --> 00:28:21,070 Un tad mēs esam apskatot kas tas skaitlis ir. 521 00:28:21,070 --> 00:28:23,500 Jādomā, tas ir numurs no viena līdz četriem. 522 00:28:23,500 --> 00:28:24,800 Tas ir tas, ko mēs prasām. 523 00:28:24,800 --> 00:28:28,450 >> Tātad jums pāreju uz citu mainīgā nosaukums. 524 00:28:28,450 --> 00:28:34,290 Tad jums izveidot gadījumus iespējams vērtības, tas varētu būt. 525 00:28:34,290 --> 00:28:37,730 Tātad, ja viens, saka, ka tas ir zems. 526 00:28:37,730 --> 00:28:41,080 Un tad jūs pauze izkļūt slēdža stāvoklī, lai 527 00:28:41,080 --> 00:28:43,270 jums nav saglabāt turpinās. 528 00:28:43,270 --> 00:28:44,830 >> Nākamajā case-- 529 00:28:44,830 --> 00:28:46,940 tik lieta divus lieta three-- 530 00:28:46,940 --> 00:28:51,920 ja tas ir gadījums, divi tas tikai pilieni uz leju, lai pirmajā rindā kodu, tā uzskata par ar 531 00:28:51,920 --> 00:28:55,400 gadījumā trīs līdz tā redz pārtraukuma. 532 00:28:55,400 --> 00:29:00,430 Tātad iemesls, jūs saņemsiet vienu lietu, lai tikai drukāt zema ir tāpēc, ka I 533 00:29:00,430 --> 00:29:01,890 ir šī pārtraukuma šeit. 534 00:29:01,890 --> 00:29:05,360 Ja es, teiksim, ignorēja šo break-- ja es threw šo breakaway-- 535 00:29:05,360 --> 00:29:09,740 tas varētu drukāt zema, un tad tas izdrukāt vidū, un tad tas varētu izjaukt. 536 00:29:09,740 --> 00:29:12,200 >> Tātad pārtraukumi ir svarīga daļa gada pāriet apstākļus un 537 00:29:12,200 --> 00:29:14,340 viņiem vajadzētu būt tur. 538 00:29:14,340 --> 00:29:20,070 Jebkuras lietas, kas nav norādīts skaidri tiek apstrādāti ar noklusējuma 539 00:29:20,070 --> 00:29:26,645 gadījums slēdzi un tiek iemesta. 540 00:29:26,645 --> 00:29:31,363 >> AUDITORIJA: Tātad 1, 2, 3, un 4 būtu n? 541 00:29:31,363 --> 00:29:33,310 >> DAN: Vērtības, ka n var būt. 542 00:29:33,310 --> 00:29:34,654 Jā. 543 00:29:34,654 --> 00:29:35,146 Yeah? 544 00:29:35,146 --> 00:29:37,606 >> AUDITORIJA: Tātad, ja jums ir ka [nedzirdama]? 545 00:29:37,606 --> 00:29:44,002 546 00:29:44,002 --> 00:29:46,830 >> DAN: Jūs varētu drukāt zema, un pēc tam tas varētu drukāt vidū, un 547 00:29:46,830 --> 00:29:47,400 tad tas saplīst. 548 00:29:47,400 --> 00:29:50,244 >> AUDITORIJA: Kāpēc tas tā drukāt middle ja [nedzirdama]? 549 00:29:50,244 --> 00:29:54,036 550 00:29:54,036 --> 00:30:00,550 >> DAN: Tātad viss saskaņā ar lietu Pirms pārtraukuma ietilpst. 551 00:30:00,550 --> 00:30:09,390 Tātad lieta viena izdruka zem gadījums viens, kā tas ir pēc drukas. 552 00:30:09,390 --> 00:30:09,890 Yeah? 553 00:30:09,890 --> 00:30:11,140 >> Mērķauditorija: [dzirdams]? 554 00:30:11,140 --> 00:30:15,890 555 00:30:15,890 --> 00:30:22,170 >> DAN: Tātad šis skaitlis ir tikai īpaši vērtība, ka šis mainīgais 556 00:30:22,170 --> 00:30:23,420 var veikt, labi? 557 00:30:23,420 --> 00:30:26,740 558 00:30:26,740 --> 00:30:28,490 Vai tas ir jēga? 559 00:30:28,490 --> 00:30:28,990 Jā. 560 00:30:28,990 --> 00:30:31,490 >> Mērķauditorija: [dzirdams]? 561 00:30:31,490 --> 00:30:34,130 >> DAN: Jā, lieta divi varētu drukāt vidū un tad pārtraukums. 562 00:30:34,130 --> 00:30:35,380 >> Mērķauditorija: [dzirdams]? 563 00:30:35,380 --> 00:30:37,954 564 00:30:37,954 --> 00:30:40,050 >> DAN: Es domāju, ka jebkurš? 565 00:30:40,050 --> 00:30:43,855 Kādi citi datu tipi Jūs varat pārslēgties? 566 00:30:43,855 --> 00:30:46,320 >> AUDITORIJA: Jūs varat pārslēgties pār jebkuru datu tipu. 567 00:30:46,320 --> 00:30:50,905 Bet tas nozīmē tikai to, kaut pār chars un ints un sīkumi, piemēram, ka, jo 568 00:30:50,905 --> 00:30:55,600 ja jūs pārejot rādītāju ka nav īsti jēgas, 569 00:30:55,600 --> 00:30:59,555 pārslēgšanās slodzes, ja tā pat pieņemsim jūs darīt, jo peldošā komata 570 00:30:59,555 --> 00:31:02,840 ar precizitāti, jums nebūtu īsti vēlas to darīt anyway. 571 00:31:02,840 --> 00:31:07,320 Tātad diezgan daudz, tikai ints un chars un sīkumi, piemēram, ka. 572 00:31:07,320 --> 00:31:12,360 >> DAN: Jā, tas ir, kad jums ir nepārprotama vērtības, ka jūs zināt, es domāju, var būt 573 00:31:12,360 --> 00:31:14,250 ka slēdzis ir patiešām noderīga. 574 00:31:14,250 --> 00:31:17,094 575 00:31:17,094 --> 00:31:18,990 Labs? 576 00:31:18,990 --> 00:31:21,370 OK. 577 00:31:21,370 --> 00:31:26,180 >> Joma ir diapazons, ka deklarētā mainīgais paplašina. 578 00:31:26,180 --> 00:31:32,190 Tātad šajā maz rieciens kodu man ir, tas būtu pilns ar kļūdām. 579 00:31:32,190 --> 00:31:41,450 Un iemesls ir man paziņojusi, ka šis int i ietvaros šis cilpas. 580 00:31:41,450 --> 00:31:46,390 Un tad es cenšos atsauces, ka i ārpus ka cilpas jomu. 581 00:31:46,390 --> 00:31:50,330 >> Vārdu sakot, jūs varat domāt par jomu kā kaut ko, kas jums paziņojam 582 00:31:50,330 --> 00:31:59,750 ar iekšpusē komplektu cirtaini lencēm tikai pastāv šajās cirtaini lencēm. 583 00:31:59,750 --> 00:32:04,990 Un, ja jūs mēģināt izmantot šo mainīgo ārpus šīm cirtaini bikšturi, jūs 584 00:32:04,990 --> 00:32:08,356 saņemt kļūda no kompilatoru. 585 00:32:08,356 --> 00:32:08,812 Yeah? 586 00:32:08,812 --> 00:32:09,724 >> AUDITORIJA: Tātad tas viens nedarbojas? 587 00:32:09,724 --> 00:32:11,790 >> DAN: Tas nedarbojas, jā. 588 00:32:11,790 --> 00:32:17,190 589 00:32:17,190 --> 00:32:18,660 Stīgas. 590 00:32:18,660 --> 00:32:19,780 String char *. 591 00:32:19,780 --> 00:32:22,250 Viņi tieši tas pats. 592 00:32:22,250 --> 00:32:25,540 Tie ir tikai norādes uz rakstzīmes. 593 00:32:25,540 --> 00:32:33,000 Un visas virknes, kas jums ir jābeidzas ar slīpsvītru nulles, kas ir tikai 594 00:32:33,000 --> 00:32:34,410 c konvencija. 595 00:32:34,410 --> 00:32:36,680 >> To sauc NULL terminators. 596 00:32:36,680 --> 00:32:39,050 Un NULL-- 597 00:32:39,050 --> 00:32:41,670 kapitāls N, kapitāls U, kapitāls L, kapitāls L-- 598 00:32:41,670 --> 00:32:44,290 nav tāds pats kā NULL terminators. 599 00:32:44,290 --> 00:32:46,640 Tas ir rādītājs. 600 00:32:46,640 --> 00:32:48,280 Tas ir raksturs. 601 00:32:48,280 --> 00:32:49,530 Tie ir ļoti atšķirīgas. 602 00:32:49,530 --> 00:32:50,200 Atcerieties to. 603 00:32:50,200 --> 00:32:52,320 Tā būs viktorīnas, droši vien. 604 00:32:52,320 --> 00:32:54,040 Es neesmu redzējis viktorīnas. 605 00:32:54,040 --> 00:32:57,880 606 00:32:57,880 --> 00:32:58,840 Yeah? 607 00:32:58,840 --> 00:33:01,232 >> AUDITORIJA: Tātad NULL ir, teiksim, rādītājs? 608 00:33:01,232 --> 00:33:01,995 >> DAN: Jā. 609 00:33:01,995 --> 00:33:05,170 >> AUDITORIJA: Kāda [nedzirdama]? 610 00:33:05,170 --> 00:33:10,050 >> DAN: Ja, teiksim, malloc sauc, kad tevi nav pietiekami daudz atmiņas, lai saņemtu 611 00:33:10,050 --> 00:33:14,400 neatkarīgi no lieluma jūs lūdz, malloc atgriezīsies NULL. 612 00:33:14,400 --> 00:33:19,550 Tas ir, būtībā, kad funkcija ir vajadzēja atgriezties rādītāju, tu 613 00:33:19,550 --> 00:33:22,600 nepieciešams pārbaudīt pret NULL tāpēc, ka NULL ir diezgan good-- 614 00:33:22,600 --> 00:33:25,260 tas ir, sava veida, atkritumu vērtība. 615 00:33:25,260 --> 00:33:27,050 Tas ir nulles cik norādes iet. 616 00:33:27,050 --> 00:33:29,630 617 00:33:29,630 --> 00:33:32,250 >> Ikreiz, kad jūs zvanu funkciju, kas atgriež rādītāju. 618 00:33:32,250 --> 00:33:35,960 Jūs gatavojas vēlaties pārbaudīt būt pārliecināti, ka šis rādītājs nav NULL 619 00:33:35,960 --> 00:33:37,760 jo NULL ir ļoti bieži. 620 00:33:37,760 --> 00:33:40,160 Tas ir sava veida atkritumu atgriešanās. 621 00:33:40,160 --> 00:33:44,902 Tātad, ja kaut kas negāja labi, vienkārši atgriezties null vietā. 622 00:33:44,902 --> 00:33:45,898 >> Mērķauditorija: [dzirdams]? 623 00:33:45,898 --> 00:33:48,922 >> DAN: Jā, un tas ir tas. 624 00:33:48,922 --> 00:33:51,750 >> Mērķauditorija: [dzirdams]? 625 00:33:51,750 --> 00:33:52,800 >> DAN: Pareizrakstības to, kā šī. 626 00:33:52,800 --> 00:33:54,150 Tas ir NULL terminators. 627 00:33:54,150 --> 00:33:56,560 Tas ir mazie N-U-L-L, ja jūs pareizrakstību tā. 628 00:33:56,560 --> 00:33:59,860 >> AUDITORIJA: Un es tikai gāja atpakaļ un testē to. 629 00:33:59,860 --> 00:34:03,010 Un, ja jūs mēģināt likt peldošu punktu vērtība uz slēdzi, tas būs kliegt pie jums 630 00:34:03,010 --> 00:34:05,916 sakot, paziņojums prasa izteiksmi gada skaitlim veida. 631 00:34:05,916 --> 00:34:07,166 >> DAN: Tur jums iet. 632 00:34:07,166 --> 00:34:09,639 633 00:34:09,639 --> 00:34:12,246 Bet jā, kāds bija jautājums atkal? 634 00:34:12,246 --> 00:34:13,496 >> Mērķauditorija: [dzirdams]? 635 00:34:13,496 --> 00:34:16,150 636 00:34:16,150 --> 00:34:23,679 >> DAN: Tātad kapitāls N, kapitāls U, kapitāls L, kapitāls L ir faktiskais c lieta. 637 00:34:23,679 --> 00:34:29,719 Tas ir NULL rādītājs un būs jāuzskata tikai par tādiem. 638 00:34:29,719 --> 00:34:33,530 Jums nav kādreiz mēģināt un pareizrakstības NULL raksturs un redzēt jebkurš 639 00:34:33,530 --> 00:34:35,630 cits veids nekā šis. 640 00:34:35,630 --> 00:34:36,610 Yeah? 641 00:34:36,610 --> 00:34:42,490 >> AUDITORIJA: Tātad atgriežoties char max vai kaut piezīmēs, tas tā 642 00:34:42,490 --> 00:34:43,960 iemieso to pašu funkciju kā [nedzirdama]? 643 00:34:43,960 --> 00:34:50,655 644 00:34:50,655 --> 00:34:54,949 >> AUDITORIJA: Tātad jūs atsaucoties uz atgriežoties char max no getchar, vai 645 00:34:54,949 --> 00:34:55,444 kāds tas ir? 646 00:34:55,444 --> 00:34:55,940 >> AUDITORIJA: Jā. 647 00:34:55,940 --> 00:34:58,620 >> AUDITORIJA: Jā, tā vispārējās termins visām šīm lietām 648 00:34:58,620 --> 00:34:59,920 ir kontrolputniem vērtības. 649 00:34:59,920 --> 00:35:03,640 Tātad, piemēram, atgriežoties int max no GetInt un char max no getchar, tas ir 650 00:35:03,640 --> 00:35:06,010 vajadzēja būt, piemēram, visu labo, ja šīs lietas atgriežas pie mums, 651 00:35:06,010 --> 00:35:07,210 kaut kas nogāja greizi. 652 00:35:07,210 --> 00:35:09,950 >> Par norādes, mēs vienkārši gadās būt šī sargs vērtība, ka ikviens 653 00:35:09,950 --> 00:35:10,750 vienojas par. 654 00:35:10,750 --> 00:35:13,210 Un šī ir lieta, ko jūs atgriezties kad lietas iet greizi. 655 00:35:13,210 --> 00:35:15,910 Tātad char max ir tas, ko mēs izmantojam pārstāvēt kaut ko 656 00:35:15,910 --> 00:35:18,100 piemēram NULL vai getchar. 657 00:35:18,100 --> 00:35:23,420 >> AUDITORIJA: Tātad, ja jūs testēšanas getchar, jūs varētu vienkārši likt NULL? 658 00:35:23,420 --> 00:35:23,910 Tas, ka kaut ko mainīt? 659 00:35:23,910 --> 00:35:25,400 >> DAN: Jūs varētu ne tikai pārbaudīt NULL. 660 00:35:25,400 --> 00:35:30,130 Jūs ir jāpārbauda char max arī tāpēc atgriešanās vērtību no funkcijas ir 661 00:35:30,130 --> 00:35:35,416 raksturs nav rādītājs. 662 00:35:35,416 --> 00:35:35,888 Yeah? 663 00:35:35,888 --> 00:35:38,248 >> AUDITORIJA: Šis jautājums lūdz par stīgu garuma. 664 00:35:38,248 --> 00:35:40,136 Vai tas ietver null raksturs? 665 00:35:40,136 --> 00:35:41,000 >> DAN: Nē 666 00:35:41,000 --> 00:35:45,930 Un tas, patiesībā, kā stīgu garums zina to pārtraukt, jo tas iet cauri 667 00:35:45,930 --> 00:35:49,070 Jūsu masīvs rakstzīmes līdz tā redz null raksturs. 668 00:35:49,070 --> 00:35:51,030 Un tad tas ir, piemēram, visi Labi, es esmu darīts. 669 00:35:51,030 --> 00:35:52,130 >> Mērķauditorija: [dzirdams] pieci? 670 00:35:52,130 --> 00:35:53,990 >> DAN: Sveiki, būtu pieci. 671 00:35:53,990 --> 00:35:55,240 Yep. 672 00:35:55,240 --> 00:35:59,580 673 00:35:59,580 --> 00:36:02,880 Tik masīvi ir nepārtraukts bloki atmiņā. 674 00:36:02,880 --> 00:36:08,480 Viņiem ir tūlītēja piekļuve, sakot nosaukt masīva un tad, cirtaini 675 00:36:08,480 --> 00:36:16,720 breketes, neatkarīgi indekss jūs vēlaties doties lai, viņi indeksētas no nulles līdz 676 00:36:16,720 --> 00:36:20,100 garums masīva mīnus 1. 677 00:36:20,100 --> 00:36:23,070 >> Un viņi deklarē ko veidam lieta, ka jūs esat uzglabātu 678 00:36:23,070 --> 00:36:29,750 masīvs, nosaukumu masīva, un pēc tam kāds izmērs ir šī masīva. 679 00:36:29,750 --> 00:36:36,660 Tātad tas ir char masīvs garuma seši, kas ir šīs vērtības. 680 00:36:36,660 --> 00:36:42,050 681 00:36:42,050 --> 00:36:42,700 Yeah? 682 00:36:42,700 --> 00:36:43,950 >> Mērķauditorija: [dzirdams]? 683 00:36:43,950 --> 00:36:47,980 684 00:36:47,980 --> 00:36:48,460 >> DAN: Jā. 685 00:36:48,460 --> 00:36:51,340 >> Mērķauditorija: [dzirdams]? 686 00:36:51,340 --> 00:36:56,700 >> DAN: Ja jums ir to, kas notiek uz masīva jau. 687 00:36:56,700 --> 00:37:02,260 Lai jūs varētu norādīt šo vietā, kā, teiksim, palijas, neatkarīgi nosaukums jūsu 688 00:37:02,260 --> 00:37:12,200 masīvs ir tukšs kronšteini vienāds cirtaini sasprindzināt H komats E komats L komatu L komatu 689 00:37:12,200 --> 00:37:16,290 O komats NULL raksturs un cirtaini lencēm. 690 00:37:16,290 --> 00:37:18,180 Tas strādā arī kā deklarācija. 691 00:37:18,180 --> 00:37:20,886 >> Mērķauditorija: [dzirdams]? 692 00:37:20,886 --> 00:37:23,110 >> DAN: Tad jums ir nepieciešams, lai būtu izmērs jau. 693 00:37:23,110 --> 00:37:23,896 >> Mērķauditorija: [dzirdams]? 694 00:37:23,896 --> 00:37:25,146 >> DAN: Jā. 695 00:37:25,146 --> 00:37:30,114 696 00:37:30,114 --> 00:37:32,420 Viss righty. 697 00:37:32,420 --> 00:37:36,430 Komandrindas argumenti ir veids, kā iegūt informāciju no lietotāja, kā 698 00:37:36,430 --> 00:37:39,380 argumenti par galveno. 699 00:37:39,380 --> 00:37:40,600 Galvenais aizņem divus argumentus. 700 00:37:40,600 --> 00:37:47,680 Argumentus skaitu, kas tiek pagājis gar komandrindas un a 701 00:37:47,680 --> 00:37:55,340 string vektora vai string masīvs no visiem argumentiem. 702 00:37:55,340 --> 00:38:07,840 >> Tātad, ja es, teiksim, ko sauc funkciju, piemēram, dot out 1 telpa, 2 telpas, trīs, 703 00:38:07,840 --> 00:38:10,110 argc būtu 4. 704 00:38:10,110 --> 00:38:17,370 Un argv 0 būtu dot out. 705 00:38:17,370 --> 00:38:19,130 Argv1 būtu 1. 706 00:38:19,130 --> 00:38:23,030 argv2 būtu 2. argv3 būtu 3, šajā konkrētajā gadījumā. 707 00:38:23,030 --> 00:38:23,310 Yeah? 708 00:38:23,310 --> 00:38:25,400 >> Mērķauditorija: [dzirdams]? 709 00:38:25,400 --> 00:38:34,010 >> DAN: pēdējais elements masīvā jo masīvs ir garums argc plus 710 00:38:34,010 --> 00:38:41,050 viens argb, pēdējais elements ir NULL rādītājs. 711 00:38:41,050 --> 00:38:42,580 Tas ir argc plus 1. 712 00:38:42,580 --> 00:38:46,210 713 00:38:46,210 --> 00:38:52,150 Tātad gadījumā, ja es tikko teicu, tas būtu ARGV 0 ir dot out. 714 00:38:52,150 --> 00:38:56,330 argv 1 ir 1 argv2 ir; 2. ARGV 3 ir 3. 715 00:38:56,330 --> 00:39:03,490 argv 4, kas ir lielāks par vienu nekā argc būtu NULL. 716 00:39:03,490 --> 00:39:04,870 >> Un tas ir NULL rādītājs. 717 00:39:04,870 --> 00:39:06,590 Jā. 718 00:39:06,590 --> 00:39:11,250 Un tas ir tāpēc, ka virkne ir char zvaigzne ir rādītājs. 719 00:39:11,250 --> 00:39:14,102 Tātad tas ir tāda paša tipa. 720 00:39:14,102 --> 00:39:14,595 Yeah? 721 00:39:14,595 --> 00:39:16,074 >> AUDITORIJA: Divi jautājumi. 722 00:39:16,074 --> 00:39:21,004 Tik viens, kāda ir atšķirība starp šo un GetString izņemot viena veida 723 00:39:21,004 --> 00:39:22,483 lietošanas dzinējs? 724 00:39:22,483 --> 00:39:25,934 Un divas, tas glabāti Jūsu nesen atmiņu? 725 00:39:25,934 --> 00:39:28,399 Tātad, piemēram, GetString būtu būt [nedzirdama]? 726 00:39:28,399 --> 00:39:31,357 727 00:39:31,357 --> 00:39:33,650 >> DAN: Kur tas glabājas? 728 00:39:33,650 --> 00:39:34,905 Es nezinu, kur tas tiek uzglabāts. 729 00:39:34,905 --> 00:39:40,000 >> AUDITORIJA: Tātad, faktiski, jūs zināt, kā jebkurš darbotos zvanāt tas ir argumenti 730 00:39:40,000 --> 00:39:42,170 tiek glabāti kaudze? 731 00:39:42,170 --> 00:39:46,610 Tik argc un argv ir argumenti uz galveno un tie ir uz skursteņa, vai tiešām 732 00:39:46,610 --> 00:39:49,131 nedaudz virs, ko jūs domājat par sākums kaudze. 733 00:39:49,131 --> 00:39:53,490 , Kas bija otra daļa jautājuma? 734 00:39:53,490 --> 00:39:56,821 >> AUDITORIJA: Tātad, kas ir [nedzirdama]? 735 00:39:56,821 --> 00:40:00,990 >> DAN: Jā, tas ir tikai cits veids, iegūt informāciju no lietotāja. 736 00:40:00,990 --> 00:40:06,030 Šis viena ir nedaudz efektīvāka un tas ir ērtāk, lai skriptus, jo jums 737 00:40:06,030 --> 00:40:10,070 var tikai nodot argumentus jūsu galvenais funkcija nevis jāgaida 738 00:40:10,070 --> 00:40:13,400 lietotājiem, ja jums nav nekādu lietotāji. 739 00:40:13,400 --> 00:40:16,280 >> AUDITORIJA: Un jā, saņemt stīgas būtu [nedzirdama]. 740 00:40:16,280 --> 00:40:17,922 Tas uzglabāt stuff jums ir nepieciešams. 741 00:40:17,922 --> 00:40:18,834 >> DAN: Yeah? 742 00:40:18,834 --> 00:40:21,114 >> Mērķauditorija: [dzirdams]? 743 00:40:21,114 --> 00:40:27,545 >> DAN: Jā, argv 0 vienmēr ietver dot slash no funkciju zvanu. 744 00:40:27,545 --> 00:40:28,042 Yeah? 745 00:40:28,042 --> 00:40:29,292 >> Mērķauditorija: [dzirdams]? 746 00:40:29,292 --> 00:40:33,509 747 00:40:33,509 --> 00:40:37,310 >> DAN: Jā, katru no argumentiem ir beidzās null raksturs jo tie 748 00:40:37,310 --> 00:40:38,310 ir virknes. 749 00:40:38,310 --> 00:40:40,892 >> Mērķauditorija: [dzirdams]? 750 00:40:40,892 --> 00:40:44,116 >> DAN: Jā, argv argc ir NULL rādītājs. 751 00:40:44,116 --> 00:40:45,112 >> Mērķauditorija: [dzirdams]? 752 00:40:45,112 --> 00:40:47,104 >> DAN: Ak jā. 753 00:40:47,104 --> 00:40:48,100 Jā, žēl. 754 00:40:48,100 --> 00:40:49,594 >> AUDITORIJA: Tātad [nedzirdama]? 755 00:40:49,594 --> 00:41:08,518 756 00:41:08,518 --> 00:41:16,340 >> DAN: Tātad jautājums ir, ja jums bija komandrindas dot slash ir dot out 1, 2, 757 00:41:16,340 --> 00:41:20,410 būtu skaits komandrindas argumenti būt divas vai tas būtu trīs? 758 00:41:20,410 --> 00:41:24,420 759 00:41:24,420 --> 00:41:28,240 >> AUDITORIJA: Es domāju, ka tas nav tiešām jautājums. 760 00:41:28,240 --> 00:41:31,370 Es mēdz teikt, ak, jūs neizturēja jebkuri komandrindas argumentus kad, 761 00:41:31,370 --> 00:41:32,730 protams, jūs sauc funkciju. 762 00:41:32,730 --> 00:41:37,950 Tāpēc es parasti vokāli izslēgt funkcija no komandrindas 763 00:41:37,950 --> 00:41:40,350 argumenti, pat ja tas ir iekļautas ARGV. 764 00:41:40,350 --> 00:41:42,600 >> DAN: Bet, ja tas bija uz test-- 765 00:41:42,600 --> 00:41:46,550 yeah--, un arī tad, ja jūs kaut ko pateikt tāpat argc vienāds 3, 766 00:41:46,550 --> 00:41:48,512 tu esi drošā stāvokli. 767 00:41:48,512 --> 00:41:49,416 Yeah? 768 00:41:49,416 --> 00:41:50,666 >> Mērķauditorija: [dzirdams]? 769 00:41:50,666 --> 00:42:00,990 770 00:42:00,990 --> 00:42:09,510 >> DAN: Es domāju, ka, ja tā vietā, aicinot šo in argc un stīgu ARGV iekavās 771 00:42:09,510 --> 00:42:14,350 bet tur ir tādi paši un tikai sauc viņiem kaut kas cits, piemēram, 772 00:42:14,350 --> 00:42:16,640 un b, tas tā joprojām strādā? 773 00:42:16,640 --> 00:42:18,790 Un tas joprojām strādā, jūs just-- 774 00:42:18,790 --> 00:42:21,520 nevis izmantojot argc-- jūs gribētu izmantot, un b. 775 00:42:21,520 --> 00:42:24,436 776 00:42:24,436 --> 00:42:25,408 Yeah? 777 00:42:25,408 --> 00:42:26,658 >> Mērķauditorija: [dzirdams]? 778 00:42:26,658 --> 00:42:34,642 779 00:42:34,642 --> 00:42:38,850 >> DAN: Tātad jautājums ir GetString ir gatavojas glabāt atmiņas kaudzes 780 00:42:38,850 --> 00:42:42,280 jo GetString ir char *. 781 00:42:42,280 --> 00:42:47,530 Tā veikalos atmiņas kaudzes, jo tas aicina tagad malloc laikā faktiskais 782 00:42:47,530 --> 00:42:49,258 īstenošana GetString. 783 00:42:49,258 --> 00:42:53,210 784 00:42:53,210 --> 00:42:55,090 OK, pārvietojas on. 785 00:42:55,090 --> 00:42:55,950 >> Drošība. 786 00:42:55,950 --> 00:43:01,090 Tātad, lai būtu patiesi droša, jūs paļaujaties uz nē vienu un jūs ļaujat neviens pieeju jebkuram 787 00:43:01,090 --> 00:43:04,540 jūsu informāciju, kas ir iemesls, kāpēc visi būvē savas mašīnas, 788 00:43:04,540 --> 00:43:09,580 savas operētājsistēmas, visu to programmas no nulles, un acīmredzot 789 00:43:09,580 --> 00:43:13,410 nav savienojumu ar jebkuru citu mašīnām caur internetu. 790 00:43:13,410 --> 00:43:17,350 Tāpēc datori ir nedrošs. 791 00:43:17,350 --> 00:43:19,200 Viņi īsti ir. 792 00:43:19,200 --> 00:43:20,940 Mums ir jāuzticas citus cilvēkus. 793 00:43:20,940 --> 00:43:26,500 >> Un ideja par drošību, ir, ka tu esi mēģinot ierobežot apjomu 794 00:43:26,500 --> 00:43:27,540 ticu, ka jums ir nepieciešams. 795 00:43:27,540 --> 00:43:32,080 Un viens no līdzekļiem, jūs darīt, ka ir ar kriptogrāfiju. 796 00:43:32,080 --> 00:43:34,950 Kriptogrāfija ir, būtībā, mums ir noslēpumi. 797 00:43:34,950 --> 00:43:38,880 >> Dažreiz mums ir jānokārto mūsu noslēpumus kopā ar, teiksim, internets vai 798 00:43:38,880 --> 00:43:39,980 citas lietas. 799 00:43:39,980 --> 00:43:43,180 Un mēs negribam cilvēkus zināt šos noslēpumus. 800 00:43:43,180 --> 00:43:50,100 Tātad mēs šifrēt mūsu noslēpumus par ceļu ka mēs ceram, ka neviens nevar izrēķināt. 801 00:43:50,100 --> 00:43:51,600 >> Tātad, mēs used-- 802 00:43:51,600 --> 00:43:54,340 caur gaitā šo class-- 803 00:43:54,340 --> 00:44:00,750 lietas, piemēram, Cēzara šifru un [Nedzirdama], kas abi ir ļoti, ļoti 804 00:44:00,750 --> 00:44:03,200 nedrošs veidi šifrējot lietas. 805 00:44:03,200 --> 00:44:07,930 Viņi viegli izdomāt, ko viņi ir un kādas ir jūsu noslēpumi. 806 00:44:07,930 --> 00:44:12,130 Reālajā pasaulē izmanto daudz vairāk sarežģītas šifrēšanas shēmas. 807 00:44:12,130 --> 00:44:13,880 Un mums nebūs iekļuvuši daudz vairāk nekā to. 808 00:44:13,880 --> 00:44:18,280 809 00:44:18,280 --> 00:44:19,430 >> Atkļūdošanas. 810 00:44:19,430 --> 00:44:20,785 GDB ir labākais. 811 00:44:20,785 --> 00:44:24,014 812 00:44:24,014 --> 00:44:25,810 Es esmu gatavojas uzsvērt vēlreiz. 813 00:44:25,810 --> 00:44:30,920 Izmantojiet GDB visu laiku katru reizi, jums ir problēma. 814 00:44:30,920 --> 00:44:36,030 Komandas, kas ir noderīgi GDB ir pauze, kas jums iet nu līniju 815 00:44:36,030 --> 00:44:41,330 numuru, funkcijas nosaukums, būtībā kur savu kodu, jūs vēlaties, lai apturētu, 816 00:44:41,330 --> 00:44:45,600 un varētu veikt kontroli. 817 00:44:45,600 --> 00:44:54,140 >> Drukāt ņem mainīgo un izdrukā kāds, ka mainīgais ir, ka 818 00:44:54,140 --> 00:44:55,990 punkts jūsu izpildi. 819 00:44:55,990 --> 00:45:00,130 Nākamais pārceļas jūsu izpildi gar vienu soli. 820 00:45:00,130 --> 00:45:05,050 Un soli soļus iekšpusē funkciju Jūsu izpildi. 821 00:45:05,050 --> 00:45:10,480 >> Pārējās lietas darbojas, kas ir kā jūs faktiski palaist savu kodu. 822 00:45:10,480 --> 00:45:16,630 Turpināt veic visus pasākumus, kas nepieciešami nokļūt uz nākamo lūzuma punkts. 823 00:45:16,630 --> 00:45:18,300 Un ir daudzi, daudzi citi. 824 00:45:18,300 --> 00:45:19,040 Tos uzmeklēt. 825 00:45:19,040 --> 00:45:19,901 Viņi lieliski. 826 00:45:19,901 --> 00:45:20,863 Yeah? 827 00:45:20,863 --> 00:45:22,113 >> Mērķauditorija: [dzirdams]? 828 00:45:22,113 --> 00:45:26,635 829 00:45:26,635 --> 00:45:28,200 >> DAN: Jā, kas ir atkļūdotājs. 830 00:45:28,200 --> 00:45:34,230 Tātad atkļūdotājs ir programma, kas ļauj jums atkļūdot savu programmu. 831 00:45:34,230 --> 00:45:39,931 Tas nav programma, kas atrod bugs tu, lai gan tas būtu lieliski. 832 00:45:39,931 --> 00:45:43,020 833 00:45:43,020 --> 00:45:46,040 >> Un pēdējais man ir meklēt. 834 00:45:46,040 --> 00:45:51,470 Tātad veidiem meklēšanas ka mēs runājām par šajā klasē ir lineāra meklēšanu, 835 00:45:51,470 --> 00:45:55,960 kas ir tikai, ka jūs meklēt, izmantojot katru Mekljuma telpas elements, viens 836 00:45:55,960 --> 00:46:00,410 elements laikā, līdz jūs atradīsiet to, ko jūs meklējat, vai līdz brīdim, kad jūs sasniegsiet 837 00:46:00,410 --> 00:46:03,350 beigās jūsu meklēšanas telpu, kurā norāda jūs sakāt, ka jūs nevar atrast 838 00:46:03,350 --> 00:46:06,360 elements, kas jūs meklējat. 839 00:46:06,360 --> 00:46:13,450 Un tas notiek labākajā pastāvīgu laiku, kas ir 0 1 un sliktākajā lineāru 840 00:46:13,450 --> 00:46:16,070 laiku, kas ir 0 un n. 841 00:46:16,070 --> 00:46:19,250 >> Binārā meklēšanu, kas nepieciešama sordid elementi. 842 00:46:19,250 --> 00:46:24,230 Tu ej uz vidu jūsu elementiem, redzēt, ja elements jūs meklējat 843 00:46:24,230 --> 00:46:30,120 ir lielāks vai mazāks nekā elements ka tu esi vidū. 844 00:46:30,120 --> 00:46:36,510 Tā tas ir lielāks, jūs sakāt, ka apakšā Jūsu meklēšanas telpa ir Jūsu 845 00:46:36,510 --> 00:46:41,550 pašreizējo atrašanās vietu, vidējā, un jūs restart procesu. 846 00:46:41,550 --> 00:46:46,150 Ja tas ir mazāks, tu izskaties teikt ka the-- yeah, kas notiek? 847 00:46:46,150 --> 00:46:47,400 >> Mērķauditorija: [dzirdams]? 848 00:46:47,400 --> 00:46:51,000 849 00:46:51,000 --> 00:46:54,260 >> DAN: Jā. 850 00:46:54,260 --> 00:46:58,360 Kāds no veida veida, kas ir mācīts klase ir godīga spēle testam. 851 00:46:58,360 --> 00:47:01,504 852 00:47:01,504 --> 00:47:04,920 >> [Smiekli] 853 00:47:04,920 --> 00:47:10,260 >> DAN: Un tas, ka jums nav bijis darīt to par problēmu kopumu, tas ir godīgi 854 00:47:10,260 --> 00:47:12,420 spēle testam. 855 00:47:12,420 --> 00:47:15,186 >> AUDITORIJA: Vai mēs varam iet pār to, kā kuri paredzēti, 856 00:47:15,186 --> 00:47:17,052 >> DAN: Tas būs pagājis vairāk. 857 00:47:17,052 --> 00:47:20,496 >> SPEAKER 2: faktiskais kods [Dzirdams] ir uz study.cs50.net. 858 00:47:20,496 --> 00:47:25,910 859 00:47:25,910 --> 00:47:32,680 Tātad, ja paskatās prakses problēmas kas sapludināšanas kārtošanas lapā 860 00:47:32,680 --> 00:47:35,880 study.cs50.net, ir kods īstenošanai apvienot veida. 861 00:47:35,880 --> 00:47:38,550 Tātad, jums nav, lai īstenotu tas pats šovakar. 862 00:47:38,550 --> 00:47:42,090 Bet, pārliecinieties, ka jūs saprotat to drīzāk nekā tikai iegaumējot to. 863 00:47:42,090 --> 00:47:45,035 >> Mērķauditorija: [dzirdams]? 864 00:47:45,035 --> 00:47:49,720 >> SPEAKER 2: sapludināšanas kārtošanas lapa study.cs50.net, pastāv prakse 865 00:47:49,720 --> 00:47:53,570 Problēma, ka, ja jūs noklikšķiniet ar problēma, pašās beigās ir 866 00:47:53,570 --> 00:47:56,280 šķīdumu, kas ir sapludināšanas kārtošanas īstenošanu. 867 00:47:56,280 --> 00:47:58,510 Bet, pārliecinieties, ka jūs to saprotat nevis tikai iegaumējot to 868 00:47:58,510 --> 00:47:59,760 vai kopēt to uz leju. 869 00:47:59,760 --> 00:48:02,870 870 00:48:02,870 --> 00:48:06,340 >> AUDITORIJA: Un perfekti derīgs problēma eksāmenu būtu 871 00:48:06,340 --> 00:48:07,990 kaut kā šeit ir saraksts. 872 00:48:07,990 --> 00:48:12,100 Ko tas saraksts izskatās pēc viens solis Atlase veida vai 873 00:48:12,100 --> 00:48:13,330 ievietošanas kārtošanas vai neatkarīgi. 874 00:48:13,330 --> 00:48:14,940 Viena pilna atkārtojuma saraksta. 875 00:48:14,940 --> 00:48:18,530 Tātad, pat ja jums nav galu galā nepieciešamības kods to, jums ir nepieciešams, lai saprastu to 876 00:48:18,530 --> 00:48:20,440 pietiekami, lai zinātu, kā tas notiek lai mainītu šo masīvu. 877 00:48:20,440 --> 00:48:24,144 878 00:48:24,144 --> 00:48:25,394 >> DAN: Tas ir tas par mani. 879 00:48:25,394 --> 00:48:30,604 880 00:48:30,604 --> 00:48:32,588 >> [Aplausi] 881 00:48:32,588 --> 00:49:06,316 882 00:49:06,316 --> 00:49:07,410 >> LUCAS: Hei visiem. 883 00:49:07,410 --> 00:49:08,390 Mans vārds ir Lucas. 884 00:49:08,390 --> 00:49:16,840 Es esmu gatavojas runāt par recursion, visi par veidu, ka mēs esam iemācījušies, un 885 00:49:16,840 --> 00:49:18,050 mazliet no visiem norādes. 886 00:49:18,050 --> 00:49:18,740 OK? 887 00:49:18,740 --> 00:49:20,340 Tātad vispirms, rekursijas. 888 00:49:20,340 --> 00:49:22,951 Ko tas nozīmē teikt, ka funkcija ir rekursīvs? 889 00:49:22,951 --> 00:49:24,675 >> AUDITORIJA: Zvani sevi. 890 00:49:24,675 --> 00:49:26,500 >> LUCAS: OK, sevi dēvē, jā. 891 00:49:26,500 --> 00:49:27,700 Tātad, piemēram, šo attēlu, piemēram. 892 00:49:27,700 --> 00:49:30,280 Tas ir tāpat kā attēlā iekšpusē no attēla, un tā tālāk. 893 00:49:30,280 --> 00:49:35,740 Tā, piemēram, jūs varat have-- kā Dan kas runā par bināro meklēšanu. 894 00:49:35,740 --> 00:49:41,840 Viens no veidiem, binārā meklēšana ir rekursīvs ir fakts, ka tu esi 895 00:49:41,840 --> 00:49:43,130 mēģinot atrast numuru. 896 00:49:43,130 --> 00:49:44,250 Tātad jūs iet uz vidu. 897 00:49:44,250 --> 00:49:47,130 Un tad jūs pārbaudiet, ja šie numuri tur kas pa kreisi un pa labi. 898 00:49:47,130 --> 00:49:49,650 >> Un tad, ja jūs uzzinātu, skaits ir būs pa kreisi, tas ir tas pats 899 00:49:49,650 --> 00:49:53,340 lieta kā dara meklēšanu atkal, bet tikko pa kreisi no saraksta. 900 00:49:53,340 --> 00:49:57,350 Tātad tas, kā tas izklausās kā tas ir rekursīvs. 901 00:49:57,350 --> 00:50:01,870 Tātad, tas ir iemesls, kāpēc jums puiši ir rekursīvs risinājums sapludināšanas kārtošanas. 902 00:50:01,870 --> 00:50:04,270 >> Labi, tāpēc šeit ir piemērs. 903 00:50:04,270 --> 00:50:07,280 Tātad, pieņemsim, ka es gribu, lai izvēlētos visi skaitļi no 1 līdz n. 904 00:50:07,280 --> 00:50:13,790 Es varu saprast, ka ar n summa numurs ir n plus n mīnus 1 līdz 1. 905 00:50:13,790 --> 00:50:17,810 Bet tad, ja es paskatos n mīnus 1 plus n mīnus 2 plus 1, tas ir tas pats 906 00:50:17,810 --> 00:50:20,680 lieta kā saskaita numuriem līdz n mīnus 1. 907 00:50:20,680 --> 00:50:25,890 Tāpēc es varu teikt par vienlīdzīgas summas apmērā vienāds n plus n mīnus 1 summu. 908 00:50:25,890 --> 00:50:28,010 Vai tas ir jēga? 909 00:50:28,010 --> 00:50:32,630 >> Un es arī būtu kaut kas cits sauc gadījums, kas ir tāds, ka 910 00:50:32,630 --> 00:50:37,440 skaitļu summa up līdz nullei varētu būt nulle. 911 00:50:37,440 --> 00:50:42,770 Tāpēc, tiklīdz man skaitu nulle, es apstājos skaitīšanas. 912 00:50:42,770 --> 00:50:45,330 Vai tas ir jēga? 913 00:50:45,330 --> 00:50:48,120 >> Tātad, šeit ir piemērs tam, kā Es varu īstenot to. 914 00:50:48,120 --> 00:50:49,860 Tāpēc man ir šī funkcija daži. 915 00:50:49,860 --> 00:50:51,700 Kas aizņem veselu n. 916 00:50:51,700 --> 00:50:56,300 Tātad, šeit es pirmo reizi pārbaudīt, ja n ir mazāks vai vienāds ar nulli. 917 00:50:56,300 --> 00:51:00,310 Tātad, ja tas ir mazāks vai vienāds ar nulli, es atgriezties nulli, kas ir mūsu bāzes scenārijs. 918 00:51:00,310 --> 00:51:05,690 Pretējā gadījumā, es varu tikai atgriezties n plus skaitļu summa no 919 00:51:05,690 --> 00:51:07,190 viens pret n mīnus viens. 920 00:51:07,190 --> 00:51:09,360 Jēga? 921 00:51:09,360 --> 00:51:10,100 OK. 922 00:51:10,100 --> 00:51:11,610 >> Tātad, šeit ir, kā tas izskatās. 923 00:51:11,610 --> 00:51:15,260 Jums ir summa 2 līdztiesīgu 2 plus gada 1 summa. 924 00:51:15,260 --> 00:51:18,930 Un daži no 1 ir 1 plus summa ir 0, kas ir 0. 925 00:51:18,930 --> 00:51:20,216 Jēga? 926 00:51:20,216 --> 00:51:25,342 Tātad, ja mēs skatāmies uz kaudze jūsu programma, tas ir, kā tas izskatās. 927 00:51:25,342 --> 00:51:26,820 >> Pirmkārt, mums ir galvenā funkcija. 928 00:51:26,820 --> 00:51:30,320 Un tad galvenā funkcija sauc summa 2. 929 00:51:30,320 --> 00:51:36,690 Un tad summa 2 gatavojas teikt, ak, summa 2 ir vienāds ar 2 plus vienu summu. 930 00:51:36,690 --> 00:51:39,460 Tāpēc es pievieno summu no 1 līdz kaudze. 931 00:51:39,460 --> 00:51:43,860 Un 1 summa gatavojas zvanīt summu 0, kas arī tiks pievienots 932 00:51:43,860 --> 00:51:44,630 uz skursteņa. 933 00:51:44,630 --> 00:51:49,240 Un pēc tam katrs no šiem tiem, kas ir virs otra, ir atgriezties 934 00:51:49,240 --> 00:51:52,020 pirms citiem tiem var glabāt notiek. 935 00:51:52,020 --> 00:51:56,240 >> Tā, piemēram, šeit, summa ir 0, pirmkārt, gatavojas atgriezties 0. 936 00:51:56,240 --> 00:51:58,320 Un pēc tam izvēlēties summu 1. 937 00:51:58,320 --> 00:52:00,850 Tad summa 1 gatavojas atgriezties 1 līdz Apkopojot gada 2. 938 00:52:00,850 --> 00:52:03,900 Un, visbeidzot, summa 2 notiek atgriezties 3 uz galveno. 939 00:52:03,900 --> 00:52:05,320 Vai tas ir jēga? 940 00:52:05,320 --> 00:52:09,496 >> Tas ir ļoti svarīgi saprast, kā kaudze strādā un mēģināt 941 00:52:09,496 --> 00:52:11,980 redzētu, vai tas ir jēga. 942 00:52:11,980 --> 00:52:13,260 Labi, tā šķirošana. 943 00:52:13,260 --> 00:52:16,170 Tātad, kāpēc ir šķirošanas svarīgi, pirmām kārtām? 944 00:52:16,170 --> 00:52:18,260 Kāpēc mums būtu jāuztraucas? 945 00:52:18,260 --> 00:52:20,310 Ikviens? 946 00:52:20,310 --> 00:52:20,695 Dodiet man kādu piemēru? 947 00:52:20,695 --> 00:52:21,040 Yeah? 948 00:52:21,040 --> 00:52:22,968 >> AUDITORIJA: [nedzirdama]. 949 00:52:22,968 --> 00:52:24,700 >> LUCAS: Jā, OK. 950 00:52:24,700 --> 00:52:26,090 Tātad, jūs varat meklēt efektīvāk. 951 00:52:26,090 --> 00:52:28,580 Tas ir labs veids. 952 00:52:28,580 --> 00:52:32,462 Tā, piemēram, mums ir daudz lietas, faktiski, jo mūsu dzīvi, ka 953 00:52:32,462 --> 00:52:32,920 ir sakārtoti. 954 00:52:32,920 --> 00:52:34,830 Piemēram, vārdnīcas. 955 00:52:34,830 --> 00:52:39,210 >> Tas ir ļoti svarīgi, lai visi vārdi kādu lai mēs 956 00:52:39,210 --> 00:52:41,970 var piekļūt viegli. 957 00:52:41,970 --> 00:52:43,280 Tātad tas ir tas, ko viņš saka. 958 00:52:43,280 --> 00:52:45,530 Jūs varat meklēt efektīvāk. 959 00:52:45,530 --> 00:52:48,740 Padomā par to, cik grūti tas būtu, lai būtu vārdnīca, kurā vārdi ir 960 00:52:48,740 --> 00:52:49,500 izlases kārtībā. 961 00:52:49,500 --> 00:52:53,120 Jums ir apskatīt, diezgan daudz, katru vārdu, līdz atrodat 962 00:52:53,120 --> 00:52:54,720 vārds, ka jūs meklējat. 963 00:52:54,720 --> 00:52:58,710 >> Ja jūs izmantojat Facebook arī tad, kad jūs meklējat pie saviem draugiem, jūs esat 964 00:52:58,710 --> 00:53:03,540 gatavojas redzēt, ka Facebook nodot jūsu tuvāk draugs ir virs tiem 965 00:53:03,540 --> 00:53:05,470 ka jums nav runāt ar, ka daudz. 966 00:53:05,470 --> 00:53:08,080 Ja jūs iet visu ceļu uz leju jūsu draugs sarakstu, jūs gatavojas, lai redzētu 967 00:53:08,080 --> 00:53:11,250 cilvēki, jūs, iespējams, nav pat atcerieties, ka jūs esat draugos ar. 968 00:53:11,250 --> 00:53:14,590 Un tas ir tāpēc, ka Facebook veidu jūsu draugi balstās uz to, kā 969 00:53:14,590 --> 00:53:16,472 tuvu jums ir uz tiem. 970 00:53:16,472 --> 00:53:17,930 >> Tik organizējot datus. 971 00:53:17,930 --> 00:53:18,450 Arī Pokemon. 972 00:53:18,450 --> 00:53:21,400 Tātad jūs redzat, ka visiem pokemoniem ir numuri. 973 00:53:21,400 --> 00:53:27,210 Un tas ir tāpat kā viegli veids, kā piekļūt datiem. 974 00:53:27,210 --> 00:53:29,050 >> AUDITORIJA: Piekļuve Pokemon. 975 00:53:29,050 --> 00:53:29,890 >> LUCAS: Jā. 976 00:53:29,890 --> 00:53:32,395 >> AUDITORIJA: [nedzirdama]. 977 00:53:32,395 --> 00:53:33,460 >> LUCAS: Yep. 978 00:53:33,460 --> 00:53:35,140 Labi, tāpēc atlase kārtošanas. 979 00:53:35,140 --> 00:53:41,610 Atlase kārtošanas gatavojas izvēlētos vismazākā nešķiroti vērtību saraksta katras 980 00:53:41,610 --> 00:53:43,300 laiks katrā atkārtojuma. 981 00:53:43,300 --> 00:53:46,800 Tas ir veida, piemēram, tāda veida, ka jūs darāt savā galvā, kad jūs mēģināt 982 00:53:46,800 --> 00:53:48,430 kārtotu sarakstu uz rokām. 983 00:53:48,430 --> 00:53:51,990 >> Būtībā, viss, kas Jums jādara, ir jums izskatīties vismazākās numuru. 984 00:53:51,990 --> 00:53:54,280 Jūs nodot to šķirotas sarakstā. 985 00:53:54,280 --> 00:53:56,230 Un tad jūs meklēt nākamais mazākais numurs. 986 00:53:56,230 --> 00:54:00,080 Un tad jūs turpināt darīt ka un tā tālāk. 987 00:54:00,080 --> 00:54:04,600 >> Tātad izvēle kārtošanas būtībā tu izvēlēties katru reizi mazāko 988 00:54:04,600 --> 00:54:05,750 nešķiroti vērtība. 989 00:54:05,750 --> 00:54:10,840 Put beigās sakārtoti daļa no saraksta. 990 00:54:10,840 --> 00:54:12,370 Un saglabāt darām. 991 00:54:12,370 --> 00:54:15,890 Tātad, pieņemsim ātri redzēt, kas tas izskatās. 992 00:54:15,890 --> 00:54:19,340 Tātad, šeit ir sakārtoti un nešķiroti sarakstā. 993 00:54:19,340 --> 00:54:23,350 >> Tātad sakārtoti saraksta, tas sākotnēji tukšs. 994 00:54:23,350 --> 00:54:26,760 Un tad es esmu gatavojas, lai izvēlētos mazākais numurs šeit, kas ir 2. 995 00:54:26,760 --> 00:54:30,650 Tāpēc man numuru 2, un man priekšā sarakstā. 996 00:54:30,650 --> 00:54:34,910 Un tad es meklēt nākamais mazākais elements, kas ir 3. 997 00:54:34,910 --> 00:54:37,050 Tāpēc es to beigās no sakārtoti sarakstā. 998 00:54:37,050 --> 00:54:38,140 Un tad es saglabātu darot to. 999 00:54:38,140 --> 00:54:40,040 Es uzskatu, 4, un nodot to beigās. 1000 00:54:40,040 --> 00:54:41,360 Atrast 5 un nodot to beigās. 1001 00:54:41,360 --> 00:54:44,830 >> Un apskatīt, cik vispār no tiem laikiem, ka Es saku nodot to gals ir, 1002 00:54:44,830 --> 00:54:46,850 būtībā, pārnešana divas vērtības. 1003 00:54:46,850 --> 00:54:48,100 OK? 1004 00:54:48,100 --> 00:54:50,140 1005 00:54:50,140 --> 00:54:52,825 Un tad pēdējais, jūs vienkārši ir vēl viens elements. 1006 00:54:52,825 --> 00:54:55,870 Tātad tas jau ir sakārtoti. 1007 00:54:55,870 --> 00:54:57,800 >> Labi, tā ievietošanas kārtošanas. 1008 00:54:57,800 --> 00:55:03,180 Ievietošanas kārtošanas jūs nāksies arī ka lieta, ka tā sakārtoti un 1009 00:55:03,180 --> 00:55:04,690 nešķiroti sarakstā. 1010 00:55:04,690 --> 00:55:14,540 Vienīgais ir tas, ka katru reizi, kad jūs pievienojot elementu sakārtoti 1011 00:55:14,540 --> 00:55:18,170 sarakstu, jūs vienkārši izvēlēties elements, kas ir priekšā nešėirotus sarakstā. 1012 00:55:18,170 --> 00:55:20,880 Un tad jūs gatavojas atrast, ko novietojiet to būtu sakārtots 1013 00:55:20,880 --> 00:55:22,300 daļa no saraksta. 1014 00:55:22,300 --> 00:55:25,840 >> Let 's redzēt, kas tas ir tik tas ir lielāka jēga. 1015 00:55:25,840 --> 00:55:29,360 Tātad sākotnēji, piemēram, es cenšos ievietot numuru trīs in 1016 00:55:29,360 --> 00:55:30,680 sakārtots daļa no saraksta. 1017 00:55:30,680 --> 00:55:31,800 Tātad sarakstā nav neko. 1018 00:55:31,800 --> 00:55:34,160 Tāpēc es varu tikai likt numuru 3. 1019 00:55:34,160 --> 00:55:37,480 >> Tagad es gribu, lai pievienotu numuru 5 līdz sakārtots daļa no saraksta. 1020 00:55:37,480 --> 00:55:38,900 Tāpēc es paskatos numuru 5. 1021 00:55:38,900 --> 00:55:40,450 Es ievēroju, ka tā ir lielāka par 3. 1022 00:55:40,450 --> 00:55:41,980 Tāpēc es zinu, ka tam ir jābūt pēc 3. 1023 00:55:41,980 --> 00:55:44,100 Tāpēc man 3 un 5. 1024 00:55:44,100 --> 00:55:45,940 >> Tad es gribu ievietot numuru 2. 1025 00:55:45,940 --> 00:55:51,630 Es ievēroju, ka numurs 2 ir faktiski ilgt tad gan 3 un 5. 1026 00:55:51,630 --> 00:55:54,580 Tāpēc man tiešām ir, lai to visu veidā no saraksta sākumā. 1027 00:55:54,580 --> 00:55:59,030 Tāpēc man ir, sava veida, novirzīt visu elementi sakārtoti sarakstā, lai es varētu 1028 00:55:59,030 --> 00:56:01,970 padarītu telpu numuru 2. 1029 00:56:01,970 --> 00:56:03,160 >> Tad es redzu numuru 6. 1030 00:56:03,160 --> 00:56:05,450 Es redzu, ka tas būtu pēc 5. 1031 00:56:05,450 --> 00:56:06,240 Tāpēc man to tur. 1032 00:56:06,240 --> 00:56:07,965 Un visbeidzot, es paskatos uz numuru 4. 1033 00:56:07,965 --> 00:56:11,030 , Un es ievēroju, ka vajadzētu būt starp 3 un 5. 1034 00:56:11,030 --> 00:56:14,870 Un tad es to tur un maiņa visi pārējie elementi. 1035 00:56:14,870 --> 00:56:16,120 Jēga? 1036 00:56:16,120 --> 00:56:17,880 1037 00:56:17,880 --> 00:56:19,150 >> Burbulis Kārtot. 1038 00:56:19,150 --> 00:56:25,730 Tātad burbulis kārtošanas ir būtībā tas, ko tu esi gatavojas do-- mēs to saucam burbulis 1039 00:56:25,730 --> 00:56:30,113 kārtošanas jo jūs iet cauri list-- tas ir tiešām labāk, ja es vienkārši parādīt 1040 00:56:30,113 --> 00:56:32,300 jums patīk this-- 1041 00:56:32,300 --> 00:56:35,030 un jūs gatavojas, lai salīdzinātu blakus numurus. 1042 00:56:35,030 --> 00:56:38,410 Un jūs gatavojas apmainīt savu pozīcijas, ja viņi nav 1043 00:56:38,410 --> 00:56:39,190 pareizā secībā. 1044 00:56:39,190 --> 00:56:42,570 >> Tātad būtībā, kas gatavojas notikt ir šeit, piemēram, 1045 00:56:42,570 --> 00:56:44,160 Jums ir 8 un 6. 1046 00:56:44,160 --> 00:56:47,270 Jūs zināt, ka šķiroto pasūtījums būs faktiski ir 6 un 5, vai ne? 1047 00:56:47,270 --> 00:56:49,540 Tātad jūs gatavojas apmainīt pasūtījumus. 1048 00:56:49,540 --> 00:56:51,370 Tad es redzu, 8 un 4 šeit. 1049 00:56:51,370 --> 00:56:52,250 Un man darīt to pašu. 1050 00:56:52,250 --> 00:56:53,400 Es swap vēlreiz. 1051 00:56:53,400 --> 00:56:55,070 Un, visbeidzot, 2 un 8. 1052 00:56:55,070 --> 00:56:56,670 Es arī mijmaiņas tiem. 1053 00:56:56,670 --> 00:57:01,690 >> To sauc Bubble Kārtot jo pēc Katrā no šīm iterācijas, patiesībā, 1054 00:57:01,690 --> 00:57:05,910 vislielākais numurs sarakstā saņem visu veids beigām sarakstā. 1055 00:57:05,910 --> 00:57:06,940 Vai tas ir jēga? 1056 00:57:06,940 --> 00:57:11,880 Tāpēc, ka tas tur pārnešana to un pārvietojot to pa labi. 1057 00:57:11,880 --> 00:57:14,440 >> Labi, tāpēc šī ir otrā atkārtojuma. 1058 00:57:14,440 --> 00:57:17,200 Tas būtu tas pats. 1059 00:57:17,200 --> 00:57:20,190 Es darīšu vienu swap un Pēc tam pēdējais. 1060 00:57:20,190 --> 00:57:23,290 Es, ka nav mijmaiņas darījumi un saraksts ir sakārtots. 1061 00:57:23,290 --> 00:57:27,460 Tātad Bubble Sort, mēs būtībā glabāt iet cauri sarakstam un pārnešana 1062 00:57:27,460 --> 00:57:32,310 lietas, kamēr es ievēroju, ka es to nedarīju jebkuri mijmaiņa dara, ka atkārtojuma, kas 1063 00:57:32,310 --> 00:57:34,270 nozīmē, ka saraksts jau ir sakārtots. 1064 00:57:34,270 --> 00:57:35,520 Jēga? 1065 00:57:35,520 --> 00:57:38,400 1066 00:57:38,400 --> 00:57:40,870 >> Parunāsim mazliet par darba laika. 1067 00:57:40,870 --> 00:57:45,165 Tātad jūs guys atcerēties Big O, Omega, un Theta? 1068 00:57:45,165 --> 00:57:49,290 1069 00:57:49,290 --> 00:57:50,990 Yeah? 1070 00:57:50,990 --> 00:57:53,070 OK, kas ir Big O, vispirms? 1071 00:57:53,070 --> 00:57:54,315 >> AUDITORIJA: [nedzirdama]. 1072 00:57:54,315 --> 00:57:59,070 >> LUCAS: Jā, to sauc sliktākajā gadījumā runtime, kas nozīmē tikai to, ka tā ir 1073 00:57:59,070 --> 00:58:03,470 cik daudz jūs sagaida programmu veikt, lai palaistu. 1074 00:58:03,470 --> 00:58:04,910 Tāpat kā, runājot of-- 1075 00:58:04,910 --> 00:58:06,660 Šajā case-- n. 1076 00:58:06,660 --> 00:58:09,150 Elementu skaits saraksts sliktākajā gadījumā. 1077 00:58:09,150 --> 00:58:12,520 Tāpat kā, sliktākajā iespējamā lietas. 1078 00:58:12,520 --> 00:58:17,100 >> Tātad burbulis Sort, piemēram, mums ir Big O no n laukumā. 1079 00:58:17,100 --> 00:58:20,580 Kāpēc mums ir kas? 1080 00:58:20,580 --> 00:58:24,716 Kāpēc Bubble Kārtot Big O n kvadrāts? 1081 00:58:24,716 --> 00:58:27,614 >> AUDITORIJA: [nedzirdama]. 1082 00:58:27,614 --> 00:58:35,670 >> LUCAS: Jā, tāpēc sliktākajā gadījumā būs ka man būs jādara n atkārtojumiem. 1083 00:58:35,670 --> 00:58:39,260 Tātad, katrs no atkārtojumiem būs celt lielāko elementu beigās 1084 00:58:39,260 --> 00:58:40,290 saraksta. 1085 00:58:40,290 --> 00:58:44,230 Tātad sliktākajā gadījumā ir tas, ka man ir darīt, ka lieta n reizes. 1086 00:58:44,230 --> 00:58:48,550 Un par katru no tiem laikiem, man ir do n mijmaiņas darījumus, jo man ir, lai salīdzinātu 1087 00:58:48,550 --> 00:58:49,870 katrs divi elementi. 1088 00:58:49,870 --> 00:58:53,730 Tātad, tas ir iemesls, kāpēc tas ir n kvadrātā tāpēc, ka tas ir n reizes n. 1089 00:58:53,730 --> 00:59:00,120 >> Tad izvēle veida ir arī n kvadrātveida jo katram atkārtojumam, man ir 1090 00:59:00,120 --> 00:59:02,650 apskatīt katru elementu sarakstā. 1091 00:59:02,650 --> 00:59:04,980 Un tad atrast mazākais, kas nozīmē, ka man ir 1092 00:59:04,980 --> 00:59:06,130 skatīties caur n elementiem. 1093 00:59:06,130 --> 00:59:11,750 Un man ir jādara, ka n reizes, jo Man ir, lai atlasītu visus n elementus. 1094 00:59:11,750 --> 00:59:18,273 >> Ievietošanas veida ir arī n kvadrātveida jo sliktākajā gadījumā būs 1095 00:59:18,273 --> 00:59:20,950 būt, viens, man ir ievietot n skaitļi, vai ne? 1096 00:59:20,950 --> 00:59:22,765 Tāpēc es jau zinu, ka es esmu gatavojas ir n atkārtojumiem. 1097 00:59:22,765 --> 00:59:25,466 1098 00:59:25,466 --> 00:59:29,840 Bet katram no šiem numuriem, ja man bija apskatīt visas numuriem 1099 00:59:29,840 --> 00:59:34,380 sakārtoti sarakstu un nodot to visu ceļu priekšā, ka būs n kvadrātveida 1100 00:59:34,380 --> 00:59:36,230 jo tas būs n reizes n vēlreiz. 1101 00:59:36,230 --> 00:59:38,280 Jēga? 1102 00:59:38,280 --> 00:59:41,512 Kas par omega? 1103 00:59:41,512 --> 00:59:42,886 >> AUDITORIJA: [nedzirdama]. 1104 00:59:42,886 --> 00:59:44,620 >> LUCAS: Tas ir labākais scenārijs. 1105 00:59:44,620 --> 00:59:48,810 Tātad, tas ir tāpat, jo daudz laikiem šķirošanas, labākais scenārijs ir 1106 00:59:48,810 --> 00:59:50,660 ja saraksts ir jau sakārtots. 1107 00:59:50,660 --> 00:59:52,670 Tātad jums nav īsti ir kaut ko darīt. 1108 00:59:52,670 --> 00:59:56,290 Burbulis Kārtot ir labākais scenārijs n. 1109 00:59:56,290 --> 00:59:58,820 Vai jūs guys zināt, kāpēc? 1110 00:59:58,820 --> 01:00:00,620 >> AUDITORIJA: [nedzirdama]. 1111 01:00:00,620 --> 01:00:05,640 >> LUCAS: Jā, ja jums sekot vai dati deva bija kādi mijmaiņas darījumus vai 1112 01:00:05,640 --> 01:00:10,533 nē, ja jums ir kaut kas, piemēram, iestatīt taisnība, ja tur bija atkārtojuma, ja 1113 01:00:10,533 --> 01:00:15,140 saraksts jau ir sakārtots, būtībā, kas notiek varētu notikt, ir es esmu gatavojas 1114 01:00:15,140 --> 01:00:17,890 mēģināt apmainīt katru divas blakus elementi. 1115 01:00:17,890 --> 01:00:19,920 Es esmu gatavojas, lai redzētu, ka nav mijmaiņas darījumi. 1116 01:00:19,920 --> 01:00:21,230 Un es vienkārši atgriezties uzreiz. 1117 01:00:21,230 --> 01:00:24,240 >> Tātad, tas nozīmē, ka man tikko bija iet cauri saraksta vienu reizi. 1118 01:00:24,240 --> 01:00:28,990 Tātad, tas ir n, jo es izskatos pie n elementiem. 1119 01:00:28,990 --> 01:00:30,930 Kāpēc izvēle kārtot n kvadrāts? 1120 01:00:30,930 --> 01:00:35,150 1121 01:00:35,150 --> 01:00:45,520 >> Jā, pat tad, ja saraksts ir sakārtots, lai katru atkārtojuma atlases veida, es 1122 01:00:45,520 --> 01:00:47,590 ir izvēlēties minimālo elementu. 1123 01:00:47,590 --> 01:00:49,980 Tātad tas nozīmē, ka man ir, lai apskatīt visos elementiem nešķiroti 1124 01:00:49,980 --> 01:00:53,350 uzskaitīt un atrast minimumu par katru atkārtojuma. 1125 01:00:53,350 --> 01:00:54,600 Vai tas ir jēga? 1126 01:00:54,600 --> 01:00:56,880 1127 01:00:56,880 --> 01:01:04,690 >> Ievietošana un zobens ir n, jo lieta, ka es cenšos, lai ievietotu 1128 01:01:04,690 --> 01:01:09,320 numurus un visus numurus, kad es mēģiniet ievietot tos, es redzu, ka viņi 1129 01:01:09,320 --> 01:01:10,510 atrodas pareizā stāvoklī. 1130 01:01:10,510 --> 01:01:15,120 Man nav, lai iet pārbaudīt visu otras numuri ar nešķirotiem sarakstā. 1131 01:01:15,120 --> 01:01:17,170 Tātad, tāpēc tas būs n. 1132 01:01:17,170 --> 01:01:19,480 Jēga? 1133 01:01:19,480 --> 01:01:21,035 Un kas ir teta? 1134 01:01:21,035 --> 01:01:23,410 >> AUDITORIJA: [nedzirdama]. 1135 01:01:23,410 --> 01:01:24,380 >> LUCAS: Kas, žēl? 1136 01:01:24,380 --> 01:01:24,960 Saku vēlreiz. 1137 01:01:24,960 --> 01:01:25,666 >> AUDITORIJA: [nedzirdama]. 1138 01:01:25,666 --> 01:01:26,490 >> LUCAS: Tieši tā. 1139 01:01:26,490 --> 01:01:31,280 Tātad jūs varat redzēt, ka tikai izvēle glabājas sapludināšana kārtošanas ir thetas. 1140 01:01:31,280 --> 01:01:39,920 Un tas ir tāpēc, ka jums ir tikai teta ja abas Big O un omega ir vienādi. 1141 01:01:39,920 --> 01:01:41,520 OK. 1142 01:01:41,520 --> 01:01:44,210 Un, visbeidzot, apvienot veida ir log n. 1143 01:01:44,210 --> 01:01:48,910 >> Un tad, kā Dan teica, sapludināšana kārtošanas ir veida, piemēram, tādā pašā veidā, ka 1144 01:01:48,910 --> 01:01:50,320 jūs bināro meklēšanu. 1145 01:01:50,320 --> 01:01:53,530 Tātad jūs saņemsiet sarakstu. 1146 01:01:53,530 --> 01:01:55,170 Un jūs gatavojas samazināt uz pusi. 1147 01:01:55,170 --> 01:02:00,580 Un tad jūs samazināt tos mazākās daļās. 1148 01:02:00,580 --> 01:02:01,730 Un tad jūs tos apvienot. 1149 01:02:01,730 --> 01:02:02,960 Jūs guys atcerēties, ka, labi? 1150 01:02:02,960 --> 01:02:04,960 OK, kā viņš saka. 1151 01:02:04,960 --> 01:02:08,330 >> Labi, norādes. 1152 01:02:08,330 --> 01:02:11,078 Tātad, kas ir rādītājs? 1153 01:02:11,078 --> 01:02:12,050 >> AUDITORIJA: [nedzirdama]. 1154 01:02:12,050 --> 01:02:12,820 >> LUCAS: adrese. 1155 01:02:12,820 --> 01:02:13,720 OK. 1156 01:02:13,720 --> 01:02:18,530 Es zinu, ka Deivids parāda ķekars videoklipi Binky un lietas norādot 1157 01:02:18,530 --> 01:02:19,080 otru. 1158 01:02:19,080 --> 01:02:22,960 Bet man patīk domāt par norādes par vienkāršu adresi. 1159 01:02:22,960 --> 01:02:26,110 Tātad, tas ir mainīgais, kas notiek uzglabāt adresi. 1160 01:02:26,110 --> 01:02:31,940 >> Tātad, tas ir tikai šī īpašā mainīgais ka ir četri baiti. 1161 01:02:31,940 --> 01:02:36,550 Atcerieties, ka rādītājs uz kaut ko ir vienmēr četri baiti ilgi mūsu 32-bit 1162 01:02:36,550 --> 01:02:39,370 mašīna tik gadījumā ierīce. 1163 01:02:39,370 --> 01:02:41,920 1164 01:02:41,920 --> 01:02:47,050 Un tas tikai ir vietas ir mainīgs iekšpusē no tā. 1165 01:02:47,050 --> 01:02:50,240 >> Labi, tāpēc tur ir šī atmiņa, būtībā. 1166 01:02:50,240 --> 01:02:57,420 Tātad katrs bloks atmiņas tiešām ir Etiķete, kas ir adrese 1167 01:02:57,420 --> 01:02:58,890 slotty atmiņu. 1168 01:02:58,890 --> 01:03:02,370 Tātad tas nozīmē, ka es varētu būt rādītājs, kas vērsta uz 1169 01:03:02,370 --> 01:03:03,380 jebkura no šīm adresēm. 1170 01:03:03,380 --> 01:03:09,930 Tātad, iemesls, kāpēc mēs izmantosim norādes ir ja man ir atcerēties atrašanās vietu 1171 01:03:09,930 --> 01:03:12,300 ka īpaša mainīgais ir atmiņas. 1172 01:03:12,300 --> 01:03:16,560 >> Un jūs guys atcerēties, ka viens no tiem gadījumi bija, ja man ir funkcija 1173 01:03:16,560 --> 01:03:20,820 ja man ir tiešām gribu, lai jūs swap par reals, es tiešām 1174 01:03:20,820 --> 01:03:22,110 ir jānosūta rādītāju. 1175 01:03:22,110 --> 01:03:23,460 Ne mainīgais. 1176 01:03:23,460 --> 01:03:25,200 Vai jūs guys atcerēties, ka? 1177 01:03:25,200 --> 01:03:26,450 Atšķirība between-- 1178 01:03:26,450 --> 01:03:33,350 1179 01:03:33,350 --> 01:03:34,120 kāds ir nosaukums? 1180 01:03:34,120 --> 01:03:36,010 Zvanot pa vērtības un aicinot ar norādi, vai ne? 1181 01:03:36,010 --> 01:03:36,840 >> Labi, jā. 1182 01:03:36,840 --> 01:03:38,330 Tāpēc zvaniet pēc vērtības. 1183 01:03:38,330 --> 01:03:43,570 Kad jūs vienkārši nosūtīt mainīgo darbotos jūs vienkārši nosūtot vērtību. 1184 01:03:43,570 --> 01:03:45,610 Tātad jūs faktiski nosūtot kopija mainīgā. 1185 01:03:45,610 --> 01:03:49,720 Un jūsu programma nevarēja aprūpes mazāk par to, ja pats mainīgais faktiski 1186 01:03:49,720 --> 01:03:51,650 padara kopiju. 1187 01:03:51,650 --> 01:03:56,330 >> Un zvanot pa norāde nozīmē, ka Es tiešām nosūtot kopiju 1188 01:03:56,330 --> 01:03:57,550 rādītāju uz šo mainīgo. 1189 01:03:57,550 --> 01:04:00,970 Tātad, tas nozīmē, ka es esmu nosūtot izvietojums šo mainīgo. 1190 01:04:00,970 --> 01:04:04,440 Tāpēc sajust man ir vietu mainīgs, kad es zvanu funkciju 1191 01:04:04,440 --> 01:04:09,700 ar norādes, es esmu spējīgs reāli mainītu datus, kas bija galvenais. 1192 01:04:09,700 --> 01:04:12,050 Jēga? 1193 01:04:12,050 --> 01:04:17,560 >> Kaut gan, rādītājs ir kopija, rādītājs joprojām ir reālu adresi 1194 01:04:17,560 --> 01:04:20,090 mainīgais, ka es vēlos mainīt. 1195 01:04:20,090 --> 01:04:21,920 Jēga? 1196 01:04:21,920 --> 01:04:24,290 >> Tā radot norādes. 1197 01:04:24,290 --> 01:04:28,410 Atcerieties, rādītāju vienmēr ir tipa, ka tas ir norādot 1198 01:04:28,410 --> 01:04:29,890 pozīcijā un pēc tam zvaigzni. 1199 01:04:29,890 --> 01:04:31,030 Un tad jūs nodot vārdu. 1200 01:04:31,030 --> 01:04:35,765 Tāpēc atcerieties, ka, ja jums ir kāda zvaigzne, tas ir kā rādītāju uz 1201 01:04:35,765 --> 01:04:38,990 ka neatkarīgi mainīgais ierakstiet, ka jums bija. 1202 01:04:38,990 --> 01:04:42,850 >> Tātad šeit zvaigzne, piemēram, tas ir rādītājs un skaitlis. 1203 01:04:42,850 --> 01:04:47,680 Un tad char zvaigzne ir rādītājs char zvaigzne un tā tālāk. 1204 01:04:47,680 --> 01:04:47,960 Yeah? 1205 01:04:47,960 --> 01:04:52,710 >> AUDITORIJA: Ko darīt, ja mums ir rādītājs n zvaigzne x. 1206 01:04:52,710 --> 01:04:55,255 Es zinu, ka rada rādītāju uz x. 1207 01:04:55,255 --> 01:04:59,432 Vai tas arī paziņot x skaitlim? 1208 01:04:59,432 --> 01:05:05,170 >> LUCAS: OK, tad, kad jūs sakāt n zvaigzne x, jūs neesat izveidot rādītāju uz 1209 01:05:05,170 --> 01:05:06,000 mainīgais x. 1210 01:05:06,000 --> 01:05:08,170 Jūs veidojat rādītāju nosaukts x. 1211 01:05:08,170 --> 01:05:09,396 >> AUDITORIJA: [nedzirdama]. 1212 01:05:09,396 --> 01:05:14,250 >> LUCAS: Tātad, kad es saku n zvaigzne x, es esmu sakot, hey, atmiņā, es esmu gatavojas 1213 01:05:14,250 --> 01:05:16,390 saņemt vienu no šiem trīs kastes. 1214 01:05:16,390 --> 01:05:20,750 Un es esmu gatavojas teikt, ka būs X, kas ir 1215 01:05:20,750 --> 01:05:22,000 būs rādītāju. 1216 01:05:22,000 --> 01:05:26,860 1217 01:05:26,860 --> 01:05:30,640 Un kaut ko interesantu par norādes ir tā, ka mēs sakām, ka viņiem ir 1218 01:05:30,640 --> 01:05:32,620 4 baiti uz 32 bitu mašīna. 1219 01:05:32,620 --> 01:05:36,320 Un iemesls tam ir tāpēc, ka 4 baiti ir 32-bitu. 1220 01:05:36,320 --> 01:05:40,490 >> Un iekārtas, kas ir 64 biti faktiski ir norādes adreses 1221 01:05:40,490 --> 01:05:43,480 kas ir 64 bitus garš. 1222 01:05:43,480 --> 01:05:49,820 Tātad, tas tikai nozīmē, ka izmērs adreses mašīna ir atšķirīgs. 1223 01:05:49,820 --> 01:05:52,270 >> Tik Atsauču un dereferencing. 1224 01:05:52,270 --> 01:05:54,310 Ir divi operatori, kas jūs guys vajadzētu atcerēties. 1225 01:05:54,310 --> 01:05:55,450 Pirmais ir Ampersand. 1226 01:05:55,450 --> 01:05:56,810 Otrais ir zvaigzne. 1227 01:05:56,810 --> 01:06:05,060 Nesaņem sajaukt ar šo zvaigzni, un tas STAR prasībām, jo ​​atceros, ka 1228 01:06:05,060 --> 01:06:06,950 šajā gadījumā, jums ir n zvaigzne. 1229 01:06:06,950 --> 01:06:08,700 >> Tas ir tāpat kā visa lieta kopā. 1230 01:06:08,700 --> 01:06:10,720 Nav n telpa zvaigzne. 1231 01:06:10,720 --> 01:06:12,070 Tātad, tas nozīmē, ka tas ir veids. 1232 01:06:12,070 --> 01:06:14,870 Atcerieties, ka, ja jums ir mainīgais zvaigzne, tu esi 1233 01:06:14,870 --> 01:06:16,230 runājam par veidu. 1234 01:06:16,230 --> 01:06:20,540 >> Ja jums ir tikai zvaigzne un tad nosaukums mainīgo, tas nozīmē, ka 1235 01:06:20,540 --> 01:06:24,100 jūs dereferencing rādītāju, kas nozīmē, ka jūs meklējat pie 1236 01:06:24,100 --> 01:06:28,290 rādītājs, atrast adresi, tas ir norādot uz, dodoties uz minēto adresi, 1237 01:06:28,290 --> 01:06:30,850 un meklē, kad jums ir tur. 1238 01:06:30,850 --> 01:06:34,310 Tāpēc es saku saviem studentiem, ka, ja jums ir zvaigzne, jums vajadzētu domāt, ka tā ir 1239 01:06:34,310 --> 01:06:36,850 saīsinājums satura. 1240 01:06:36,850 --> 01:06:39,770 >> Tātad, ja jums ir rādītājs, un tu do zvaigzne rādītāju, tas ir 1241 01:06:39,770 --> 01:06:41,720 satura rādītāja. 1242 01:06:41,720 --> 01:06:44,580 Tātad jūs iet, lai neatkarīgi no tā, norādot uz un apskatīt nemainīgu saturu. 1243 01:06:44,580 --> 01:06:47,730 Un Ampersand ir tāds pats lieta kā adresi. 1244 01:06:47,730 --> 01:06:52,560 >> Tātad, ja man ir mainīgais A--, piemēram, pieņemsim teikt, ka man bija int vienāds 3-- 1245 01:06:52,560 --> 01:06:56,900 ja es gribu, lai atrastu adresi, kas mainīgais atmiņas, es varu tikai darīt 1246 01:06:56,900 --> 01:06:58,240 Ampersand. 1247 01:06:58,240 --> 01:07:00,280 Tātad, tas ir adrese. 1248 01:07:00,280 --> 01:07:01,530 Jēga? 1249 01:07:01,530 --> 01:07:03,790 1250 01:07:03,790 --> 01:07:05,040 >> Tātad, šeit ir piemērs. 1251 01:07:05,040 --> 01:07:08,370 1252 01:07:08,370 --> 01:07:11,530 Šis ir pazudis int b un int c. 1253 01:07:11,530 --> 01:07:16,520 Tātad int līdzvērtīga 3 nozīmē, ka Es iešu uz atmiņu. 1254 01:07:16,520 --> 01:07:19,870 Un es esmu gatavojas, lai atrastu slota un nodot skaits 3 šeit. 1255 01:07:19,870 --> 01:07:22,200 >> Un tad int b vienāds 4. 1256 01:07:22,200 --> 01:07:23,100 Es esmu gatavojas darīt to pašu. 1257 01:07:23,100 --> 01:07:25,840 Iet uz atmiņu un nodot numuru 4 vienā no kastes. 1258 01:07:25,840 --> 01:07:27,100 Un int vienāds ar 5. 1259 01:07:27,100 --> 01:07:29,740 Atrast citu lodziņu un nodot vairākus 5. 1260 01:07:29,740 --> 01:07:36,160 >> Tātad, kas ir šī līnija dari? n zvaigzne pa vienāds aizvieto & zīmes a. 1261 01:07:36,160 --> 01:07:37,800 Tātad, pirmkārt, n zvaigzne pa. 1262 01:07:37,800 --> 01:07:39,050 Ko tas dara? 1263 01:07:39,050 --> 01:07:40,930 1264 01:07:40,930 --> 01:07:42,298 >> AUDITORIJA: [nedzirdama]. 1265 01:07:42,298 --> 01:07:47,890 >> LUCAS: Jā, tāpēc n zvaigzne gadā, pirmkārt, deklarē rādītāju sauc pa. 1266 01:07:47,890 --> 01:07:53,720 Un tad tas ir piešķirot vērtību ka rādītājs ir adrese. 1267 01:07:53,720 --> 01:07:55,790 Tik Ampersand. 1268 01:07:55,790 --> 01:07:58,510 Tad, ja man zvaigzne PB, kas ir zvaigzne pb? 1269 01:07:58,510 --> 01:08:02,418 1270 01:08:02,418 --> 01:08:03,150 >> Ak, piedodiet. 1271 01:08:03,150 --> 01:08:06,330 Tas ir arī pazudis. n zvaigzne pb. 1272 01:08:06,330 --> 01:08:07,905 Es domāju zvaigzne pc. 1273 01:08:07,905 --> 01:08:11,200 Es esmu tik žēl. 1274 01:08:11,200 --> 01:08:11,940 Tas ir tas pats. 1275 01:08:11,940 --> 01:08:16,408 Bet tagad es esmu labs ar radot rādītāju B un pēc tam rādītāju uz c. 1276 01:08:16,408 --> 01:08:16,886 Yeah? 1277 01:08:16,886 --> 01:08:18,136 >> Mērķauditorija: [dzirdams]? 1278 01:08:18,136 --> 01:08:25,490 1279 01:08:25,490 --> 01:08:26,670 >> LUCAS: Jā. 1280 01:08:26,670 --> 01:08:32,630 Tātad, ja jums iet uz atmiņu un doties uz kaste, kas ir apzīmējums, lai pa, 1281 01:08:32,630 --> 01:08:37,149 jūs tiešām gatavojas skat adreses. 1282 01:08:37,149 --> 01:08:38,399 OK? 1283 01:08:38,399 --> 01:08:42,970 1284 01:08:42,970 --> 01:08:43,300 Yeah? 1285 01:08:43,300 --> 01:08:45,605 >> Mērķauditorija: [dzirdams]? 1286 01:08:45,605 --> 01:08:49,260 >> LUCAS: Jā, rādītājs ir adrese. 1287 01:08:49,260 --> 01:08:50,120 Nekad aizmirst, ka. 1288 01:08:50,120 --> 01:08:52,800 Tas ir tāpat kā vissvarīgākais daļa par norādes. 1289 01:08:52,800 --> 01:08:56,180 Tur uzglabātu un adreses uz kādu mainīgo. 1290 01:08:56,180 --> 01:08:56,890 Kaut kas cits? 1291 01:08:56,890 --> 01:08:58,370 Jebkādi citi jautājumi? 1292 01:08:58,370 --> 01:08:59,189 OK. 1293 01:08:59,189 --> 01:09:00,399 >> Tik Pointers un masīvi. 1294 01:09:00,399 --> 01:09:08,189 Atcerieties, ka tad, kad man int masīvs 3, būtībā, ko es daru, ir, es esmu, veida 1295 01:09:08,189 --> 01:09:12,779 gada, deklarējot rādītājs. 1296 01:09:12,779 --> 01:09:18,960 Tik masīvs ir veids kā rādītāju uz īpašu vietu atmiņā, kurā es 1297 01:09:18,960 --> 01:09:21,999 piešķirti trīs slots par veselu skaitļu. 1298 01:09:21,999 --> 01:09:23,430 Vai tas ir jēga? 1299 01:09:23,430 --> 01:09:30,250 >> Tātad, kad man int masīvs 3, ko es esmu darot, būtībā, ir radīt trīs 1300 01:09:30,250 --> 01:09:31,479 slots atmiņā. 1301 01:09:31,479 --> 01:09:33,899 Tāpēc es vienkārši atrast trīs slots atmiņā. 1302 01:09:33,899 --> 01:09:38,810 Tātad, ja es daru, tad, zvaigzne masīvs, to būtībā nozīmē saturu masīva, 1303 01:09:38,810 --> 01:09:46,180 kas nozīmē, ka es izdzēst rādītāju, man iet uz šo vietu, kas tas ir, kas liecinātu, 1304 01:09:46,180 --> 01:09:47,939 un man nodot numur viens. 1305 01:09:47,939 --> 01:09:53,729 >> Un tad, ja man zvaigžņu masīvs plus 1, tas ir tas pats, kas dara masīvs 1306 01:09:53,729 --> 01:09:59,690 stiprinājums viens, kas nozīmē tikai to, es eju uz vieta, ka tas norādot uz. 1307 01:09:59,690 --> 01:10:03,000 Un tad plus 1 markas me pārslēgtos par vienu pozīciju. 1308 01:10:03,000 --> 01:10:06,510 Tad es eju uz šo pozīciju, faktiski, un nodot numuru divi. 1309 01:10:06,510 --> 01:10:10,900 >> Un tad, beidzot, kad man masīvs plus 2, es eju uz to, kur 1310 01:10:10,900 --> 01:10:11,825 Array rāda. 1311 01:10:11,825 --> 01:10:14,690 Un tad es eju uz atmiņas blokiem. 1312 01:10:14,690 --> 01:10:16,240 Un tad es nodot skaits trīs šeit. 1313 01:10:16,240 --> 01:10:16,600 Yeah? 1314 01:10:16,600 --> 01:10:21,400 >> AUDITORIJA: Tātad zvaigzne masīvs ir vienkārši sakot ļoti pirmo punktu. 1315 01:10:21,400 --> 01:10:25,090 Un jūs varat pievienot 1, tikai tāpēc, ka mēs esam tikai patiešām 1316 01:10:25,090 --> 01:10:27,295 atsaucoties uz šo pirmo adresi. 1317 01:10:27,295 --> 01:10:28,545 >> LUCAS: Jā. 1318 01:10:28,545 --> 01:10:32,720 1319 01:10:32,720 --> 01:10:36,020 Kāpēc mēs, piemēram, saka masīvs 0, masīvs 1, un masīvs 2? 1320 01:10:36,020 --> 01:10:38,970 1321 01:10:38,970 --> 01:10:42,790 Es saku, kāpēc jūs darāt 0, 1, 2, 3, nevis 1, 2, 3? 1322 01:10:42,790 --> 01:10:46,550 Viens no iemesliem ir tas, viens, datoru programmētāji dod priekšroku, lai sāktu 1323 01:10:46,550 --> 01:10:47,750 skaitot no 0. 1324 01:10:47,750 --> 01:10:52,370 Divi ir tāpēc, ka tad, kad jūs masīvs 0, tas ir tas pats, kas dara masīvs 1325 01:10:52,370 --> 01:10:56,330 plus 0, kas nozīmē, es eju šī nostāja, un man nav 1326 01:10:56,330 --> 01:10:59,320 izlaist visas atmiņas blokus. 1327 01:10:59,320 --> 01:11:01,750 Tāpēc man nav pārvietot visas atmiņas bloku. 1328 01:11:01,750 --> 01:11:02,015 Yeah? 1329 01:11:02,015 --> 01:11:03,265 >> Mērķauditorija: [dzirdams]? 1330 01:11:03,265 --> 01:11:05,928 1331 01:11:05,928 --> 01:11:12,670 >> LUCAS: Tātad viņa jautā, kas ir atšķirība starp dara 1332 01:11:12,670 --> 01:11:14,000 tas vai darot malloc. 1333 01:11:14,000 --> 01:11:17,550 Viena no atšķirībām ir tā, ka int masīvs 3 ir radīt 1334 01:11:17,550 --> 01:11:19,260 masīvs uz skursteņa. 1335 01:11:19,260 --> 01:11:23,080 Un, kad es darīt malloc, to rada uz kaudzes. 1336 01:11:23,080 --> 01:11:25,250 Vai tas ir jēga? 1337 01:11:25,250 --> 01:11:28,870 >> Tātad, kā tas malloc faktiski strādā? 1338 01:11:28,870 --> 01:11:32,245 Tad kāpēc mēs pat nepieciešams izmantot malloc? 1339 01:11:32,245 --> 01:11:35,730 1340 01:11:35,730 --> 01:11:39,700 Jūsu sastādītājs veida skaitļu out all mainīgie, kas jums deklarētās. 1341 01:11:39,700 --> 01:11:44,040 Un viņš rada telpu visiem no tiem kaudze. 1342 01:11:44,040 --> 01:11:47,180 Tātad visiem jūsu mainīgo dodas būs kaut kur kaudze. 1343 01:11:47,180 --> 01:11:49,460 Tātad, šeit ir vides mainīgos. 1344 01:11:49,460 --> 01:11:53,850 >> Tātad būtībā, vieta tiem mainīgajiem atmiņā tiek piešķirti 1345 01:11:53,850 --> 01:11:55,080 apkopot laiku. 1346 01:11:55,080 --> 01:11:58,790 Tātad, tas nozīmē, ka jūsu dators ir zināt visu šo mainīgo 1347 01:11:58,790 --> 01:11:59,790 iepriekš. 1348 01:11:59,790 --> 01:12:02,500 Tas nav nepieciešams zināt, kāda vērtība jūs gatavojas likt tiem. 1349 01:12:02,500 --> 01:12:05,490 Bet tas ir nepieciešams zināt, kā daudz atmiņas jums nepieciešams. 1350 01:12:05,490 --> 01:12:09,380 >> Bet tagad pieņemsim, ka, piemēram, jūs radot masīvu, vai, ņemot 1351 01:12:09,380 --> 01:12:13,430 string, ka jūs lietojat no lietotāja. 1352 01:12:13,430 --> 01:12:17,300 Jūs nezināt, cik ilgi string būs, piem. 1353 01:12:17,300 --> 01:12:20,600 Tātad, jūs nezināt, cik tieši Atmiņas bloki jums piešķirt, vai ne? 1354 01:12:20,600 --> 01:12:24,120 >> Tātad, tas nav īsti jēgas tu teikt likt 100 rakstzīmes. 1355 01:12:24,120 --> 01:12:26,420 Un tad, ja lietotājs raksta 150? 1356 01:12:26,420 --> 01:12:27,670 Jūs esat būs ieskrūvē. 1357 01:12:27,670 --> 01:12:30,160 1358 01:12:30,160 --> 01:12:34,620 >> Vārdu sakot, jūs varat būt pārliecināti par to, kā daudz atmiņas jums ir nepieciešams piešķirt 1359 01:12:34,620 --> 01:12:35,960 kad jūs sastādīt programmu. 1360 01:12:35,960 --> 01:12:38,240 Jūs tikai zināt, ka palaist laiku. 1361 01:12:38,240 --> 01:12:39,950 Tātad, tas ir iemesls, kāpēc jums ir kaudze. 1362 01:12:39,950 --> 01:12:47,610 Tātad kaudze nāksies atmiņu ka jūs piešķirot laikā 1363 01:12:47,610 --> 01:12:50,810 ilgums programma darbojas. 1364 01:12:50,810 --> 01:12:55,780 >> Vārdu sakot, ja jūs darīt malloc, ko jūs darāt novirza atmiņu 1365 01:12:55,780 --> 01:13:00,160 runtime, kas nozīmē, ka jūs esat Lemjot tiesības tajā brīdī, ka jums 1366 01:13:00,160 --> 01:13:02,670 būtu šo atmiņu. 1367 01:13:02,670 --> 01:13:04,210 Tātad, tas ir, kad jūs tā piešķiršanu. 1368 01:13:04,210 --> 01:13:06,430 Vai tas ir jēga? 1369 01:13:06,430 --> 01:13:11,690 >> Līdz ar to atcerēties, kaudze ir mainīgie , kas ir izveidoti uz kompilēšanas laikā. 1370 01:13:11,690 --> 01:13:14,560 Un tad kaudze ir mainīgie , kas tiek veidots kā jums iet 1371 01:13:14,560 --> 01:13:15,600 ar malloc, piemēram. 1372 01:13:15,600 --> 01:13:16,850 >> Mērķauditorija: [dzirdams]? 1373 01:13:16,850 --> 01:13:19,179 1374 01:13:19,179 --> 01:13:24,340 >> LUCAS: Tātad GetString ir saukšu malloc. 1375 01:13:24,340 --> 01:13:26,710 Ļaujiet man runāt par malloc, un Es paskaidrošu GetString. 1376 01:13:26,710 --> 01:13:32,000 Tātad malloc ir pats kā atmiņas sadalījumu. 1377 01:13:32,000 --> 01:13:34,600 Tātad, tas notiek, lai sadalītu atmiņas uz kaudzes. 1378 01:13:34,600 --> 01:13:40,010 Un tas notiek, lai atgrieztos rādītāju uz ja šis atmiņa tika piešķirti at. 1379 01:13:40,010 --> 01:13:43,090 >> Tātad, kad jūs do-- 1380 01:13:43,090 --> 01:13:44,910 šeit example-- 1381 01:13:44,910 --> 01:13:45,830 n zvaigzne rādītājs. 1382 01:13:45,830 --> 01:13:50,520 Un tad rādītājs ir vienāds ar malloc izmērs collu reizes 10. 1383 01:13:50,520 --> 01:13:52,110 Es veidoju rādītāju. 1384 01:13:52,110 --> 01:13:59,020 Un tad es esmu piešķirot šo rādītāju uz vērtība rādītāja ka malloc 1385 01:13:59,020 --> 01:13:59,680 dod man. 1386 01:13:59,680 --> 01:14:04,150 >> Tāpēc es esmu lūdzot malloc jūs varat piešķirt vieta 10 veselu skaitļu. 1387 01:14:04,150 --> 01:14:05,390 Tas, ko tā saka. 1388 01:14:05,390 --> 01:14:09,020 Un malloc dod man atpakaļ rādītāju uz šo vietu. 1389 01:14:09,020 --> 01:14:11,460 Jēga? 1390 01:14:11,460 --> 01:14:12,270 OK. 1391 01:14:12,270 --> 01:14:17,940 Es Un GetString ir, būtībā, darot zvanīt uz malloc, lai jūs varētu piešķirt 1392 01:14:17,940 --> 01:14:21,680 atmiņas laikā Runtime. 1393 01:14:21,680 --> 01:14:26,460 >> Vienmēr atcerieties, lai pārbaudītu null jo malloc gatavojas atgriezties null 1394 01:14:26,460 --> 01:14:28,200 ja tā nevar piešķirt atmiņu. 1395 01:14:28,200 --> 01:14:31,660 Pieņemsim, ka jūs lūgt smieklīgs atmiņas apjomu. 1396 01:14:31,660 --> 01:14:33,950 Jūsu dators nebūs spēj piešķirt, ka daudz. 1397 01:14:33,950 --> 01:14:36,410 >> Tik malloc ir tikai gatavojas atgriezties null. 1398 01:14:36,410 --> 01:14:42,210 Tāpēc vienmēr atcerieties, lai pārbaudītu, vai rādītājs, ka jums no malloc ir 1399 01:14:42,210 --> 01:14:45,640 null vai nav, jo, ja tā ir, jūs varētu būt dereferencing rādītāju un 1400 01:14:45,640 --> 01:14:48,340 izraisot sānu kļūdas. 1401 01:14:48,340 --> 01:14:50,930 Un visbeidzot, neaizmirstiet savu brīvo atmiņu. 1402 01:14:50,930 --> 01:14:57,800 1403 01:14:57,800 --> 01:15:00,560 >> Malloc rada atmiņu kaudzi. 1404 01:15:00,560 --> 01:15:03,436 Un jums ir, lai atbrīvotu atmiņu pirms programmas beigām. 1405 01:15:03,436 --> 01:15:05,370 Labi, ka viss ir par mani. 1406 01:15:05,370 --> 01:15:07,900 Atvainojiet, Rob. 1407 01:15:07,900 --> 01:15:07,950 Paldies. 1408 01:15:07,950 --> 01:15:09,878 >> [Aplausi] 1409 01:15:09,878 --> 01:15:12,679 >> LUCAS: Kādi pēdējie jautājumi pirms Rob nāk? 1410 01:15:12,679 --> 01:15:13,138 Nē? 1411 01:15:13,138 --> 01:15:13,597 Yeah? 1412 01:15:13,597 --> 01:15:15,892 >> AUDITORIJA: es neredzēju tas viens tiešsaistē. 1413 01:15:15,892 --> 01:15:17,269 Vai esat augšupielādējis to vēl? 1414 01:15:17,269 --> 01:15:19,106 >> LUCAS: Es domāju, ka Deivs ir augšupielādējot to drīz. 1415 01:15:19,106 --> 01:15:19,880 >> DAVE: Tas būs publicēta. 1416 01:15:19,880 --> 01:15:20,310 >> LUCAS: Tas būs tiešsaistē. 1417 01:15:20,310 --> 01:15:21,175 >> AUDITORIJA: Tas ir atkarīgs. 1418 01:15:21,175 --> 01:15:22,090 >> LUCAS: Tas ir atkarīgs? 1419 01:15:22,090 --> 01:15:23,157 OK. 1420 01:15:23,157 --> 01:15:23,644 Yeah? 1421 01:15:23,644 --> 01:15:27,053 >> Mērķauditorija: [dzirdams]? 1422 01:15:27,053 --> 01:15:30,285 >> LUCAS: Jā, jums vajadzētu atbrīvot visus atmiņa, kas ir likts uz kaudzes. 1423 01:15:30,285 --> 01:15:31,535 >> Mērķauditorija: [dzirdams]? 1424 01:15:31,535 --> 01:15:34,518 1425 01:15:34,518 --> 01:15:36,160 >> LUCAS: Jā. 1426 01:15:36,160 --> 01:15:39,980 Jebkurā laikā, ka jums ir kultūras malloc, Jums ir jābūt kultūra bezmaksas 1427 01:15:39,980 --> 01:15:42,640 pēc tam, jums jāpārtrauc lietot šo mainīgo. 1428 01:15:42,640 --> 01:15:44,800 Tik malloc un bezmaksas ir vienmēr kopā. 1429 01:15:44,800 --> 01:15:45,410 Viņu labākie draugi. 1430 01:15:45,410 --> 01:15:46,720 Jā. 1431 01:15:46,720 --> 01:15:47,970 Aplaupīt? 1432 01:15:47,970 --> 01:15:55,595 1433 01:15:55,595 --> 01:15:56,850 >> ROB: Es iešu ātri. 1434 01:15:56,850 --> 01:16:00,466 Un arī video tiks safasēti. 1435 01:16:00,466 --> 01:16:01,716 Man ir mic par. 1436 01:16:01,716 --> 01:16:24,060 1437 01:16:24,060 --> 01:16:26,230 >> Labi, tāpēc šonedēļ pieci sīkumi. 1438 01:16:26,230 --> 01:16:27,970 Pirmā lieta, kas mums ir, ir kaudze. 1439 01:16:27,970 --> 01:16:33,390 Tāpēc atcerieties, ka tur ir tikai viens kaudze kadri aktīvo funkciju zvanu. 1440 01:16:33,390 --> 01:16:34,710 Mēs redzam, ka sekundē. 1441 01:16:34,710 --> 01:16:37,850 , Kā arī atcerēties to, kas patiesībā notiek Katrā kaudze rāmī ir būs 1442 01:16:37,850 --> 01:16:41,880 vietējās mainīgie mūsu funkcijas, argumenti, kas tiek nodotas uz mūsu 1443 01:16:41,880 --> 01:16:43,880 funkcijas, kopā ar pāris citas lietas, jums nav īsti 1444 01:16:43,880 --> 01:16:45,260 jāuztraucas par. 1445 01:16:45,260 --> 01:16:50,950 >> Tātad, šeit ir piemērs programma, kurā, paziņojums, galvenais ir printfing atgriešanos 1446 01:16:50,950 --> 01:16:52,830 vērtība foo 4. 1447 01:16:52,830 --> 01:16:57,930 foo ir tikai gatavojas atgriezties vērtība bar 4 komats 6. 1448 01:16:57,930 --> 01:17:02,380 Un bar gatavojas noteikt dažas vietējās mainīgais n ir vienāds ar 4 reizes 6. 1449 01:17:02,380 --> 01:17:03,920 Un pēc tam atgriezties n. 1450 01:17:03,920 --> 01:17:09,130 >> Tātad, pieņemsim apskatīt kaudze visā faktiskais atkārtojuma šīs programmas. 1451 01:17:09,130 --> 01:17:10,500 Tātad tur ir apakšā mūsu kaudze. 1452 01:17:10,500 --> 01:17:12,620 Atcerieties, ka kaudze aug uz augšu. 1453 01:17:12,620 --> 01:17:15,370 Tātad, apakšā mūsu skursteni, mēs ir kaudze rāmis galvenais. 1454 01:17:15,370 --> 01:17:17,000 Kad programma sākas, galvenais vienmēr būs pie 1455 01:17:17,000 --> 01:17:18,560 apakšā mūsu kaudze. 1456 01:17:18,560 --> 01:17:20,880 >> Un kāda ir iekšā mūsu kaudze rāmis maģistrālo? 1457 01:17:20,880 --> 01:17:23,810 Tātad, pat ja nepastāv vietējā mainīgie galvenais, kā es teicu iepriekš, 1458 01:17:23,810 --> 01:17:29,670 mēs esam argc un RGV aizņem vietu iekšpusē galvenais kaudze rāmi. 1459 01:17:29,670 --> 01:17:33,260 Tātad galvenais tagad gatavojas zvanu funkciju foo. 1460 01:17:33,260 --> 01:17:35,125 Un tas nozīmē, ka foo gatavojas saņemt savu kaudze rāmi. 1461 01:17:35,125 --> 01:17:36,970 >> Tāpēc tagad mēs esam iekšpusē funkcija foo. 1462 01:17:36,970 --> 01:17:38,610 Un to, kas ir nepieciešams, lai iet Foo žetonu rāmis? 1463 01:17:38,610 --> 01:17:41,100 Nu, foo ir arguments n. 1464 01:17:41,100 --> 01:17:45,440 Un n ir vienāds ar 4, jo tas, ko Galvenais ir iet kā Foo argumentu. 1465 01:17:45,440 --> 01:17:48,490 >> Tāpēc tagad foo gatavojas zvanīt bar. 1466 01:17:48,490 --> 01:17:52,070 Kas bar nāksies iekšā tās "kaudze rāmi? 1467 01:17:52,070 --> 01:17:55,610 Tā ir x ir vienāds ar 4 y ir vienāds ar sešiem. 1468 01:17:55,610 --> 01:17:58,540 Tas vēl nav viss, ko mēs esam nāksies kaudze rāmī tāpēc, bar 1469 01:17:58,540 --> 01:18:00,580 ir arī vietējā mainīgs n. 1470 01:18:00,580 --> 01:18:03,370 Un n mēs ejam, lai uzstādītu vienāds ar 24. 1471 01:18:03,370 --> 01:18:05,750 >> Tāpēc tagad bar gatavojas atgriezties n. 1472 01:18:05,750 --> 01:18:09,300 Tātad bar atgriežas 24 līdz kaudze rāmis foo. 1473 01:18:09,300 --> 01:18:12,560 Un tāpēc, ka josla ir tagad atgriežas, ka nozīmē, ka mēs esam popping kaudze rāmi 1474 01:18:12,560 --> 01:18:14,250 bāra nost no skursteņa. 1475 01:18:14,250 --> 01:18:18,430 Tātad viss atmiņas ka josla bija izmantojot tagad pie skursteņa. 1476 01:18:18,430 --> 01:18:21,550 >> Tagad, foo ir arī gatavojas atgriezties 24 uz galveno. 1477 01:18:21,550 --> 01:18:25,470 Tāpēc tagad, ka foo atgriežas, atmiņu ka foo tika izmantojot savā ' 1478 01:18:25,470 --> 01:18:27,550 kaudze rāmis ir pagājis arī. 1479 01:18:27,550 --> 01:18:29,660 Un tagad, galvenais gatavojas zvanīt printf. 1480 01:18:29,660 --> 01:18:31,660 Tātad printf ir tikai vēl viena funkcija. 1481 01:18:31,660 --> 01:18:35,320 Kad mēs saucam printf, tas būs vēl kaudze rāmis par printf 1482 01:18:35,320 --> 01:18:36,470 funkcija zvans. 1483 01:18:36,470 --> 01:18:37,990 >> Ko mums iet printf? 1484 01:18:37,990 --> 01:18:40,090 Tas ir to, kas notiek, lai iet uz tās steku rāmja. 1485 01:18:40,090 --> 01:18:44,970 Vismaz, mēs iet ka procenti i slīpsvītru n un 1486 01:18:44,970 --> 01:18:47,180 arguments 24. 1487 01:18:47,180 --> 01:18:50,370 Tas varētu būt vairāk, jo tas ir kaudze rāmis ja printf notiek, ir, izmantojot kādu 1488 01:18:50,370 --> 01:18:51,200 vietējie mainīgie. 1489 01:18:51,200 --> 01:18:51,920 Mēs nezinām. 1490 01:18:51,920 --> 01:18:53,810 >> Bet viss, kas iet printf gados kaudze rāmi. 1491 01:18:53,810 --> 01:18:55,740 Tas notiek, lai izpildīt printf. 1492 01:18:55,740 --> 01:18:56,830 Tad printf ir darīts. 1493 01:18:56,830 --> 01:18:57,820 Tā atgriezīsies. 1494 01:18:57,820 --> 01:18:58,960 Visbeidzot, galvenais ir izdarīts. 1495 01:18:58,960 --> 01:18:59,860 Galvenais atgriezīsies. 1496 01:18:59,860 --> 01:19:02,020 Un tad mūsu programma tiek darīts. 1497 01:19:02,020 --> 01:19:02,480 Yeah? 1498 01:19:02,480 --> 01:19:04,505 >> AUDITORIJA: Vai jums redzēt [nedzirdama] 1499 01:19:04,505 --> 01:19:05,900 argumenti [nedzirdama] 1500 01:19:05,900 --> 01:19:06,830 parametri? 1501 01:19:06,830 --> 01:19:09,970 >> ROB: Tātad ir smalks atšķirība starp argumentiem un parametriem. 1502 01:19:09,970 --> 01:19:14,400 Un tiešām, jo ​​kopējā runā, cilvēki mēdz vienkārši sajauc tos visu laiku. 1503 01:19:14,400 --> 01:19:17,550 Bet parametri ir formāla nosaukt par lietām. 1504 01:19:17,550 --> 01:19:20,180 >> Tik argc un argv ir parametrus uz galveno. 1505 01:19:20,180 --> 01:19:23,440 Argumenti ir tas, ko jūs patiesībā caurlaide kā šo parametru. 1506 01:19:23,440 --> 01:19:28,340 Tātad, kad es aicinu foo 4, 4 ir arguments es esmu garāmejot. 1507 01:19:28,340 --> 01:19:31,460 Un parametrs n, iekšpusē foo, uzskata par vērtību 4 1508 01:19:31,460 --> 01:19:32,880 jo 4 bija arguments. 1509 01:19:32,880 --> 01:19:35,826 >> Mērķauditorija: [dzirdams]? 1510 01:19:35,826 --> 01:19:37,880 >> ROB: n ir vietējais mainīgais bar. 1511 01:19:37,880 --> 01:19:41,420 1512 01:19:41,420 --> 01:19:44,960 n joprojām ir vietējā foo, bet tas ir parametrs foo. 1513 01:19:44,960 --> 01:19:48,190 Tas nav vietējā mainīgs. 1514 01:19:48,190 --> 01:19:48,546 Yeah? 1515 01:19:48,546 --> 01:19:51,180 >> Mērķauditorija: [dzirdams]? 1516 01:19:51,180 --> 01:19:55,400 >> ROB: foo ir tikai zvana bar un atgriežoties neatkarīgi bar atdevi. 1517 01:19:55,400 --> 01:19:56,786 >> Mērķauditorija: [dzirdams]? 1518 01:19:56,786 --> 01:19:59,591 >> ROB: Jā, tikai, lai redzētu vairākas kaudze rāmji. 1519 01:19:59,591 --> 01:20:00,082 Yeah? 1520 01:20:00,082 --> 01:20:03,519 >> AUDITORIJA: Kāpēc foo saukta pirms printf? 1521 01:20:03,519 --> 01:20:05,920 >> ROB: Kāpēc foo pazvanot printf? 1522 01:20:05,920 --> 01:20:10,740 Lai es varētu būt, tā vietā, izdarīt kaut ko piemēram int x vienāds foo no 4 1523 01:20:10,740 --> 01:20:12,980 un pēc tam izdrukāts x. 1524 01:20:12,980 --> 01:20:17,900 Bet tā vietā, es apvienot funkciju zvaniet uz printf arguments. 1525 01:20:17,900 --> 01:20:23,670 >> Bet paziņo, ka mēs nevaram reāli izpildīt aicinājumu printf, kamēr mēs 1526 01:20:23,670 --> 01:20:25,610 izdomāt, ko foo no 4 ir. 1527 01:20:25,610 --> 01:20:27,480 Tāpēc mēs ejam, lai novērtētu to. 1528 01:20:27,480 --> 01:20:32,504 Un tikai tad, kad tas ir izdarīts gatavojas nākt atpakaļ un izvērtēt šo problēmu. 1529 01:20:32,504 --> 01:20:32,990 Yeah? 1530 01:20:32,990 --> 01:20:37,364 >> AUDITORIJA: Tā gan bārā [nedzirdama] 1531 01:20:37,364 --> 01:20:41,738 vērtība, kāpēc mums nav [nedzirdama]? 1532 01:20:41,738 --> 01:20:44,400 >> ROB: Tie pilnībā būtu int. 1533 01:20:44,400 --> 01:20:46,260 Kas netika noķerti vairāk Vairāku caurlaides. 1534 01:20:46,260 --> 01:20:49,010 Lai tā būtu int bar un int foo jo gan no tiem 1535 01:20:49,010 --> 01:20:50,460 atgriežas veseli skaitļi. 1536 01:20:50,460 --> 01:20:54,214 Void ir tikai tad, ja viņi nenāks atgriezties faktiskās vērtības. 1537 01:20:54,214 --> 01:20:54,692 Yeah? 1538 01:20:54,692 --> 01:20:58,038 >> AUDITORIJA: Ja Jums ir bijusi līnija iepriekš atgriešanās, [nedzirdama]? 1539 01:20:58,038 --> 01:21:01,862 1540 01:21:01,862 --> 01:21:03,730 >> ROB: līnija virs atgriešanās? 1541 01:21:03,730 --> 01:21:04,410 >> AUDITORIJA: Jā. 1542 01:21:04,410 --> 01:21:10,780 Tāpat kā, ja jūs printf un [nedzirdama] tas tā drukāt divreiz? 1543 01:21:10,780 --> 01:21:12,992 >> ROB: Tātad iekšpusē foo? 1544 01:21:12,992 --> 01:21:15,945 Ja mums bija printf tieši šeit? 1545 01:21:15,945 --> 01:21:16,750 >> AUDITORIJA: Jā. 1546 01:21:16,750 --> 01:21:19,510 >> ROB: Tātad, ja mums bija printf tiesības šeit, tas varētu drukāt vienu reizi. 1547 01:21:19,510 --> 01:21:23,400 Tā mēs aicinām foo reizi tiesības šeit, tad mēs hit printf. 1548 01:21:23,400 --> 01:21:24,620 Tad mēs saucam bar. 1549 01:21:24,620 --> 01:21:25,710 Un tad foo atgriezīsies. 1550 01:21:25,710 --> 01:21:26,275 Un tas arī viss. 1551 01:21:26,275 --> 01:21:30,985 Mēs tikai kādreiz saskarties printf vienreiz. 1552 01:21:30,985 --> 01:21:31,482 Yeah? 1553 01:21:31,482 --> 01:21:32,973 >> Mērķauditorija: [dzirdams] 1554 01:21:32,973 --> 01:21:37,950 printf zvanot foo, jo mēs esam pirmais zvanot printf un tad mēs esam garām 1555 01:21:37,950 --> 01:21:38,580 argumenti. 1556 01:21:38,580 --> 01:21:40,960 >> ROB: Tātad teorētiski, nav printf zvanot foo? 1557 01:21:40,960 --> 01:21:42,220 Līdz ar to nav. 1558 01:21:42,220 --> 01:21:47,360 Tikai piespriest c gatavojas izpildīt šīs lietas ir, pirms mēs varam 1559 01:21:47,360 --> 01:21:49,800 izsauktu funkciju, visiem argumentus funkcijai ir 1560 01:21:49,800 --> 01:21:51,600 pilnībā novērtēta. 1561 01:21:51,600 --> 01:21:53,540 Tāpēc tas tiek pilnībā novērtēti? 1562 01:21:53,540 --> 01:21:54,610 Jā, tas ir tikai string. 1563 01:21:54,610 --> 01:21:55,480 Tas ir tikai vērtība. 1564 01:21:55,480 --> 01:21:57,200 >> Tad mums ir pilnīgi izvērtēt šo. 1565 01:21:57,200 --> 01:21:59,720 Kad tas ir izdarīts, tagad visi tās argumenti ir novērtēti. 1566 01:21:59,720 --> 01:22:01,982 Un tagad mēs varam darīt zvanīt printf. 1567 01:22:01,982 --> 01:22:02,478 Yeah? 1568 01:22:02,478 --> 01:22:03,966 >> AUDITORIJA: Viens jautājums. 1569 01:22:03,966 --> 01:22:06,942 Ja jums ir anulēts funkcija, jābūt Jums ir atgriešanās semikolu? 1570 01:22:06,942 --> 01:22:09,910 >> ROB: Jums nav atgriešanās semikolu ja jums ir anulēts funkcija. 1571 01:22:09,910 --> 01:22:13,370 1572 01:22:13,370 --> 01:22:14,780 OK. 1573 01:22:14,780 --> 01:22:15,830 Tātad tagad daži kaudze sīkumi. 1574 01:22:15,830 --> 01:22:19,640 Tātad, kaudze ir, kā mēs spēsim tikt galā ar dinamisku atmiņas vadību. 1575 01:22:19,640 --> 01:22:23,100 Un tas ir tieši pretrunā ar kaudze, ko mēs saucam automātiskā 1576 01:22:23,100 --> 01:22:24,100 atmiņas pārvaldības. 1577 01:22:24,100 --> 01:22:27,140 >> Tātad uz skursteņa, jūs nekad īsti ir tikt galā ar to, kā vietējās mainīgie 1578 01:22:27,140 --> 01:22:30,400 tiek grūsti un popped off visu šie kaudze rāmji un visu, kas stuff. 1579 01:22:30,400 --> 01:22:31,070 Jums nav jāuztraucas par to. 1580 01:22:31,070 --> 01:22:32,070 Tas ir automātiska. 1581 01:22:32,070 --> 01:22:36,990 Tātad kaudze ir rokasgrāmata. 1582 01:22:36,990 --> 01:22:38,070 Un [nedzirdama] 1583 01:22:38,070 --> 01:22:41,260 nāk no šīm funkcijām malloc un bezmaksas. 1584 01:22:41,260 --> 01:22:43,550 >> Tātad, šeit ir cita programma. 1585 01:22:43,550 --> 01:22:47,145 Viss, ko mēs darām, ir mallocing skaitlis. 1586 01:22:47,145 --> 01:22:49,360 Mēs esam uzglabājot to zvaigžņu x. 1587 01:22:49,360 --> 01:22:52,520 Protams, mums ir jāpārbauda lai redzētu, ja x ir nulle. 1588 01:22:52,520 --> 01:22:56,400 Tad mēs ejam vienkārši noteikt, ko x ir vērsta, lai līdz 50. 1589 01:22:56,400 --> 01:23:00,350 1590 01:23:00,350 --> 01:23:03,260 Drukāt, kas x ir vērsta uz, Print X, un pēc tam brīvi x. 1591 01:23:03,260 --> 01:23:08,920 >> Tātad, kā tas ir patiesībā skatīsies ja mēs skatāmies uz mūsu skursteņiem un kaudzes? 1592 01:23:08,920 --> 01:23:10,950 Tātad mēs sāksim atkal. 1593 01:23:10,950 --> 01:23:12,580 Mūsu kaudze apakšas kā iepriekš. 1594 01:23:12,580 --> 01:23:15,930 Atceries, ka tev sakraut tieši iebilst kaudze? 1595 01:23:15,930 --> 01:23:18,850 Tāpēc mēs esam nāksies top mūsu kaudzes tur. 1596 01:23:18,850 --> 01:23:22,590 >> Tātad apakšā mūsu kaudze, mēs esam mūsu kaudze rāmis galvenais. 1597 01:23:22,590 --> 01:23:28,000 Tā ir telpa, argc, ARGV, un mēs tagad ir vietējās mainīgo x, kas 1598 01:23:28,000 --> 01:23:30,030 ir int zvaigzne. 1599 01:23:30,030 --> 01:23:32,240 Tāpēc mēs ejam atkārtot izmantojot šo programmu. 1600 01:23:32,240 --> 01:23:34,420 Pirmā lieta, kas mums ir, ir zvans uz malloc. 1601 01:23:34,420 --> 01:23:36,250 >> Tāpēc mēs nesam zvanu uz malloc. 1602 01:23:36,250 --> 01:23:37,100 Malloc ir funkcija. 1603 01:23:37,100 --> 01:23:38,770 Tas notiek, lai iegūtu kaudze rāmi. 1604 01:23:38,770 --> 01:23:40,180 Ko mums iet uz malloc? 1605 01:23:40,180 --> 01:23:41,610 Kas notiek, lai iet iekšā no skursteņa rāmja. 1606 01:23:41,610 --> 01:23:45,130 Mēs iet lielumu n, kas ir 4. 1607 01:23:45,130 --> 01:23:49,700 Tāpēc, ka ir nodota malloc. 1608 01:23:49,700 --> 01:23:50,910 >> Kāda malloc darīt? 1609 01:23:50,910 --> 01:23:53,820 Tā grabs mums dažas vietas uz kaudzes. 1610 01:23:53,820 --> 01:23:55,320 Tāpēc mēs gatavojamies iet uz kaudzi. 1611 01:23:55,320 --> 01:23:57,990 Un mēs ejam paķert 4 baiti no kaudzes. 1612 01:23:57,990 --> 01:24:01,500 Tāpēc pieņemsim tikai dot, ka patvaļīga adresi. 1613 01:24:01,500 --> 01:24:06,680 0x123 Tikai izlikties, ka ir adresi, kas ir uz kaudzes. 1614 01:24:06,680 --> 01:24:12,300 >> Tātad, kas ir faktiski iekšpusē, ka reģions atmiņas pie adrešu Ox123? 1615 01:24:12,300 --> 01:24:13,080 Atkritumu. 1616 01:24:13,080 --> 01:24:15,270 Tātad mēs neesam saglabāti neko tajā. 1617 01:24:15,270 --> 01:24:18,830 Tātad, cik mums zināms, varētu būt kaut kas. 1618 01:24:18,830 --> 01:24:20,560 Jums nevajadzētu pieņemt, tas ir nulle. 1619 01:24:20,560 --> 01:24:23,870 Tas, visticamāk, nav nulle. 1620 01:24:23,870 --> 01:24:26,260 >> Tātad tagad malloc atgriežas. 1621 01:24:26,260 --> 01:24:28,020 Un ko mēs darām, kad malloc atdevi? 1622 01:24:28,020 --> 01:24:29,800 Mēs, kas ko tas atgriežas. 1623 01:24:29,800 --> 01:24:32,290 Mēs noteikti x vienāds ar to, ko tas atgriežas. 1624 01:24:32,290 --> 01:24:33,690 Tātad, kas tas atgriežas? 1625 01:24:33,690 --> 01:24:38,150 Tas atgriežas 0x123, jo tas ir adrese bloka atmiņā, ka tā 1626 01:24:38,150 --> 01:24:40,850 tikai piešķirti kaudzē. 1627 01:24:40,850 --> 01:24:47,160 >> Tātad atgriezties 0x123 x tagad būs jānosaka vienāds ar 0x123, kas, gleznieciski, 1628 01:24:47,160 --> 01:24:52,940 mēs bieži izdarīt kā x ar faktisko bultiņa norāda uz šo bloku. 1629 01:24:52,940 --> 01:24:55,820 Bet x ir tikai glabāšanai šo adresi. 1630 01:24:55,820 --> 01:24:58,670 Tāpēc tagad mums ir jāpārbauda, ​​ja x ir nulle. 1631 01:24:58,670 --> 01:24:59,120 Tas nav null. 1632 01:24:59,120 --> 01:25:02,170 Mēs izliekamies, ka malloc izdevās. 1633 01:25:02,170 --> 01:25:04,950 >> Tātad tagad zvaigzne x ir vienāds 50. 1634 01:25:04,950 --> 01:25:08,450 Tātad zvaigzne atceras, tas nozīmē, dodieties uz šo adresi. 1635 01:25:08,450 --> 01:25:12,700 Tātad 0x123 Mēs ejam, lai dodieties uz šo adresi. 1636 01:25:12,700 --> 01:25:14,660 Tāpēc, ka mūs tur augšā. 1637 01:25:14,660 --> 01:25:16,310 Ko mēs darām šajā adresē? 1638 01:25:16,310 --> 01:25:19,020 Mēs glabāšanai 50. 1639 01:25:19,020 --> 01:25:22,500 >> Tātad, pēc šīs līnijas, kas ir tas, ko lietas gatavojas izskatās. 1640 01:25:22,500 --> 01:25:24,640 Tāpēc tagad tas vairs nav atkritumu tur. 1641 01:25:24,640 --> 01:25:28,910 Tagad mēs zinām, ka 50 ir, ka īpaši adrese jo 1642 01:25:28,910 --> 01:25:32,410 mēs noteikt to, ka. 1643 01:25:32,410 --> 01:25:32,790 OK? 1644 01:25:32,790 --> 01:25:34,370 Tāpēc tagad mēs ejam, lai drukātu f. 1645 01:25:34,370 --> 01:25:38,490 >> Tātad vispirms mēs ejam, lai drukātu zvaigzne x. 1646 01:25:38,490 --> 01:25:39,640 Tātad, kas ir zvaigzne x? 1647 01:25:39,640 --> 01:25:44,300 Atkal, zvaigzne x nozīmē doties lieta, ka x ir vērsta uz. 1648 01:25:44,300 --> 01:25:47,140 Tātad x ir uzglabāt 0x123 Iet uz to. 1649 01:25:47,140 --> 01:25:48,490 Mēs 50. 1650 01:25:48,490 --> 01:25:50,540 Tik drukāt f kas. 1651 01:25:50,540 --> 01:25:54,900 Un tas nozīmē, ka tas notiek, lai drukātu 50. 1652 01:25:54,900 --> 01:25:56,850 Un tad, kas atgriežas. 1653 01:25:56,850 --> 01:25:58,340 >> Un tad mums ir otrais printf. 1654 01:25:58,340 --> 01:25:59,370 Tagad mēs esam procentiem p. 1655 01:25:59,370 --> 01:26:01,680 Ja jūs neesat redzējuši, ka ir cik jūs drukāt rādītāju. 1656 01:26:01,680 --> 01:26:04,960 Tāpēc mums ir procentiem i, procenti f, un visiem tiem, kas jau. 1657 01:26:04,960 --> 01:26:07,160 Tātad procenti p, drukāt rādītāju. 1658 01:26:07,160 --> 01:26:08,920 >> Tātad x ir rādītājs. 1659 01:26:08,920 --> 01:26:13,440 Tātad, ja mēs ejam, lai drukātu x sevi, mēs drukāšanas to, kas ir patiesībā iekšā 1660 01:26:13,440 --> 01:26:19,220 x, kas ir 0x123 Tātad pirmais drukas f gatavojas drukāt 50. 1661 01:26:19,220 --> 01:26:23,620 Otrais drukas f notiek drukāt 0x123 Yeah? 1662 01:26:23,620 --> 01:26:27,460 >> AUDITORIJA: Vai jūs izmantojat procentiem x, lai izdrukātu rādītāju? 1663 01:26:27,460 --> 01:26:31,200 >> ROB: Tātad jūs izmantojat procentiem x, lai izdrukātu rādītāju? 1664 01:26:31,200 --> 01:26:38,350 Tātad jūs varat, bet procenti x ir tikai, vispārīgāk, piemēram, ja jums ir kāda 1665 01:26:38,350 --> 01:26:40,325 skaitlim un vēlaties drukāt tā kā heksadecimālo. 1666 01:26:40,325 --> 01:26:43,250 1667 01:26:43,250 --> 01:26:44,880 Tas ir tāpat, kā jūs darīt. 1668 01:26:44,880 --> 01:26:47,160 >> Tā kā procenti d būtu drukāt kā aiz komata. 1669 01:26:47,160 --> 01:26:50,310 Tas ir bija mums nokļūt procentiem d. i ir tikai skaitlis. 1670 01:26:50,310 --> 01:26:52,690 procenti p ir speciāli uz norādes. 1671 01:26:52,690 --> 01:26:54,060 >> Tātad x ir rādītājs. 1672 01:26:54,060 --> 01:26:56,360 Mēs vēlamies izmantot procentiem p. 1673 01:26:56,360 --> 01:26:57,937 Bet procenti x varētu strādāt. 1674 01:26:57,937 --> 01:26:58,414 Yeah? 1675 01:26:58,414 --> 01:26:59,664 >> Mērķauditorija: [dzirdams]? 1676 01:26:59,664 --> 01:27:04,138 1677 01:27:04,138 --> 01:27:05,388 >> ROB: Jā. 1678 01:27:05,388 --> 01:27:07,870 1679 01:27:07,870 --> 01:27:13,440 Vismaz par to call-- lai es neiekļāva to šeit. 1680 01:27:13,440 --> 01:27:19,850 Bet šie divi argumenti ir obligāti iekšpuses šo kaudze rāmja 1681 01:27:19,850 --> 01:27:23,040 kopā ar visiem vietējiem mainīgajiem printf gadās būt, izmantojot. 1682 01:27:23,040 --> 01:27:27,020 Un tad nākamais zvans printf tagad iekšpusē printf kaudze rāmis 1683 01:27:27,020 --> 01:27:33,960 procenti p slīpsvītru n un neatkarīgi vērtība x ir, kas ir 0x123. 1684 01:27:33,960 --> 01:27:34,425 Yeah? 1685 01:27:34,425 --> 01:27:35,675 >> Mērķauditorija: [dzirdams]? 1686 01:27:35,675 --> 01:27:38,145 1687 01:27:38,145 --> 01:27:40,880 >> ROB: Tas būs drukāt kaut ko ka izskatās šādi. 1688 01:27:40,880 --> 01:27:41,846 >> AUDITORIJA: [nedzirdama]. 1689 01:27:41,846 --> 01:27:44,510 >> ROB: Tātad tas drukā to adreses formā. 1690 01:27:44,510 --> 01:27:47,003 Izskatās, adresi. 1691 01:27:47,003 --> 01:27:47,494 Yeah? 1692 01:27:47,494 --> 01:27:49,458 >> Mērķauditorija: [dzirdams]? 1693 01:27:49,458 --> 01:27:51,075 >> ROB: Kāpēc ir kas? 1694 01:27:51,075 --> 01:27:52,920 >> Mērķauditorija: [dzirdams]? 1695 01:27:52,920 --> 01:27:55,240 >> ROB: Kāpēc tas ir rādītājs 4 baiti? 1696 01:27:55,240 --> 01:27:58,500 Tātad tur ir vesels bars no 0 gados priekšā to. 1697 01:27:58,500 --> 01:28:03,740 Tātad, tas ir patiešām 0x0000000123. 1698 01:28:03,740 --> 01:28:06,510 Uz 64 bitu sistēmā, nebūtu viss ķekars vairāk nullēm. 1699 01:28:06,510 --> 01:28:11,410 1700 01:28:11,410 --> 01:28:11,900 Yeah? 1701 01:28:11,900 --> 01:28:13,150 >> AUDITORIJA: [nedzirdama]. 1702 01:28:13,150 --> 01:28:17,290 1703 01:28:17,290 --> 01:28:21,130 >> ROB: Tātad pirmais printf gatavojas print-- 1704 01:28:21,130 --> 01:28:21,980 >> AUDITORIJA: [nedzirdama]. 1705 01:28:21,980 --> 01:28:24,420 >> ROB: Jā, tas notiek, lai drukātu kāda x ir vērsta uz. 1706 01:28:24,420 --> 01:28:27,030 1707 01:28:27,030 --> 01:28:29,070 Zvaigzne saka, kas tas ir lieta norādot uz. 1708 01:28:29,070 --> 01:28:30,300 Paķert to. 1709 01:28:30,300 --> 01:28:31,455 Tātad, kas ir tas norādot uz? 1710 01:28:31,455 --> 01:28:31,850 50. 1711 01:28:31,850 --> 01:28:32,410 Paķert to. 1712 01:28:32,410 --> 01:28:33,390 Tas ir tas, ko mēs ejam, lai drukātu. 1713 01:28:33,390 --> 01:28:37,020 Tā kā nākamo, mēs esam tikai drukāšanas x sevi. 1714 01:28:37,020 --> 01:28:38,850 Kas ir iekšpusē f? 1715 01:28:38,850 --> 01:28:43,710 0x123. 1716 01:28:43,710 --> 01:28:44,500 OK. 1717 01:28:44,500 --> 01:28:46,620 >> Un tad, beidzot, mums ir bezmaksas. 1718 01:28:46,620 --> 01:28:48,040 Ko mums iet, lai atbrīvotu? 1719 01:28:48,040 --> 01:28:49,470 Mēs iet x. 1720 01:28:49,470 --> 01:28:52,380 Šis laiks man tiešām redzams tas ir kaudze rāmī. 1721 01:28:52,380 --> 01:28:56,370 >> Tāpēc mēs esam iet vērtību 0x123, lai atbrīvotu. 1722 01:28:56,370 --> 01:28:59,070 Tagad tik brīvi zina, labi, Man ir jāiet līdz kaudze 1723 01:28:59,070 --> 01:29:00,050 un brīvu, ka atmiņas. 1724 01:29:00,050 --> 01:29:03,920 Tas vairs izmantojot to, ko ir adrešu 0x123. 1725 01:29:03,920 --> 01:29:07,010 >> Tik brīva gatavojas atbrīvot ka no kaudzes. 1726 01:29:07,010 --> 01:29:09,490 Tagad mūsu kaudze atkal ir tukša. 1727 01:29:09,490 --> 01:29:11,120 Mums nav atmiņas noplūde. 1728 01:29:11,120 --> 01:29:12,940 Tagad bezmaksas atgriezīsies. 1729 01:29:12,940 --> 01:29:16,130 Ievērojiet, ka x joprojām ir 0x123. 1730 01:29:16,130 --> 01:29:18,240 Bet tas tagad nav derīgs atmiņas. 1731 01:29:18,240 --> 01:29:21,220 1732 01:29:21,220 --> 01:29:23,986 Mēs vairs dereference x. 1733 01:29:23,986 --> 01:29:24,440 Yeah? 1734 01:29:24,440 --> 01:29:27,240 >> AUDITORIJA: Vai atgriezties 0 lieku? 1735 01:29:27,240 --> 01:29:28,290 >> ROB: Vai returen 0 lieks? 1736 01:29:28,290 --> 01:29:31,110 Jā. 1737 01:29:31,110 --> 01:29:33,950 Mēs tikai nodot, ka tur, jo mums ir peļņu viens pēc gaisa. 1738 01:29:33,950 --> 01:29:36,830 Tātad, tas ir, piemēram, jā, ļauj ietver atgriešanās 0. 1739 01:29:36,830 --> 01:29:37,310 Yeah? 1740 01:29:37,310 --> 01:29:38,560 >> Mērķauditorija: [dzirdams]? 1741 01:29:38,560 --> 01:29:42,110 1742 01:29:42,110 --> 01:29:45,580 >> ROB: Tātad, pēc brīvām x, kas notiek, ja mēs cenšamies dereference rādītāja? 1743 01:29:45,580 --> 01:29:47,240 Tas ir iespējams, ka nekas noiet greizi. 1744 01:29:47,240 --> 01:29:49,330 Tas ir iespējams, ka mēs joprojām saņemsiet 50. 1745 01:29:49,330 --> 01:29:53,590 >> Tas ir iespējams, arī, ka atmiņa ir tagad tiek izmantots kaut kas cits. 1746 01:29:53,590 --> 01:29:57,140 Tātad, tas ir nenoteikts uzvedību. 1747 01:29:57,140 --> 01:30:00,772 Un undefined nozīmē neko var notikt. 1748 01:30:00,772 --> 01:30:01,250 Yeah? 1749 01:30:01,250 --> 01:30:02,500 >> Mērķauditorija: [dzirdams]? 1750 01:30:02,500 --> 01:30:07,942 1751 01:30:07,942 --> 01:30:10,830 >> ROB: Nē, tāpēc, ja jūs piešķirat x uz kaut ko citu. 1752 01:30:10,830 --> 01:30:15,870 Tātad, ja tepat mēs teicām x vienāds malloc kaut else-- 1753 01:30:15,870 --> 01:30:17,100 malloc size event-- 1754 01:30:17,100 --> 01:30:20,180 Pēc tam, ka sākotnējā bloks atmiņas netiek atbrīvots. 1755 01:30:20,180 --> 01:30:21,490 Un mēs esam oficiāli zaudējis. 1756 01:30:21,490 --> 01:30:23,150 Tas ir atmiņas noplūde. 1757 01:30:23,150 --> 01:30:25,090 Mēs esam zaudējuši visas atsauces šai bloka atmiņas. 1758 01:30:25,090 --> 01:30:26,827 Tātad tur nav veids, kā mēs nekad nevar atbrīvot to. 1759 01:30:26,827 --> 01:30:32,074 1760 01:30:32,074 --> 01:30:36,630 Labi, tā tad atgriezties 0 līdzekļus darīts. 1761 01:30:36,630 --> 01:30:37,900 >> Labi, tāpēc kaudze pārplūdes. 1762 01:30:37,900 --> 01:30:39,320 Kāda ir ideja šeit? 1763 01:30:39,320 --> 01:30:41,210 Līdz ar to atcerēties, kaudze ir iet uz leju. 1764 01:30:41,210 --> 01:30:43,480 Kaudze ir iet uz augšu. 1765 01:30:43,480 --> 01:30:48,000 Tātad tas bija piemērs no lekciju, Es domāju, kur galvenais ir tikai gatavojas 1766 01:30:48,000 --> 01:30:51,380 nosaukt šo funkciju foo, kas gatavojas lai izsauktu sevi rekursīvi vairāk un 1767 01:30:51,380 --> 01:30:52,320 atkal. 1768 01:30:52,320 --> 01:30:55,370 >> Tātad kaudze rāmji gatavojas strādā tieši tāds pats. 1769 01:30:55,370 --> 01:30:58,130 Tāpēc mēs esam gatavojas sākt ar galveno kā apakšējā kaudze rāmi. 1770 01:30:58,130 --> 01:31:02,000 Tad galvenais gatavojas aicināt foo, kas gatavojas saņemt kaudze rāmi. 1771 01:31:02,000 --> 01:31:04,260 >> Tad foo gatavojas zvanīt foo atkal, kas notiek, lai iegūtu 1772 01:31:04,260 --> 01:31:05,500 vēl kaudze rāmis. 1773 01:31:05,500 --> 01:31:08,270 Un tad atkal, un atkal, un atkal, un atkal, līdz, visbeidzot, mēs palaist 1774 01:31:08,270 --> 01:31:09,190 uz kaudzes. 1775 01:31:09,190 --> 01:31:11,990 Tātad, tas ir, kā mēs kaudze pārplūdes. 1776 01:31:11,990 --> 01:31:14,910 Un šajā brīdī, jūs SEG vaina. 1777 01:31:14,910 --> 01:31:17,335 Vai jūs tiešām seg vaina pirms šis punkts, bet jā. 1778 01:31:17,335 --> 01:31:19,660 >> AUDITORIJA: Vai core dump pats kā SEG vaina? 1779 01:31:19,660 --> 01:31:26,140 >> ROB: Tātad jūs redzēsiet segmentāciju vaina core dempinga cenām. 1780 01:31:26,140 --> 01:31:28,760 Jūs saņemsiet kodols izgāztuves, kad tas Jums SEG vaina. 1781 01:31:28,760 --> 01:31:32,580 Un tas ir kā izgāztuvē visu saturs jūsu pašreizējo atmiņas tik 1782 01:31:32,580 --> 01:31:36,670 ka jūs varat mēģināt un identificēt kāpēc jūs SEG pārmest. 1783 01:31:36,670 --> 01:31:37,135 Yeah? 1784 01:31:37,135 --> 01:31:38,385 >> Mērķauditorija: [dzirdams]? 1785 01:31:38,385 --> 01:31:40,855 1786 01:31:40,855 --> 01:31:45,460 >> ROB: Tātad segmentācija vaina līdzeklis tur ir kaudze pārplūdes. 1787 01:31:45,460 --> 01:31:47,060 Tāpēc ne vienmēr. 1788 01:31:47,060 --> 01:31:49,880 Segmentēšana vaina, nozīmē to, ka tu esi aizkustinošs atmiņa tādā veidā 1789 01:31:49,880 --> 01:31:50,880 Jums nevajadzētu būt. 1790 01:31:50,880 --> 01:31:54,750 Tātad viens no veidiem, ka tas notiks, ir tad, kad jūs kaudze pārpildes, sākam aizkustinošs 1791 01:31:54,750 --> 01:31:58,736 atmiņa tādā veidā, ka mums nevajadzētu būt. 1792 01:31:58,736 --> 01:31:59,208 Yeah? 1793 01:31:59,208 --> 01:32:00,458 >> Mērķauditorija: [dzirdams]? 1794 01:32:00,458 --> 01:32:03,456 1795 01:32:03,456 --> 01:32:05,830 >> ROB: Tātad iekšpusē bezgalīgu cilpu. 1796 01:32:05,830 --> 01:32:08,770 Tāpat kā, tas ir kā rekursīvo bezgalībā cilpu, un lai mēs iegūtu vēl 1797 01:32:08,770 --> 01:32:09,770 kaudze rāmis katru reizi. 1798 01:32:09,770 --> 01:32:13,540 Bet tikai iekšpusē regulāri bezgalīgs kamēr one-- 1799 01:32:13,540 --> 01:32:16,390 labi, pieņemsim nav pat drukāt F-- 1800 01:32:16,390 --> 01:32:17,040 kaut ko darīt. 1801 01:32:17,040 --> 01:32:18,390 Neatkarīgi. 1802 01:32:18,390 --> 01:32:20,610 >> Mēs nebrauksim, kļūst vēl kaudze rāmis. 1803 01:32:20,610 --> 01:32:22,530 Mēs esam tikai gatavojas glabāt looping pār šo vienu instrukciju. 1804 01:32:22,530 --> 01:32:23,920 Kaudze nepieaug. 1805 01:32:23,920 --> 01:32:27,290 Tas ir fakts, ka katrs rekursīvs zvans tiek dodot mums kaudze rāmi. 1806 01:32:27,290 --> 01:32:31,231 Tieši tāpēc mēs iegūtu kaudze pārplūdes. 1807 01:32:31,231 --> 01:32:31,728 Yeah? 1808 01:32:31,728 --> 01:32:38,189 >> AUDITORIJA: Tātad, ja jūs teicāt, lai iegūtu kamēr cilpa un tad [nedzirdama]? 1809 01:32:38,189 --> 01:32:42,000 >> ROB: Tātad, ja iekšpusē kamēr cilpa tur bija printf, jūs joprojām būtu 1810 01:32:42,000 --> 01:32:42,790 nav seg vaina. 1811 01:32:42,790 --> 01:32:46,090 Es tikai negribēju, lai maldinātu lietas. 1812 01:32:46,090 --> 01:32:46,610 Tas būtu cilpa. 1813 01:32:46,610 --> 01:32:48,225 Tu gribētu saņemt vienu kaudze rāmis par printf. 1814 01:32:48,225 --> 01:32:49,580 >> Tad printf varētu atgriezties. 1815 01:32:49,580 --> 01:32:50,280 Tad jūs gribētu cilpa vēlreiz. 1816 01:32:50,280 --> 01:32:51,460 Tu gribētu saņemt vienu kaudze rāmis par printf. 1817 01:32:51,460 --> 01:32:52,850 Tas varētu atgriezties. 1818 01:32:52,850 --> 01:32:54,060 Single kaudze rāmis. 1819 01:32:54,060 --> 01:33:00,215 Tātad jūs nesaņemat šo bezgalīgs krājas kaudze rāmji. 1820 01:33:00,215 --> 01:33:03,185 >> Mērķauditorija: [dzirdams]? 1821 01:33:03,185 --> 01:33:04,040 >> ROB: Jā. 1822 01:33:04,040 --> 01:33:09,360 Tātad šis kaudze pārplūdes notiek jo neviens no tiem 1823 01:33:09,360 --> 01:33:11,600 zvani uz foo atgriežas. 1824 01:33:11,600 --> 01:33:15,250 Tātad, ja mēs atgriežamies, tad mēs būtu sāk zaudēt kaudze rāmji. 1825 01:33:15,250 --> 01:33:17,870 Un tad mēs nebūtu kaudze pārpildes. 1826 01:33:17,870 --> 01:33:20,070 Un tas ir iemesls, kāpēc jums ir nepieciešams bāzes lietu jūsu personīgo funkcijām. 1827 01:33:20,070 --> 01:33:22,992 1828 01:33:22,992 --> 01:33:23,479 Yeah? 1829 01:33:23,479 --> 01:33:27,375 >> AUDITORIJA: Vai potenciāls lielums un kaudze par kaudzes pats par 1830 01:33:27,375 --> 01:33:29,880 visas programmas? 1831 01:33:29,880 --> 01:33:31,910 >> ROB: Aptuveni. 1832 01:33:31,910 --> 01:33:35,090 Ir potenciāls lielums kaudze un kaudze vienādi visām programmām? 1833 01:33:35,090 --> 01:33:37,180 Rupji. 1834 01:33:37,180 --> 01:33:40,080 Ir daži randomizācijas līdz kur kaudze sākas un 1835 01:33:40,080 --> 01:33:42,400 kur kaudze sākas. 1836 01:33:42,400 --> 01:33:45,870 Ja jums gadās būt visai daudz globālie mainīgie un lietas, jūs varētu 1837 01:33:45,870 --> 01:33:49,520 atņemt daži telpu Jūsu kaudzē. 1838 01:33:49,520 --> 01:33:54,060 >> Uz 64 bitu sistēmā, jūs praktiski ir bezgalīgs atmiņu. 1839 01:33:54,060 --> 01:33:55,820 Tur ir tikai tik daudz. 1840 01:33:55,820 --> 01:33:59,250 Starp 32 bitu un 64 bitu, ka ir būtiska atšķirība. 1841 01:33:59,250 --> 01:34:02,350 >> Jūs esat gatavojas iegūt visai daudz vairāk kaudze un kaudze vietas uz 64-bit 1842 01:34:02,350 --> 01:34:05,810 sistēma, jo tur ir tikai vairāk adreses, ka viņi var izmantot. 1843 01:34:05,810 --> 01:34:09,360 Bet uz individuālu sistēmu, tā būs ir aptuveni tikpat daudz kaudze 1844 01:34:09,360 --> 01:34:10,785 un kaudze telpu. 1845 01:34:10,785 --> 01:34:13,635 1846 01:34:13,635 --> 01:34:15,530 Viss labi. 1847 01:34:15,530 --> 01:34:18,220 >> Tātad pēdējā lieta ir apkopojums. 1848 01:34:18,220 --> 01:34:19,810 Tātad jums vajadzētu zināt šo procesu. 1849 01:34:19,810 --> 01:34:22,240 Ir četri lieli soļi. 1850 01:34:22,240 --> 01:34:24,400 Tātad pirmais vajadzētu būtu viegli atcerēties. 1851 01:34:24,400 --> 01:34:25,085 Pirmapstrāde. 1852 01:34:25,085 --> 01:34:28,390 Tā ir prefiksu pre tajā. 1853 01:34:28,390 --> 01:34:32,080 Tātad runa ir par pirms viss pārējais. 1854 01:34:32,080 --> 01:34:34,000 >> Lieta atcerēties ir hash. 1855 01:34:34,000 --> 01:34:37,250 Tik hash definē un hash ietver visos no tiem. 1856 01:34:37,250 --> 01:34:39,560 Tie ir visi iepriekš procesors direktīvām. 1857 01:34:39,560 --> 01:34:42,030 Tās ir lietas, ka pre-procesors rūpējas. 1858 01:34:42,030 --> 01:34:43,680 >> Tātad, ko tas iepriekš procesors darīt? 1859 01:34:43,680 --> 01:34:44,850 Tas ir patiešām mēms lieta. 1860 01:34:44,850 --> 01:34:49,380 Viss tas ir spējīgs, ir visi šie kopēt, un samazināt, un ielīmēt darbību. 1861 01:34:49,380 --> 01:34:51,790 >> Tātad hash ietver standarta i0 dot h. 1862 01:34:51,790 --> 01:34:52,990 Kas ir tas, ka dara? 1863 01:34:52,990 --> 01:34:56,610 Tas satveršanas standarta I0 dot h failu un ielīmējot to uz augšu 1864 01:34:56,610 --> 01:34:58,960 kur tā saka hash iekļauti Standarta i0 dot h. 1865 01:34:58,960 --> 01:35:02,480 >> Un jebkurš hash nosaka, ka mēs esam redzējis, kas ir tas, ka dara? 1866 01:35:02,480 --> 01:35:06,730 Tās kopēšana vērtību šo hash definēti tiek definēta kā un ielīmējot ka 1867 01:35:06,730 --> 01:35:08,500 kur jūs izmantojat vērtību. 1868 01:35:08,500 --> 01:35:13,400 Tik apstrādātāju tikai nav īsti vienkāršs teksta balstītas operācijas. 1869 01:35:13,400 --> 01:35:15,870 Tas nekas gudru. 1870 01:35:15,870 --> 01:35:18,920 Tātad, viss pārējais ir sarežģītāka. 1871 01:35:18,920 --> 01:35:22,970 >> Tāpēc tagad, ka apstrādātāju ir darīts, mēs faktiski sastādīt. 1872 01:35:22,970 --> 01:35:24,320 Tātad, ko apkopojot nozīmē? 1873 01:35:24,320 --> 01:35:27,310 Mēs tagad iet no c kodu līdz montāžas kodu. 1874 01:35:27,310 --> 01:35:27,570 Yeah? 1875 01:35:27,570 --> 01:35:28,820 >> Mērķauditorija: [dzirdams]? 1876 01:35:28,820 --> 01:35:32,390 1877 01:35:32,390 --> 01:35:34,220 >> ROB: Jā, mēs nozvejotas ka. 1878 01:35:34,220 --> 01:35:36,880 1879 01:35:36,880 --> 01:35:38,660 Tātad apkopojot. 1880 01:35:38,660 --> 01:35:40,310 Mēs ejam no c līdz montāžai. 1881 01:35:40,310 --> 01:35:42,470 Tātad tas ir faktiskais valodas maiņa. 1882 01:35:42,470 --> 01:35:45,240 Apkopojot sevi nozīmē iet no augstāka līmeņa valodu 1883 01:35:45,240 --> 01:35:47,340 zemāka līmeņa valoda. 1884 01:35:47,340 --> 01:35:50,720 >> Un c ir augsta līmeņa valoda salīdzinot ar montāžu. 1885 01:35:50,720 --> 01:35:52,320 Kas ir montāža? 1886 01:35:52,320 --> 01:35:56,440 Tās instrukcijas, kas ir, diezgan daudz, veikti jūsu CPU. 1887 01:35:56,440 --> 01:35:59,130 Bet jūsu dators joprojām nav nesaprot montāža. 1888 01:35:59,130 --> 01:36:01,570 Tas tikai saprot vieninieku un nuļļu. 1889 01:36:01,570 --> 01:36:06,160 Tātad nākamais solis ir montāža, kas mūs no šiem norādījumiem, ka 1890 01:36:06,160 --> 01:36:08,760 jūsu CPU saprot un faktiski pārveido tos, lai 1891 01:36:08,760 --> 01:36:10,820 tie, un nullītes. 1892 01:36:10,820 --> 01:36:13,570 >> Tātad C līdz montāžai uz bināro. 1893 01:36:13,570 --> 01:36:15,870 Bet man nav izpildāmā vēl. 1894 01:36:15,870 --> 01:36:19,550 Tāpēc domāju, ka no CS50 bibliotēkas. 1895 01:36:19,550 --> 01:36:23,070 Mēs esam jums ar bināro šis CS50 bibliotēka, kas ir GetString 1896 01:36:23,070 --> 01:36:24,400 un GetInt un viss kas. 1897 01:36:24,400 --> 01:36:25,700 >> Bet CS50 library-- 1898 01:36:25,700 --> 01:36:27,650 in un itself-- nav izpildāms. 1899 01:36:27,650 --> 01:36:29,570 Tā nav galvenā funkcija. 1900 01:36:29,570 --> 01:36:32,230 Tas ir tikai ķekars bināro ka jūs varat izmantot. 1901 01:36:32,230 --> 01:36:41,730 Tātad, saistot ir, kā mēs savest kopā visi Šo dažādo bināro failu 1902 01:36:41,730 --> 01:36:43,110 uz faktisko izpildāmā. 1903 01:36:43,110 --> 01:36:45,900 Viens, ka jūs varat ierakstīt dot slash ir dot out. 1904 01:36:45,900 --> 01:36:51,660 >> Tātad tas ir kā failu, kas jums rakstīja, - neatkarīgi no jūsu programma is-- 1905 01:36:51,660 --> 01:36:53,620 Ceaser dot c. 1906 01:36:53,620 --> 01:36:55,100 Bet tagad tas ir apkopota uz leju, lai bināro. 1907 01:36:55,100 --> 01:36:56,480 Tātad Ceaser dot o. 1908 01:36:56,480 --> 01:36:59,620 Un tas ir mūsu CS50 bibliotēkas bināro. 1909 01:36:59,620 --> 01:37:02,284 Un viņi tiek apvienoti vienā izpildāmā. 1910 01:37:02,284 --> 01:37:02,758 Yeah? 1911 01:37:02,758 --> 01:37:04,008 >> Mērķauditorija: [dzirdams]? 1912 01:37:04,008 --> 01:37:08,800 1913 01:37:08,800 --> 01:37:12,710 >> ROB: Tātad vispirms ietver, atcerieties, hash ietver faktiski 1914 01:37:12,710 --> 01:37:13,810 pre-procesors solis. 1915 01:37:13,810 --> 01:37:14,750 Bet tas ir atsevišķs. 1916 01:37:14,750 --> 01:37:20,730 Ja nelietojat nekādas funkcijas, kas ir ārpus jūsu vienā failā, tad, 1917 01:37:20,730 --> 01:37:26,100 nē, jums nav nepieciešams saistīt neko jo jums ir viss. 1918 01:37:26,100 --> 01:37:30,310 >> Ka teica, printf tiek saslēgti. 1919 01:37:30,310 --> 01:37:32,820 Ja jūs kādreiz izmantot printf, tas ir kaut kas kas ir jāsaista ar 1920 01:37:32,820 --> 01:37:35,740 jo jums nav rakstīt, ka. 1921 01:37:35,740 --> 01:37:39,530 Un, patiesībā, printf ir automātiski saslēgti. 1922 01:37:39,530 --> 01:37:42,760 Jūs zināt, kā pie komandrindas, vai tad, kad tu tipa veikt, jūs redzētu to ir 1923 01:37:42,760 --> 01:37:46,690 domuzīme l CS50, kam ir saikne ar CS50 bibliotēkā? 1924 01:37:46,690 --> 01:37:49,070 Printf, un sīkumi, piemēram, ka notiek jāsaista automātiski. 1925 01:37:49,070 --> 01:37:51,730 1926 01:37:51,730 --> 01:37:53,930 Jebkādi citi jautājumi, par kaut ko? 1927 01:37:53,930 --> 01:37:56,280 >> Mērķauditorija: [dzirdams]? 1928 01:37:56,280 --> 01:37:58,300 >> ROB: Saistošā? 1929 01:37:58,300 --> 01:38:03,450 Mums ir viss ķekars dažādas bināro failus. 1930 01:38:03,450 --> 01:38:06,410 Tas ir kanonisko piemērs ka mēs izmantojam, ir CS50 bibliotēka. 1931 01:38:06,410 --> 01:38:09,960 Mēs esam apkopojuši un Jums ar bināro šajā CS50 bibliotēkā. 1932 01:38:09,960 --> 01:38:12,410 >> Jūs vēlaties izmantot GetString savā programmā. 1933 01:38:12,410 --> 01:38:14,750 Tātad jūs iet un izmantot GetString. 1934 01:38:14,750 --> 01:38:19,700 Bet bez manas bināro kodu GetString, kad jūs sastādīt savu kodu 1935 01:38:19,700 --> 01:38:23,140 uz leju, jūs nevarat patiešām palaist savu programmu, jo GetString String ir 1936 01:38:23,140 --> 01:38:25,080 vēl nav pilnībā noteikts. 1937 01:38:25,080 --> 01:38:29,220 >> Tas ir tikai tad, kad jūs saite manā binārā kas satur GetString ka tagad visi 1938 01:38:29,220 --> 01:38:31,130 labi, es varu tiešām izpildīt GetString. 1939 01:38:31,130 --> 01:38:32,330 Mans fails ir pabeigta. 1940 01:38:32,330 --> 01:38:34,208 Un es varu palaist to. 1941 01:38:34,208 --> 01:38:34,697 Yeah? 1942 01:38:34,697 --> 01:38:37,631 >> AUDITORIJA: Vai sasaiste konvertēt binārā izpildāmā? 1943 01:38:37,631 --> 01:38:42,032 Tātad, pat tad, ja jums nav citas bibliotēkas, nebūtu tas joprojām būtu 1944 01:38:42,032 --> 01:38:44,477 nepieciešams tulkot [nedzirdama]? 1945 01:38:44,477 --> 01:38:48,640 >> ROB: Tātad izpildāmā joprojām ir bināro. 1946 01:38:48,640 --> 01:38:51,750 Tas ir tikai apvienojot vienu veselumu ķekars binaries. 1947 01:38:51,750 --> 01:38:55,124 1948 01:38:55,124 --> 01:38:56,591 >> AUDITORIJA: Paldies tik daudz. 1949 01:38:56,591 --> 01:38:58,560 >> ROB: Nekādu problēmu. 1950 01:38:58,560 --> 01:38:59,540 Jebkādi citi jautājumi? 1951 01:38:59,540 --> 01:39:02,001 Pretējā gadījumā mēs visi noteikti. 1952 01:39:02,001 --> 01:39:02,690 Viss labi. 1953 01:39:02,690 --> 01:39:02,990 Paldies. 1954 01:39:02,990 --> 01:39:03,590 >> [Aplausi] 1955 01:39:03,590 --> 01:39:04,490 >> AUDITORIJA: Paldies. 1956 01:39:04,490 --> 01:39:05,740 >> ROB: Jā. 1957 01:39:05,740 --> 01:39:06,582