1 00:00:00,000 --> 00:00:02,270 [Powered by Google Translate] [Nedēļa 2, turpinājums] 2 00:00:02,270 --> 00:00:04,220 [David J. Malan, Hārvarda universitātes] 3 00:00:04,220 --> 00:00:06,880 [Tas ir CS50. - CS50.TV] 4 00:00:06,880 --> 00:00:10,990 Labi. Tas ir CS50, un tas ir beigas 2 nedēļas. 5 00:00:10,990 --> 00:00:14,410 Ja jūs gaidīt, lai būtu izsalcis ap šo laiku rīt, 6 00:00:14,410 --> 00:00:18,620 zināt, ka mēs ejam uz sasaukt kā nelielu grupu rīt, ceturtdien, 13:15. 7 00:00:18,620 --> 00:00:21,360 Tur šis URL šeit, ja jūs vēlaties, lai RSVP. 8 00:00:21,360 --> 00:00:26,740 Telpa ir ierobežota, tāpēc, lūdzu, piedod, ja veidlapa ir piepildīts ar laiku jūs aizpildīt šo veidlapu. 9 00:00:26,740 --> 00:00:29,300 Vēl URL, lai gan, ka varētu būt interesanti tas ir. 10 00:00:29,300 --> 00:00:32,369 Tikai par mēneša laikā, ko persona gatavojas darīt pieejamu 11 00:00:32,369 --> 00:00:36,890 vēl plašāk izmantojot EDX, pa kuru ļaudis internetā varēs sekot līdzi, 12 00:00:36,890 --> 00:00:39,380 iesaistās gaitā diezgan aktīvi, patiesībā. 13 00:00:39,380 --> 00:00:42,270 Tie būs, izmantojot CS50 Appliance un CS50 Apspriest 14 00:00:42,270 --> 00:00:45,490 un lielākā daļa no dažādām programmatūras rīki, kas mums jau ir, izmantojot šo semestri. 15 00:00:45,490 --> 00:00:48,710 Un viena no iniciatīvām mēs gribētu uzņemties kā eksperiments šogad 16 00:00:48,710 --> 00:00:51,930 ir redzēt, cik daudz satura mēs varam tulkot 17 00:00:51,930 --> 00:00:53,960 citos runā un raksta valodās. 18 00:00:53,960 --> 00:00:57,500 Tātad, ja jūs varētu būt interese piedalīties šajā projektā 19 00:00:57,500 --> 00:01:02,270 kuru mēs nodrošināsim angļu stenogrammas un subtitrus gaitā lekcijām 20 00:01:02,270 --> 00:01:05,450 un šorti un semināri un sekcijas un tamlīdzīgi, 21 00:01:05,450 --> 00:01:08,200 ja tu runā tekoši vai rakstīt tekoši kādu citu valodu, 22 00:01:08,200 --> 00:01:12,290 Mēs labprāt vēlētos iesaistīties jums šajā projektā, kurā jūs uzņemties vienu vai vairākiem video, 23 00:01:12,290 --> 00:01:15,200 tulkojot tos valodu jūs zināt gluži labi. 24 00:01:15,200 --> 00:01:18,700 >> Lai dotu jums sajūtu interfeisu, tur tas ir interneta lietotāja saskarne 25 00:01:18,700 --> 00:01:22,090 ka mēs, izmantojot kas radīs būtībā UI kā šis. 26 00:01:22,090 --> 00:01:24,290 Tas bija man māca daži Halloween atpakaļ, 27 00:01:24,290 --> 00:01:27,390 un labajā pusē tur melnā blakus šiem laika zīmogiem, 28 00:01:27,390 --> 00:01:31,210 Jūs redzēsiet dažādas lietas, kas nāca no manas mutes, ka dienā, 29 00:01:31,210 --> 00:01:34,850 un tad zem tā jūs varēsiet tulkot kādā citā valodā 30 00:01:34,850 --> 00:01:38,690 ko tieši kartēšana ir starp, šajā gadījumā, angļu un, teiksim, spāņu. 31 00:01:38,690 --> 00:01:40,440 Tātad, tas ir tiešām ļoti lietotājam draudzīgs rīks. 32 00:01:40,440 --> 00:01:43,370 Jūs varat attīt un ātri uz priekšu ļoti viegli ar tastatūras īsceļus. 33 00:01:43,370 --> 00:01:47,490 Tātad, ja jūs vēlaties piedalīties šajā eksperimentā un ir jūsu vārdi redzējis un lasīt 34 00:01:47,490 --> 00:01:51,850 potenciāli tūkstošiem ļaudīm, kas tur, lūdzu, justies brīvi piedalīties. 35 00:01:51,850 --> 00:01:54,350 Viens vārds par no pirmdienas ar kaķēnu. 36 00:01:54,350 --> 00:02:00,350 Citādi mēs esam nosūtījuši pārāk biedējošu ziņu, saprotu, ka darba laiks liecina 37 00:02:00,350 --> 00:02:03,300 un kā sekcijas liecina, kursa dizains ir ļoti daudz 38 00:02:03,300 --> 00:02:07,360 , ir skolēni sadarbojas un runājot strādāt ar problēmu kopas 39 00:02:07,360 --> 00:02:11,260 un problēmas kopā, un tiešām līniju vienkārši nāk uz leju, lai, 40 00:02:11,260 --> 00:02:16,010 atkal, darbs jūs galu galā iesniegt būtu savu. 41 00:02:16,010 --> 00:02:18,860 Un tā pavisam godīgi, jo darba laikā tas ir pilnīgi normāli, 42 00:02:18,860 --> 00:02:22,240 tas ir pilnīgi sagaidāms pat, lai čatā ar kādu draugu pie jums. 43 00:02:22,240 --> 00:02:24,370 >> Ja viņš vai viņa cīnās ar kādu tēmu, un jūs, piemēram, 44 00:02:24,370 --> 00:02:27,940 "Ak, labi, ļaujiet man sniegt jums nelielu ieskatu par līnijas kodu, kas man rakstīja:" Tas ir labi, 45 00:02:27,940 --> 00:02:31,250 kas notiek, un tas ir ļoti daudz labvēlīga, es domāju, ar mācību procesā. 46 00:02:31,250 --> 00:02:36,750 Ja līnija izpaužas šķērsoja ir tad, kad galva ir veida noliec nekā šeit, lai pārāk daudz sekundes 47 00:02:36,750 --> 00:02:41,160 vai minūtes, kas īsti ir tikko atbloķēšanas iespēja savu draugu, 48 00:02:41,160 --> 00:02:44,160 un protams, ja lietas iegūt apmaiņa pa e-pastu un Dropbox un tamlīdzīgi, 49 00:02:44,160 --> 00:02:45,640 Arī tur ir līnija. 50 00:02:45,640 --> 00:02:48,620 Lai ar visiem līdzekļiem justies komfortabli un tas, lai tērzēt ar draugiem 51 00:02:48,620 --> 00:02:52,810 un klasesbiedru par psets un vairāk, un tikai saprast, ka tas, ko jūs galu galā iesniegt 52 00:02:52,810 --> 00:02:57,340 patiešām ir produkts no jūsu radīšanu un nevis kāds cits. 53 00:02:57,340 --> 00:03:00,490 Un tā viena no domēnspecifiskas problēmas pset2, 54 00:03:00,490 --> 00:03:04,740 kas iznāks vēlu rīt naktī, ir nirt vērā pasaulē kriptogrāfija, 55 00:03:04,740 --> 00:03:08,970 kas ir māksla šifrējot vai šifrēšanas informāciju, 56 00:03:08,970 --> 00:03:12,600 un tas galu galā ir saistīts ar pasaules drošību. 57 00:03:12,600 --> 00:03:16,560 Tagad, drošības lielākā daļa no mums nāk kā diezgan ikdienišķa mehānismu. 58 00:03:16,560 --> 00:03:19,050 Visi no mums ir lietotājvārdus un paroles, 59 00:03:19,050 --> 00:03:23,450 un mums visiem ir ļoti slikti lietotājvārdus un paroles, visticamāk. 60 00:03:23,450 --> 00:03:28,240 >> Ja parole ir tāda pati uz vairākām vietnēm, kas, iespējams, nav labākā ideja, 61 00:03:28,240 --> 00:03:30,070 kā mēs apspriedīsim uz semestra beigām. 62 00:03:30,070 --> 00:03:34,720 Ja parole ir rakstīts uz līmlapas - nav joks - uz jūsu monitora, 63 00:03:34,720 --> 00:03:38,350 kas arī ir ne vienmēr labākais dizains, bet diezgan bieži sastopama parādība. 64 00:03:38,350 --> 00:03:42,470 Un, ja jūs nelietojat kriptogrāfija, lai šifrētu paroles, 65 00:03:42,470 --> 00:03:44,210 viņi ir īpaši neaizsargāti. 66 00:03:44,210 --> 00:03:47,270 Tātad, ja jūs domājat, ka jūs ir super gudrs, ņemot slēptu Word dokumentu 67 00:03:47,270 --> 00:03:49,910 kaut kur uz cietā diska, kas ir visas jūsu paroles 68 00:03:49,910 --> 00:03:53,670 bet tas mapē, ka neviens gatavojas meklēt, kas arī nav ļoti droša mehānisms. 69 00:03:53,670 --> 00:03:56,990 Un tā, kādi pset2 ieviesīs tas māksla kriptogrāfiju 70 00:03:56,990 --> 00:04:02,010 un kodēšanas informāciju, ka lietas, piemēram paroles visi drošāku. 71 00:04:02,010 --> 00:04:05,790 Konteksts ir tāda, ka ar nedrošām datiem 72 00:04:05,790 --> 00:04:07,930 nāk iespēja šifrēt to un motokross to. 73 00:04:07,930 --> 00:04:11,470 Un tā tas, piemēram, ir piemērs no šifrētu ziņu. 74 00:04:11,470 --> 00:04:14,700 Tas tiešām saka kaut ko angļu valodā, taču tas noteikti nav pilnīgi skaidrs. 75 00:04:14,700 --> 00:04:18,279 Un mēs būsim pilnu apli šodien kaitināt intervālu ko šis noslēpums ziņa šeit ir. 76 00:04:18,279 --> 00:04:23,490 Bet reālajā pasaulē datoriem, lietas nav pat izskatās viņi varētu būt angļu frāzes. 77 00:04:23,490 --> 00:04:28,430 Piemēram, tas ir tas, ko jūs varētu atrast standarta Linux vai Mac vai UNIX datora 78 00:04:28,430 --> 00:04:32,070 failu, kas bija reiz sauc parole failu. 79 00:04:32,070 --> 00:04:34,200 >> Mūsdienās tā ir pārvietota uz citām vietām. 80 00:04:34,200 --> 00:04:39,210 Bet, ja paskatās īstajā vietā sistēmu, jūs redzēsiet ne tikai savu lietotājvārdu 81 00:04:39,210 --> 00:04:43,400 vai citu cilvēku uz sistēmu, bet jūs redzēsiet šifrētu versija savu paroli. 82 00:04:43,400 --> 00:04:47,980 Patiešām, vārds kapenes tur liecina, ka šādi sīkumi tiek šifrēta, 83 00:04:47,980 --> 00:04:52,680 un šis šķietami izlases burtu un rakstzīmju un ciparu sēriju un tā tālāk 84 00:04:52,680 --> 00:04:56,480 var atšifrēt tikai vispārīgi zinot kādu noslēpumu - 85 00:04:56,480 --> 00:04:58,840 noslēpums vārdu, noslēpums numurs - 86 00:04:58,840 --> 00:05:03,160 un tā tiešām, par kriptogrāfiju galu galā vārīties uz leju māksla uzticēties kaut kāda 87 00:05:03,160 --> 00:05:05,650 un zinot kaut ka kāds cits nav. 88 00:05:05,650 --> 00:05:10,090 Tāpēc mēs izpētīt šo mazliet sīkāk šodien un PSET nākt. 89 00:05:10,090 --> 00:05:12,200 Un tagad vārdu par der / neder. 90 00:05:12,200 --> 00:05:15,360 It kā daži no jums ir ienira pset1, Appliance, 91 00:05:15,360 --> 00:05:19,080 un ļoti jaunu pasauli sev, saprotam, ka neapmierinātība un apmulsums 92 00:05:19,080 --> 00:05:21,700 un tikai tehniskas grūtības ir diezgan paredzams, 93 00:05:21,700 --> 00:05:24,180 sevišķi ar pirmo PSET, kur tur ir tikai tik daudz jauna, 94 00:05:24,180 --> 00:05:27,730 tikai iepazīties ar ls un CD un visi šie Arcane komandas 95 00:05:27,730 --> 00:05:33,050 un jauna vide, un tas ir atsevišķi no faktisko materiālu un pašu programmu. 96 00:05:33,050 --> 00:05:36,940 Tāpēc saprotam arī to, ka ir noteikti darba laiks, kas pastāv kā atbalsta struktūras. 97 00:05:36,940 --> 00:05:38,880 >> Sadaļas sākt šo nāk svētdiena. 98 00:05:38,880 --> 00:05:42,960 Bet pats galvenais, ja jūs sajūta tikai, ka tas nav pasaules jums, 99 00:05:42,960 --> 00:05:44,710 saprotam, ka tas tiešām tikai vajadzīgs laiks. 100 00:05:44,710 --> 00:05:48,600 Un ja nebūtu šo iespēju gadiem man par ņemot klases der / neder, 101 00:05:48,600 --> 00:05:50,990 godīgi, es nekad nebūtu pat kāju klasē. 102 00:05:50,990 --> 00:05:53,690 Un jūs varat mainīt šo līdz, teiksim, piektā kursa Pirmdien, 103 00:05:53,690 --> 00:05:58,280 Tātad, ja jūs esat uz malas tagad saprotam, ka nevis galva uz dažiem citiem ūdeņos vispār, 104 00:05:58,280 --> 00:06:01,260 Vai noteikti jāapsver tikai mainot nodot / neizdoties. 105 00:06:01,260 --> 00:06:04,570 Atkal, tur nav īsti šī kultūra šeit Hārvarda no ņemot lietas / neatbilstības 106 00:06:04,570 --> 00:06:08,670 jo visi patiešām vēlas sasniegt vai overachieve, 107 00:06:08,670 --> 00:06:11,130 bet godīgi sakot, tas ir brīnišķīgs veids, kā mēģināt kaut ko 108 00:06:11,130 --> 00:06:16,720 kas varētu būt pazīstams ar jums, un jūs galu galā darīt, vairumā gadījumu, diezgan labi, 109 00:06:16,720 --> 00:06:18,210 varbūt daudz jūsu pārsteigums. 110 00:06:18,210 --> 00:06:20,980 Un vēl konkrēti, ko es domāju / neatbilstības parasti dara, 111 00:06:20,980 --> 00:06:22,940 jo, kā jūs varētu būt pieredzējuši ar pset0, 112 00:06:22,940 --> 00:06:26,560 ja jūs nodot 10 stundas, 15 stundas, 25 stundas vērā daži PSET 113 00:06:26,560 --> 00:06:29,920 un jūs vienkārši banging galvu pret sienu un tas kļūst super vēlu vakarā 114 00:06:29,920 --> 00:06:33,950 bet tu esi PSET 90%, un Jūs vienkārši nevar izrēķināt viena lieta, 115 00:06:33,950 --> 00:06:36,520 / neatbilstības patiešām ņem malas off no klases, piemēram, tas, 116 00:06:36,520 --> 00:06:39,100 kur var kārtot no laimīgi saka: "Labi, es zinu, tas nav ideāls, 117 00:06:39,100 --> 00:06:42,350 bet es strādāju manu ass off par šo, es esmu diezgan apmierināts ar kur tas beidzās, " 118 00:06:42,350 --> 00:06:44,850 un kas atbilst cerības garāmbraukšanas / neder. 119 00:06:44,850 --> 00:06:47,540 Tātad paturēt to prātā. Labi. 120 00:06:47,540 --> 00:06:50,520 >> Tātad tiem no jums, kuri ir cīnījušies, lai izmantotu Harvard University Wi-Fi, 121 00:06:50,520 --> 00:06:54,780 zinu, ka tur ir CS50 SSID, Wi-Fi savienojums, peldošs ap 122 00:06:54,780 --> 00:06:56,490 ka Jums varētu būt labāk veicas par. 123 00:06:56,490 --> 00:07:00,130 Tas mazliet ironiski, ka parole šim, ja jūs vēlētos, lai mēģinātu izveidot savienojumu ar šo 124 00:07:00,130 --> 00:07:08,350 par labāku ātrumu - un dariet mums zināmu, ja tas nav labāk - ir 12345, visu ceļu līdz 8 125 00:07:08,350 --> 00:07:10,910 jo 8 ir drošāks nekā 5. 126 00:07:10,910 --> 00:07:16,910 Tātad, ja jums ir nepieciešama Wi-Fi paroli, izveidojiet savienojumu ar CS50 bezvadu šeit, 12.345.678, 127 00:07:16,910 --> 00:07:20,380 un post CS50 Pārrunājiet, ja jums vēl ir neregulāra savienojumu jautājumiem, 128 00:07:20,380 --> 00:07:25,420 un mēs pieņemsim pilnvaras, kas būtu jāzina par šo telpu. Labi. 129 00:07:25,420 --> 00:07:32,230 Tik ātri ķircinātājs, jo īpaši tiem no jums, kas ir fanu zēni vai meitenes no visām lietām Apple. 130 00:07:32,230 --> 00:07:37,460 Ko es izraka no pāris gadus atpakaļ bija šo failu šeit, iUnlock.c, 131 00:07:37,460 --> 00:07:39,930 tikai veida padarīt konkrētākas un sarežģītāka 132 00:07:39,930 --> 00:07:42,560 dažas no pamata C programmu mēs esam rakstiski. 133 00:07:42,560 --> 00:07:46,910 Tāpēc es atvēra šo failu, iUnlock.c. Tas ir pieejams par lekcijas lapā šodien. 134 00:07:46,910 --> 00:07:49,810 Kreisajā pusē jūs redzēsiet garš saraksts funkcijas. 135 00:07:49,810 --> 00:07:53,230 Tātad puisis, kurš rakstīja šo uzrakstīja daudz funkciju, vairāk nekā tikai galvenais. 136 00:07:53,230 --> 00:07:57,340 Viņš izmantoja visu ķekars bibliotēku šeit, un, ja mēs sāktu ritināt, 137 00:07:57,340 --> 00:08:04,890 ko tas patiesībā ir, ir pats pirmais, es uzskatu, kreka par sākotnējo IPHONE. 138 00:08:04,890 --> 00:08:09,830 >> Ja jūs vēlaties, lai jailbreak sākotnējo iPhone, kas nozīmē untether to no AT & T 139 00:08:09,830 --> 00:08:13,710 un faktiski instalēt īpašu programmatūru par to un darīt lietas, kas Apple nevēlējās cilvēki darīt, 140 00:08:13,710 --> 00:08:18,480 kāds bija laiks, lai noskaidrotu, kā tieši viņi varētu izmantot programmatūru trūkumus, 141 00:08:18,480 --> 00:08:22,690 kļūdas, bugs, jo Apple programmatūru, un tādējādi ir dzimis iUnlock.c-- 142 00:08:22,690 --> 00:08:26,760 ka, ja jūs apkopot to savā datorā un uzstādītas to uz iPhone 143 00:08:26,760 --> 00:08:29,430 kas bija savienota ar datoru, izmantojot, teiksim, izmantojot USB kabeli, 144 00:08:29,430 --> 00:08:32,450 tas dod jums administratīvus vai saknes privilēģijas uz jūsu iPhone 145 00:08:32,450 --> 00:08:34,620 un ļaut jums darīt diezgan daudz, ko jūs vēlaties. 146 00:08:34,620 --> 00:08:36,400 Un tā tur ir bijis šis aizraujoši kaķa un peles spēle 147 00:08:36,400 --> 00:08:39,340 starp Apple un pārējo pasauli jo īpaši to, kā daudzi uzņēmumi, 148 00:08:39,340 --> 00:08:43,350 mēģināt, lai bloķētu to stuff leju, lai jūs varētu darīt tikai ar to, ko viņi vēlas. 149 00:08:43,350 --> 00:08:47,360 Bet, pateicoties tādiem cilvēkiem kā šis un zema līmeņa detaļas izpratne - 150 00:08:47,360 --> 00:08:50,830 un šajā gadījumā C programmēšanas - un no pazīstamajiem konstrukcijas partija 151 00:08:50,830 --> 00:08:55,280 ka mēs esam sākuši spēlēt ar, jums ir iespēja patiešām sviras aparatūru 152 00:08:55,280 --> 00:08:59,250 tādā veidā jūs ieskatiem un ne vienmēr kādu komersantu. 153 00:08:59,250 --> 00:09:01,600 Tātad, piemēram, man nav ne jausmas, ko tas viss dara, 154 00:09:01,600 --> 00:09:03,580 bet GetVersion izklausās diezgan vienkārši, 155 00:09:03,580 --> 00:09:05,710 un izskatās, ka tas ir funkcija, ka šī persona rakstīja. 156 00:09:05,710 --> 00:09:09,250 Tas aizņem kādu skaitlim kā argumentu, neatgriežas neko, 157 00:09:09,250 --> 00:09:13,710 bet šķiet, cilpa ar par cilpu šeit un ja nosacījums, ja stāvoklī pārtraukuma, 158 00:09:13,710 --> 00:09:16,770 un kaut attiecas uz versiju numuri, ja mēs ritiniet uz leju, 159 00:09:16,770 --> 00:09:19,650 pat ja no šiem atslēgvārdiem partijas būs jauns. 160 00:09:19,650 --> 00:09:22,590 Un tur ir visai daudz funkciju šeit mēs nekad neesmu redzējis, un, iespējams, kādreiz redzēt 161 00:09:22,590 --> 00:09:24,350 gaitā semestra. 162 00:09:24,350 --> 00:09:29,160 >> Beigās, dienā, tas ievēro tos pašus noteikumus un loģiku, kas mēs esam spēlē ar līdz šim. 163 00:09:29,160 --> 00:09:34,340 Tātad tas ir pārāk vecs, lai kreka jūsu iPhone 3s vai 4s vai drīz 5s šīs dienas, 164 00:09:34,340 --> 00:09:38,830 bet zinu, ka tas viss ir ļoti daudz iegūst no šīs pasaules, ka mēs esam ienira. 165 00:09:38,830 --> 00:09:42,280 Pieņemsim to apskatīt nedaudz vairāk vienkāršs piemērs: 166 00:09:42,280 --> 00:09:46,260 šo vienu, tikai, lai iesilda ar kādu sintaksi un arī dažas citas datu tips 167 00:09:46,260 --> 00:09:48,910 ka mēs esam runājuši par to, bet nav īsti redzams C. 168 00:09:48,910 --> 00:09:53,670 Tas ir fails sauc positive1.c, un vienu augšpusē komentāriem, 169 00:09:53,670 --> 00:09:56,070 Tas tikai prasa, lai lietotājs sniedz pozitīvu skaitli. 170 00:09:56,070 --> 00:09:59,910 Tātad, tas ir piemērs do-kamēr cilpa, kas ir jauki, lai lietotāju interaktīvo programmu 171 00:09:59,910 --> 00:10:02,070 kur jums ir nepieciešams, lai pastāstītu lietotājam kaut ko darīt, 172 00:10:02,070 --> 00:10:05,530 un ja tie nav sadarboties jūs kliegt uz viņiem vai noraidīt savu ieguldījumu. 173 00:10:05,530 --> 00:10:10,480 Lieta punktā: Es esmu gatavojas darīt līnijas 19 līdz 24 174 00:10:10,480 --> 00:10:14,620 tik ilgi, kamēr lietotājs nav devis man pozitīvu skaitli. 175 00:10:14,620 --> 00:10:21,340 Šī detaļa šeit 18 līnijas, kāpēc es apliecinu n iepriekš visa šī looping uzbūvēt 176 00:10:21,340 --> 00:10:26,870 nevis blakus līdz 22 līnijas, kur es tiešām rūp, lai iegūtu n? Yeah. 177 00:10:26,870 --> 00:10:29,330 [Students] joma. >> Jā, tāpēc šis jautājums par darbības jomu. 178 00:10:29,330 --> 00:10:31,770 Un lajs izteiksmē, ko tas joma attiecas uz? 179 00:10:34,880 --> 00:10:41,560 Yeah. >> [Dzirdams studentu reaģēšanas] >> Vai tu runā nedaudz skaļāk? 180 00:10:41,560 --> 00:10:45,440 [Students] Kur jūs varat piekļūt šo mainīgo. >> Perfect. 181 00:10:45,440 --> 00:10:47,610 Kur jūs varat piekļūt konkrētu mainīgo. 182 00:10:47,610 --> 00:10:50,990 Un vispār, īkšķis noteikums līdz šim ir bijis, ka joma dažu mainīgo 183 00:10:50,990 --> 00:10:56,140 nosaka pēc jaunākajiem cirtaini bikšturi ka esat redzējuši. 184 00:10:56,140 --> 00:11:03,070 >> Un tāpēc šajā gadījumā, ja es sniedza kļūda paziņojot n 22 līnijas, ka līnija varētu strādāt. 185 00:11:03,070 --> 00:11:10,840 Es vēlos saņemt int, un es liktu to, ka mainīgais n 22 līnija, 186 00:11:10,840 --> 00:11:17,060 bet kas rindā kodu, tagad nav ne jausmas, ko es runāju par? >> [Students] 25. 187 00:11:17,060 --> 00:11:23,840 [Malan] 25, un izrādās, 24, kā arī tāpēc, ka šajā gadījumā tas neiekļaujas cirtaini lencēm. 188 00:11:23,840 --> 00:11:28,550 Tik vienkārši nedaudz par traucējumu mazliet, bet ļoti viegli atrisināt, vienkārši paziņojot, mainīgo 189 00:11:28,550 --> 00:11:30,700 ārpus funkciju pati. 190 00:11:30,700 --> 00:11:32,760 Redzēsim vēlāk šodien jūs varat iet vienu soli tālāk 191 00:11:32,760 --> 00:11:34,940 un jūs pat varētu saņemt nedaudz slinks. 192 00:11:34,940 --> 00:11:39,660 Un tas nav ieteicams vispār, bet jūs pat varētu saņemt slinks 193 00:11:39,660 --> 00:11:44,150 un nodot mainīgo globāli, tā sakot, nevis iekšpusē funkciju, nevis iekšpusē cilpas, 194 00:11:44,150 --> 00:11:49,800 bet failu pati, ārpus visas funkcijas jūs esat rakstiski, jo es darīju šeit 15 līnijas. 195 00:11:49,800 --> 00:11:55,220 Tas parasti sarauca pieri, bet saproti tas ir risinājums reizēm citas problēmas, 196 00:11:55,220 --> 00:11:56,910 kā mēs beidzot redzēt. 197 00:11:56,910 --> 00:11:59,500 Tātad tagad mēs atstāt to kā šis, bet pieņemsim redzēt, ja mēs varam pārrakstīt šo 198 00:11:59,500 --> 00:12:02,360 tikai, lai sāktu pašizpausmei nedaudz savādāk. 199 00:12:02,360 --> 00:12:05,550 Šī programma, tikai, lai būtu skaidrs, ir positive1. 200 00:12:05,550 --> 00:12:11,980 Ļaujiet man iet uz priekšu šeit un manā termināļa logā padarīt positive1, Enter. 201 00:12:11,980 --> 00:12:15,080 Apkopo labi. Es esmu gatavojas palaist positive1, hit Enter. 202 00:12:15,080 --> 00:12:19,250 Es pieprasu, ka jūs man vesels pozitīvs skaitlis. Es saku -1. Tas nestrādāja. 203 00:12:19,250 --> 00:12:22,340 0, 99. Tas, šķiet, darbojas. 204 00:12:22,340 --> 00:12:25,310 Varbūt ne visvairāk stingra pārbaude, bet vismaz tas ir jauki veselība pārbaudītu 205 00:12:25,310 --> 00:12:27,100 ka mēs esam uz pareizā ceļa. 206 00:12:27,100 --> 00:12:29,570 >> Tāpēc tagad ļaujiet man iet uz priekšu un atvērt versija 2 par šo, 207 00:12:29,570 --> 00:12:32,800 un kas ir atšķirīgs jau? 208 00:12:32,800 --> 00:12:39,030 Tā īsteno to pašu, bet to, kas lekt kā nepārprotami atšķiras šajā laikā? 209 00:12:40,790 --> 00:12:47,090 Tas bool zaļā krāsā. Tas ir iezīmēts zaļā krāsā, tas atslēgvārdu pazīstams kā bool, kas ir datu tips. 210 00:12:47,090 --> 00:12:50,510 Tas nenāk uzcelta uz visiem C. versijām 211 00:12:50,510 --> 00:12:52,650 Jums nepieciešams iekļaut konkrētu bibliotēka. 212 00:12:52,650 --> 00:12:56,460 Mūsu gadījumā, es iekļauta CS50 bibliotēku, lai mums ir pieeja bool. 213 00:12:56,460 --> 00:12:59,860 Bet 18 līnijā, mēs, šķiet, ir Būla vērtība šeit sauc pateicīgi. 214 00:12:59,860 --> 00:13:02,190 Es varētu būt sauc šo neko, bet es to sauca pateicīga 215 00:13:02,190 --> 00:13:04,750 tikai veida izteikt dažus semantisko nozīmi. 216 00:13:04,750 --> 00:13:07,700 Tātad sākotnēji 18 līnijas, es neesmu acīmredzot nav pateicīgs 217 00:13:07,700 --> 00:13:12,230 jo Būla vērtība pateicīgi tiek inicializēts ar viltus 18 rindā. 218 00:13:12,230 --> 00:13:16,500 Un tad šķiet, ko es esmu darījusi šeit 21 līnijām līdz 23 219 00:13:16,500 --> 00:13:19,200 ir es esmu tikai veida pārrakstīt manu loģiku. 220 00:13:19,200 --> 00:13:26,100 Līdz ar to nav funkcionāli atšķirīgas, bet 22 rindā tagad es pārbaudītu, int lietotājs ir sniedzis 221 00:13:26,100 --> 00:13:31,360 ir lielāks par 0, tad es vienkārši mainīt vērtību pateicīgs taisnība. 222 00:13:31,360 --> 00:13:35,590 Un kāpēc es varu darīt? Jo 25 līnija, acīmredzot es esmu gatavojas pārbaudīt stāvokli. 223 00:13:35,590 --> 00:13:39,760 Vai šī cilpa, kamēr pateicīgi ir nepatiesa. 224 00:13:39,760 --> 00:13:42,960 Tāpēc es ierosināju šo kā alternatīvu 1 versija 225 00:13:42,960 --> 00:13:47,050 jo tas ir vismaz nedaudz vairāk intuitīvu varbūt, tas nedaudz vairāk balstīta angļu valodā. 226 00:13:47,050 --> 00:13:51,980 Tā darīt tālāk, kamēr jūs neesat pateicīgi vai kamēr pateicīgi ir nepatiesa. 227 00:13:51,980 --> 00:13:56,220 Un šoreiz arī es acīmredzot negribu atcerēties, ko lietotājs ievadījis 228 00:13:56,220 --> 00:14:00,050 jo paziņojuma tur nav mainīgo n, tāpēc patiesībā, mazliet balts meli tur. 229 00:14:00,050 --> 00:14:03,290 >> Funkcionāli, programma ir nedaudz atšķirīgs, kad mēs nokļūt apakšā tā 230 00:14:03,290 --> 00:14:04,960 jo es neesmu atcerēties to, ko n. 231 00:14:04,960 --> 00:14:09,120 Bet es gribēju parādīt arī šeit, ka, lai gan mēs esam redzējuši GetInt 232 00:14:09,120 --> 00:14:13,780 un GetString ko izmanto par labajā pusē vienādības zīme līdz šim 233 00:14:13,780 --> 00:14:17,310 lai mēs atceramies vērtību, tehniski, tas nav obligāti nepieciešams. 234 00:14:17,310 --> 00:14:20,290 Ja kāda iemesla dēļ jūs vienkārši nav aprūpi, lai saglabātu vērtību, 235 00:14:20,290 --> 00:14:25,540 jūs vienkārši vēlaties, lai pārbaudītu vērtību, pamanīsiet, ka mēs varam vienkārši rakstīt šo kā GetInt, 236 00:14:25,540 --> 00:14:27,320 atvērt paren, tuvu paren. 237 00:14:27,320 --> 00:14:30,570 Ka funkcija ir gatavojas atgriezties vērtību, jo mēs esam teikuši. 238 00:14:30,570 --> 00:14:32,220 Tas notiek, lai dotu jums atpakaļ int. 239 00:14:32,220 --> 00:14:34,460 Un tā, ja jūs garīgi domā par šo notiek, 240 00:14:34,460 --> 00:14:38,190 kad es rakstīt 99, GetInt atgriež skaitli 99, 241 00:14:38,190 --> 00:14:41,840 un tā konceptuāli, tas ir, it kā mans kods ir faktiski šo. 242 00:14:41,840 --> 00:14:45,950 Tātad, ja 99 ir patiešām lielāks par 0, tad pateicīgs kļūst patiess, 243 00:14:45,950 --> 00:14:50,810 tad līnijas 25 saprot ooh, mēs esam darīts, jo es esmu tagad pateicīgs, 244 00:14:50,810 --> 00:14:53,970 un 26 līnija, mēs vienkārši pateikt: "Paldies par pozitīvu skaitlim!" 245 00:14:53,970 --> 00:14:55,960 neatkarīgi no tā gadījās būt. 246 00:14:55,960 --> 00:14:59,140 Tagad pieņemsim do nedaudz sintaktisko cukura šeit, lai runāt. 247 00:14:59,140 --> 00:15:04,670 Redzēsim, vai mēs varam sakopt šo pozīciju 25 ar šo trešo un pēdējo variantu positive3. 248 00:15:04,670 --> 00:15:13,600 >> Pamanīt vienīgā atšķirība tagad ir kāda līnija kodu? >> [Students] 25. >> [Malan] Jā, 25. 249 00:15:13,600 --> 00:15:17,680 Un mēs esam nav īsti redzējuši šo triks tikai vēl, bet mēs neesam redzēt izsaukuma zīmi pirmdien, 250 00:15:17,680 --> 00:15:21,070 kas apzīmē ko? >> [Students] Nav. >> Ne vai noliegums. 251 00:15:21,070 --> 00:15:23,510 Tātad to Būla vērtību un uzsist savu vērtību. 252 00:15:23,510 --> 00:15:25,810 Patiess kļūst nepatiess, viltus kļūst patiesa. 253 00:15:25,810 --> 00:15:30,420 Tātad, es ierosinu, ir pat nedaudz vairāk intuitīvu rakstīšanas kodu veidā 254 00:15:30,420 --> 00:15:33,430 jo es vēl sāktu pateicīgs nepatiesa, es joprojām darīt tālāk, 255 00:15:33,430 --> 00:15:36,010 Es noteikti pateicīgs taisnība, kad pienāks laiks, 256 00:15:36,010 --> 00:15:40,880 bet tagad jūs tiešām var tikai tulkot šo kodu mutiski kreisās uz labo, 257 00:15:40,880 --> 00:15:45,630 kamēr (pateicīgs!), jo sprādziena vai izsaukuma zīme apzīmē jēdzienu nav, 258 00:15:45,630 --> 00:15:47,580 tāpēc, kamēr nav pateicīga. 259 00:15:47,580 --> 00:15:49,900 Tātad vēlreiz, mēs esam nav ieviesusi jaunus jēdzienus par sevi. 260 00:15:49,900 --> 00:15:53,730 Mēs runājām par booleans atpakaļ, kad mēs spēlējām ar nulles, 261 00:15:53,730 --> 00:15:56,720 bet saprotu, tagad mēs varam tikai sākt rakstīt savu kodu daudzos dažādos veidos. 262 00:15:56,720 --> 00:16:01,060 Jo īpaši tāpēc pset1 ja jūs esat veida cīnās, lai noskaidrotu veidu, kā rakstīt kādu programmu, 263 00:16:01,060 --> 00:16:04,340 izredzes ir tu esi veiksmi, jo tur var būt jebkurš skaits risinājumu 264 00:16:04,340 --> 00:16:06,110 ka jūs var notikt pēc. 265 00:16:06,110 --> 00:16:10,500 Piemēram, tas ir tikai 3, pat vienkāršāko programmu. Labi. 266 00:16:10,500 --> 00:16:14,200 Un tagad atceros pirmdien devāmies uz šo piezīmi ar atgriešanās vērtībām. 267 00:16:14,200 --> 00:16:18,450 Tātad par ļoti pirmo reizi mēs uzrakstīja programmu, kas nav vienkārši ir galvenais; 268 00:16:18,450 --> 00:16:22,550 Tā arī ir sava pielāgotu funkciju, ka es uzrakstīju šeit. 269 00:16:22,550 --> 00:16:26,810 Tātad 31, kas iet caur 34 Es esmu īstenojusi kuba funkciju. 270 00:16:26,810 --> 00:16:30,240 Tas nav sarežģīti. Tas ir tikai * * šajā lietā. 271 00:16:30,240 --> 00:16:34,750 Bet kas ir svarīgi par to, ka es esmu ņemot ieguldījumu formā 272 00:16:34,750 --> 00:16:39,180 un es esmu atpakaļ izejas formā * *. 273 00:16:39,180 --> 00:16:43,560 Tāpēc tagad man ir iespēja, līdzīgi man, lai ar prinf vien izmanto, 274 00:16:43,560 --> 00:16:47,240 lai izsauktu šo funkciju, zvanot uz kuba funkciju. 275 00:16:47,240 --> 00:16:51,970 >> Un kubs funkcija prasa zināmu ieguldījumu, un kuba funkcija atgriež kādu produkciju. 276 00:16:51,970 --> 00:16:56,960 Savukārt, printf vienkārši darīja kaut ko. 277 00:16:56,960 --> 00:17:00,840 Tā nav atgriešanās neko, kas mums nerūp, lai gan, jo malā tas atgrieztu vērtību; 278 00:17:00,840 --> 00:17:03,110 Jums tikai parasti ignorēt to. 279 00:17:03,110 --> 00:17:06,510 Printf tikko izdarīja kaut ko. Tas bija blakus efekts drukāšanas uz ekrāna. 280 00:17:06,510 --> 00:17:11,770 Turpretī šeit, mums ir kuba funkcija, kas faktiski atgriežas kaut. 281 00:17:11,770 --> 00:17:15,520 Tātad tiem iepazinušies ar to, tas ir diezgan vienkārši ideja. 282 00:17:15,520 --> 00:17:19,640 Bet tiem, kas mazāk pazīstami ar šo ideju iet uz izejvielu un saņemt atpakaļ rezultātus, 283 00:17:19,640 --> 00:17:21,950 pamēģināsim tikai kaut super vienkārši. 284 00:17:21,950 --> 00:17:25,490 Vai kāds ērti nāk uz skatuves īsi? 285 00:17:25,490 --> 00:17:28,040 Jums ir apmierināti ar kameru uz jums kā labi. Yeah? Labi. 286 00:17:28,040 --> 00:17:31,240 Kāds ir Jūsu vārds? >> [Students] Kens. >> Ken. Labi. Ken, nākt uz augšu. 287 00:17:31,240 --> 00:17:35,050 Ken būs funkcija veidu šeit. 288 00:17:35,050 --> 00:17:38,720 Iesim uz priekšu un darīt to. Būsim mazliet iedomātā. 289 00:17:38,720 --> 00:17:42,260 Priecājos ar jums iepazīties. Laipni lūdzam skatuves centrā. Labi. 290 00:17:42,260 --> 00:17:46,640 Pieņemsim skārusi šo pogu šeit. Labi. 291 00:17:46,640 --> 00:17:49,820 Tātad šeit jums ir moderna tāfeles, 292 00:17:49,820 --> 00:17:53,470 un ko es esmu, ir galvenā funkcija, piemēram, 293 00:17:53,470 --> 00:17:56,460 un man nav iPad manā rokā. 294 00:17:56,460 --> 00:17:59,710 >> Man nav īsti atcerēties, kā - Nu, es nevaru teikt, ka. 295 00:17:59,710 --> 00:18:02,480 Man nav īsti ir labs rokraksts, 296 00:18:02,480 --> 00:18:05,520 un tik tāpēc es gribu, lai jūs drukāt kaut uz ekrāna par mani. 297 00:18:05,520 --> 00:18:12,040 Es esmu to galvenās programmas, un es esmu nāksies jums saku 298 00:18:12,040 --> 00:18:16,720 , rakstot to manā vistas nulles un tad iet jums ievadi. 299 00:18:16,720 --> 00:18:20,400 Tik muļķīgi, lai gan šis pasākums ir, funkciju jēdziens un aicinot funkciju 300 00:18:20,400 --> 00:18:22,400 un atgriežoties funkciju tiešām vārīties uz leju, lai šo. 301 00:18:22,400 --> 00:18:26,260 Es esmu galvenais, es tikko rakstījis printf, citēju-likt pēdiņas beigās kaut uz ekrāna, 302 00:18:26,260 --> 00:18:29,110 Es esmu darbojas šo programmu, un, tiklīdz printf izpaužas sauc, 303 00:18:29,110 --> 00:18:32,880 tas aizņem vienu argumentu vai viens parametrs dažreiz starp pēdiņas. 304 00:18:32,880 --> 00:18:35,880 Šeit ir tas, ka arguments. Es esmu iet to Ken. 305 00:18:35,880 --> 00:18:39,020 Viņš ir melnā kaste rakstisku dažas vairākus gadus atpakaļ 306 00:18:39,020 --> 00:18:41,510 kas acīmredzot tikai zina, kā drukāt lietas uz ekrāna. 307 00:18:41,510 --> 00:18:43,150 Tik izpildīt. 308 00:18:49,280 --> 00:18:51,280 Tas nav slikti. Ļoti labi. 309 00:18:51,280 --> 00:18:55,510 Tāpēc tagad Ken tiek darīts izpildes. Vai viņš ir roku man neko atpakaļ? 310 00:18:55,510 --> 00:18:57,470 Ne ka mēs esam redzējuši līdz šim. 311 00:18:57,470 --> 00:19:00,460 Atkal, printf tas faktiski atgriežas numuru, bet mēs ejam, lai ignorēt, ka tagad 312 00:19:00,460 --> 00:19:03,470 jo mēs nekad neesmu to izmanto. Tā ka tas uz Ken. 313 00:19:03,470 --> 00:19:08,580 Un tāpēc tagad galvenais pārņem kontroli par programmas atkal 314 00:19:08,580 --> 00:19:11,060 jo šī koda līnijas, printf, tiek darīts izpildes. 315 00:19:11,060 --> 00:19:14,050 Un mēs iet par mūsu ceļu, izpildot neatkarīgi citām līnijām ir tur. 316 00:19:14,050 --> 00:19:17,320 Tāpēc tagad pamēģināsim nedaudz atšķirīgu piemēru. 317 00:19:17,320 --> 00:19:24,940 Šoreiz šeit pieņemsim vispirms notīrītu ekrānu, un šoreiz mēs izdarīsim cubing funkciju, 318 00:19:24,940 --> 00:19:27,080 bet šoreiz, es gaidu produkcijas vērtību. 319 00:19:27,080 --> 00:19:29,180 >> Tāpēc pieņemsim iet uz priekšu un darīt to. 320 00:19:29,180 --> 00:19:35,790 Tagad man ir līnijas kodu, kas saka x izpaužas kubs x. 321 00:19:41,370 --> 00:19:46,370 Koda līnijas, atsaukšana, izskatās šādi: x = kubs (x); 322 00:19:46,370 --> 00:19:50,930 Tātad, kā tas notiek uz darbu? Iesim uz priekšu un sniegt jums baltu ekrānu. 323 00:19:50,930 --> 00:19:54,070 Es esmu gatavojas rakstīt uz leju tagad vērtību x, 324 00:19:54,070 --> 00:20:01,400 kas šajā brīdī notiek, ir, teiksim, 2, lai saglabātu tā vienkārši. 325 00:20:01,400 --> 00:20:06,150 Man ir uzrakstītas uz papīra vērtība 2, kas ir mana vērtība x. 326 00:20:06,150 --> 00:20:10,920 Es to nodod Ken. >> Un es vienkārši uzrakstīt atbildi? >> Jā, pieņemsim tikai uzrakstīt atbildi. 327 00:20:12,760 --> 00:20:18,940 Labi. Un tagad viņš ir atgriezties man kaut ko. Perfekta. Nice segue. 328 00:20:18,940 --> 00:20:23,120 Tāpēc tagad viņš rokas mani atpakaļ vērtību 8 Šajā gadījumā, un ko man darīt ar to? 329 00:20:23,120 --> 00:20:28,250 Patiesībā - redzēsim, iegūt šīs tiesības. Kas es esmu gatavojas darīt ar to? 330 00:20:28,250 --> 00:20:33,440 Tagad es esmu gatavojas izmantot šo vērtību un faktiski uzglabāt to, ka tajos pašos bitu atmiņas. 331 00:20:33,440 --> 00:20:35,170 Bet pamanīt es esmu veida cīnās šeit. 332 00:20:35,170 --> 00:20:38,210 Es esmu nedaudz mulsina, jo, kad man tiešām rakstīt vērtību x, 333 00:20:38,210 --> 00:20:43,150 jo tas, ko es esmu tikko izdarīt fiziski roku Kens papīra gabaliņš, kas bija vērtība 2, 334 00:20:43,150 --> 00:20:46,590 kas bija x, un, protams, tas ir tieši tas, kas notika. 335 00:20:46,590 --> 00:20:50,210 Tātad izrādās, ka tad, kad jūs zvanu funkciju, un jums iet uz argumentu 336 00:20:50,210 --> 00:20:53,290 piemēram sveiki, pasaules vai jums iet ar argumentu, piemēram 2, 337 00:20:53,290 --> 00:20:57,110 vispār, jūs iet uz kopiju šo argumentu. 338 00:20:57,110 --> 00:21:00,730 Un tā tāpat kā es pierakstīju numuru 2 šeit un pasniedza to Ken, 339 00:21:00,730 --> 00:21:04,720 ka ir nozīmē, ka man joprojām ir kopija no vērtības 2 kaut kur 340 00:21:04,720 --> 00:21:08,890 jo patiesi, tagad, ka es esmu gotten atpakaļ vērtību 8, man ir nepieciešams, lai dotos atpakaļ uz RAM 341 00:21:08,890 --> 00:21:12,130 un faktiski pierakstīt 8 Ja man reiz bija numuru 2. 342 00:21:12,130 --> 00:21:16,950 Tātad vizuāli, atcerieties šo jēdzienu aizrit, burtiski, kopiju vērtību. 343 00:21:16,950 --> 00:21:20,780 >> Ken dara viņa lieta, rokas mani atpakaļ kaut ko - šajā gadījumā ir vērtība, piemēram, 8 - 344 00:21:20,780 --> 00:21:24,980 un tad man ir kaut kas jādara ar šo vērtību, ja es gribu, lai saglabātu to apkārt. 345 00:21:24,980 --> 00:21:29,650 Tātad tas viss nāks atpakaļ būs pārāk pazīstams pirms ilgi. 346 00:21:29,650 --> 00:21:34,920 Paldies tik daudz par šo demo šeit, Ken. [Aplausi] 347 00:21:34,920 --> 00:21:36,920 Ļoti labi darīts. 348 00:21:36,920 --> 00:21:42,690 Paskatīsimies, kā tas galu galā ir saistīts ar kādu no funkcijām izsaucēja ka mēs esam bijuši dara šeit. 349 00:21:42,690 --> 00:21:47,910 Ļaujiet man iet uz priekšu un mūs atpakaļ uz cubing piemēram, šeit. 350 00:21:47,910 --> 00:21:53,300 Ievērojiet, ka, ja mēs vēlamies, lai faktiski sākt lietot šo tālāk, 351 00:21:53,300 --> 00:21:57,570 mēs spēsim jābūt uzmanīgiem par to, ka numurs x kas ir izciesti šeit 352 00:21:57,570 --> 00:22:01,530 atšķiras no tā, ko patiesībā tiek pieņemts uz funkciju. 353 00:22:01,530 --> 00:22:05,880 Tātad vēlreiz, ko kopiju caurlaide kļūs diezgan piederīgs tikai brīdi. 354 00:22:05,880 --> 00:22:09,580 Pieņemsim to apskatīt kaut ko, kas nav gluži darbu labi vēl. 355 00:22:09,580 --> 00:22:13,250 Es iešu uz priekšu un atvērt 1/3 buggy piemērs, kas ir kļūdains pēc būtības, 356 00:22:13,250 --> 00:22:18,550 un to sauc buggy3 un tā īsteno swapping funkciju. 357 00:22:18,550 --> 00:22:25,110 Šeit mums ir galvenā funkcija, kas ir x un y patvaļīgi inicializēts ar 1 un 2, attiecīgi. 358 00:22:25,110 --> 00:22:27,700 Mēs varētu izmantot GetInt, bet mums vienkārši ir nepieciešams vienkāršs izmantot, 359 00:22:27,700 --> 00:22:30,170 tāpēc iekodēts kā 1 un 2. 360 00:22:30,170 --> 00:22:35,340 Līnijās 21 un 22, mēs acīmredzot izdrukāt x un y, 1 vienu līniju. 361 00:22:35,340 --> 00:22:39,720 Tad 23 līnijas, es varu pieprasīt es esmu pārnešana šīs vērtības, dot, dot, dot. 362 00:22:39,720 --> 00:22:44,170 Es acīmredzot zvanu funkcija līnija 24 sauktais mijmaiņas ka aizņem 2 argumentus. 363 00:22:44,170 --> 00:22:48,300 Tas ir pilnīgi legit, lai funkcijas, veikt 2 argumentus. Mēs esam redzējuši printf darīt jau. 364 00:22:48,300 --> 00:22:51,830 >> Tātad mijmaiņas acīmredzot ņem X un Y, un jo tā nosaukums liecina, 365 00:22:51,830 --> 00:22:54,670 Es ceru, ka tas notiek uz mijmaiņas šos 2 vērtības. 366 00:22:54,670 --> 00:23:00,090 Tātad, tad es varu pieprasīt uz līnijas 25 "Aizstāja!" un es pārdrukāt x un y 367 00:23:00,090 --> 00:23:03,070 pieņemot, ka tie esam patiešām ir mijmaina. 368 00:23:03,070 --> 00:23:06,080 Bet, ja es tiešām palaist šo programmu - ļaujiet man atvērt termināla logu, 369 00:23:06,080 --> 00:23:09,860 ļaujiet man buggy3 - kā liecina nosaukums, tas nav gatavojas pārtraukt labi 370 00:23:09,860 --> 00:23:15,770 jo, kad es hit Enter, ievērosiet, ka x ir 1, y 2, 371 00:23:15,770 --> 00:23:19,420 un vēl pēc programmas beigām, tie joprojām ir, faktiski, tas pats. 372 00:23:19,420 --> 00:23:22,960 Tātad, pamatojoties uz demonstrāciju tikai tagad ar Ken, kas patiesībā notiek? 373 00:23:22,960 --> 00:23:28,710 Pieņemsim pikējošais šajā mijmaiņas funkciju. Tas ir super īss. Tas ir tikai dažas rindiņas kodu ilgu. 374 00:23:28,710 --> 00:23:34,520 Bet kas ir būtiska problēma, pamatojoties uz vienkāršu stāsts šeit ar Ken? 375 00:23:34,520 --> 00:23:36,670 Kāpēc mijmaiņas bojāta? 376 00:23:36,670 --> 00:23:39,660 [Students] Jūs glabāšanai uz kopiju, ne mainīga. 377 00:23:39,660 --> 00:23:43,980 Tieši tā. Mēs glabāšanai uz kopiju, nevis uz mainīgo pati. 378 00:23:43,980 --> 00:23:47,170 Citiem vārdiem sakot, mijmaiņas acīmredzot aizņem 2 argumentus, Int, 379 00:23:47,170 --> 00:23:49,370 un tas ir patvaļīgi sauc un b, 380 00:23:49,370 --> 00:23:54,420 un šeit es esmu pagājis X un Y, kas ir attiecīgi 1 un 2, 381 00:23:54,420 --> 00:23:58,770 bet es neesmu burtiski iet uz x, es neesmu burtiski iet y, 382 00:23:58,770 --> 00:24:01,450 Es esmu pieņemot no x kopiju un y kopija. 383 00:24:01,450 --> 00:24:04,510 Tas ir gandrīz tā, it kā tu nokopēt un ielīmēt swap 384 00:24:04,510 --> 00:24:07,810 vērtības, kas jūs vēlaties, lai tiešām manipulēt. 385 00:24:07,810 --> 00:24:14,480 Tātad, ja tas ir gadījumā, kad es programma starta izpildītāja līnija 35, tad 36, 386 00:24:14,480 --> 00:24:18,650 kad man ar 37 līniju, šajā brīdī stāsts, kāda ir vērtība? 387 00:24:21,040 --> 00:24:25,050 Šajā brīdī stāsts, 37 līnija, kāda ir vērtība šajā brīdī? >> [Students] 1. 388 00:24:25,050 --> 00:24:29,280 [Malan] Tas būtu vienkārši 1, pa labi, jo x tika pieņemts kā pirmo argumentu, 389 00:24:29,280 --> 00:24:33,080 un šī funkcija tikai patvaļīgi zvana pirmais arguments ir. 390 00:24:33,080 --> 00:24:38,200 Tāpat ir y otro argumentu, un tas ir tikai patvaļīgi zvanot uz otro argumentu b. 391 00:24:38,200 --> 00:24:40,990 >> Šis dalījums ir faktiski diezgan vienkārši izskaidrot. Padomā par to. 392 00:24:40,990 --> 00:24:43,320 Neviens no mums ir tikās persona, kas rakstīja printf, 393 00:24:43,320 --> 00:24:50,770 tā protams, viņš vai viņa ir ne jausmas, ko mūsu mainīgajiem 30 gadiem gatavojas saukt. 394 00:24:50,770 --> 00:24:56,650 Tāpēc ir jābūt atšķirībai starp to, ko jūs saucat mainīgie funkciju jūs rakstāt 395 00:24:56,650 --> 00:25:02,080 un ko tu sauc mainīgie funkciju jūs zvanāt vai izmantojot. 396 00:25:02,080 --> 00:25:05,340 Tātad citiem vārdiem sakot, es esmu uzrakstījis manu mainīgos kā x un y, 397 00:25:05,340 --> 00:25:08,890 bet, ja kāds cits bija rakstīts mijmaiņas funkciju, viņš vai viņa noteikti nebūtu zināt 398 00:25:08,890 --> 00:25:10,690 kāds ir mans mainīgie gatavojas saukt, 399 00:25:10,690 --> 00:25:13,830 lai saprastu, ka tas ir iemesls, kāpēc jums ir šī divdabība nosaukumiem. 400 00:25:13,830 --> 00:25:16,750 Tehniski, es varētu darīt sagadīšanās, 401 00:25:16,750 --> 00:25:20,080 bet tie joprojām būtu pieņemts kā kopijas. 402 00:25:20,080 --> 00:25:23,650 Tas būtu tikai tīra sakritība estētiski ja šī persona, kas rakstīja swap 403 00:25:23,650 --> 00:25:26,150 bija izmantojusi tos pašus vārdus. 404 00:25:26,150 --> 00:25:32,370 Tātad šajā brīdī stāsts, 37 līnija, ir 1, b ir 2, un tagad es doties uz mijmaiņas tiem. 405 00:25:32,370 --> 00:25:34,900 Pirmkārt, ļaujiet man patiesībā darīt daudz vienkāršāk. 406 00:25:34,900 --> 00:25:36,690 Es nezinu, ko šie 3 rindiņas kodu darām. 407 00:25:36,690 --> 00:25:41,210 Ļaujiet man tikai darīt: b =; = b; darīts. 408 00:25:41,210 --> 00:25:44,690 Kāpēc tas ir salauzta, loģiski? 409 00:25:46,490 --> 00:25:48,900 Tas ir sava veida intuitīvo lieta, vai ne? 410 00:25:48,900 --> 00:25:52,560 Tātad kļūst b un b kļūst, 411 00:25:52,560 --> 00:25:57,730 bet problēma ir tā, ka tiklīdz 37 līnijas izpilda, kāda ir vērtība un B? 412 00:25:57,730 --> 00:26:03,410 Pats, 1, jo jūs esat clobbered, tā sakot, jūs esat mainījuši b vienāds. 413 00:26:03,410 --> 00:26:08,890 Lai vienreiz līnija 37 ir izpildīts, tas ir lieliski, jums tagad ir 2 kopijas numuru 1 414 00:26:08,890 --> 00:26:13,350 iekšpuses šo funkciju, lai tad, kad jūs sakāt 38 rindā = b, 415 00:26:13,350 --> 00:26:17,640 Jūs esat veida ieskrūvē, jo jūs esat tikai piešķirot 1 līdz 1. 416 00:26:17,640 --> 00:26:20,580 Jūs esat veida zaudējis vērtību jums nerūp. 417 00:26:20,580 --> 00:26:23,220 Tātad sākotnējā versijā šis, pamanīt to, ko es darīju. 418 00:26:23,220 --> 00:26:26,850 Es tā vietā bija trešajā rindā kodu, kas izskatījās. 419 00:26:26,850 --> 00:26:28,580 Es paziņoju pagaidu mainīgo. 420 00:26:28,580 --> 00:26:32,170 >> TPP ir ļoti kopīgs nosaukums pagaidu mainīgo, un tas ir int 421 00:26:32,170 --> 00:26:34,580 jo tā ir saskaņot to, ko es gribu, lai kopiju. 422 00:26:34,580 --> 00:26:39,770 Es glabāt kopiju no iekšpuses TPP, lai vienreiz līnija 37 ir izpildīts, 423 00:26:39,770 --> 00:26:45,860 gada vērtība ir - ātri veselība pārbaudītu - 1, no b vērtība ir 2, 424 00:26:45,860 --> 00:26:48,970 un par tmp vērtība ir arī 1. 425 00:26:48,970 --> 00:26:52,060 Tāpēc tagad es izpildīt līnija 38. 426 00:26:52,060 --> 00:27:00,540 Kad līnija 38 izpilda, uzņemas ar b vērtību. Un b bija 2, tāpēc tagad ir 2. 427 00:27:00,540 --> 00:27:05,210 Tātad šajā brīdī stāsts, ir 2, b ir 2, un TPP ir 1, 428 00:27:05,210 --> 00:27:11,060 tāpēc tagad loģiski, mēs varam tikai plunkšķis TPP vērtība uz B un mēs esam darīts. 429 00:27:11,060 --> 00:27:12,800 Tātad mēs esam atrisināt šo problēmu. 430 00:27:12,800 --> 00:27:17,720 Diemžēl, kad es palaist šo programmu šādā veidā, tas nav reāli mijmaiņas nekādas vērtības. 431 00:27:17,720 --> 00:27:20,100 Bet, lai būtu skaidrs, kāpēc? 432 00:27:23,660 --> 00:27:26,450 Es noteikti loģisku problēmu no tikai pirms brīža, 433 00:27:26,450 --> 00:27:31,020 bet atkal, ja man palaist šo programmu, x un y paliek nemainīgs 434 00:27:31,020 --> 00:27:33,310 gada beigās programmas izpildi. 435 00:27:33,310 --> 00:27:37,220 [Dzirdams students komentārs] >> Mēs neesam atgriezušies neko, tā ka ir taisnība. 436 00:27:37,220 --> 00:27:39,670 Bet izrādās, tur ir par problēmu, mazliet šeit, jo līdz šim, 437 00:27:39,670 --> 00:27:44,170 Vienīgais, ko mēs esam spējuši atgriezties, ir viena lieta, un tas ir ierobežojums C. 438 00:27:44,170 --> 00:27:49,070 Jūs varat atgriezties tikai patiešām vienu vērtību, un tādā gadījumā es esmu veida iestrēdzis šeit 439 00:27:49,070 --> 00:27:53,310 jo es varētu atgriezties jaunu vērtību x vai es varētu atgriezties jaunu vērtību y, 440 00:27:53,310 --> 00:27:55,190 bet es gribu gan atpakaļ. 441 00:27:55,190 --> 00:27:58,650 Tāpēc atgriežoties nav vienkāršs risinājums šeit. 442 00:27:58,650 --> 00:28:01,710 Bet problēma būtībā ir, kāpēc? Ko mēs patiesībā samainīti? 443 00:28:01,710 --> 00:28:04,190 [Students] un b. >> Un b. 444 00:28:04,190 --> 00:28:08,230 Bet a un b ir kopijas X un Y, kas nozīmē, mēs vienkārši darīja visu darbu, 445 00:28:08,230 --> 00:28:11,650 mēs tikko pavadīja 3 minūtes runā par mijmaiņas funkciju un visu šo mainīgo 3, 446 00:28:11,650 --> 00:28:15,420 un tas ir lieliski, pilnīgi pareizi atsevišķi, 447 00:28:15,420 --> 00:28:20,740 bet A un B darbības joma tikai šajās līnijās šeit. 448 00:28:20,740 --> 00:28:24,790 >> Tik vienkārši kā par cilpu, ja jūs atzīt skaitlim es iekšā cilpa, 449 00:28:24,790 --> 00:28:28,760 Tāpat, ja jūs deklarējot un b iekšpusē funkciju, kas jūs esat rakstiski, 450 00:28:28,760 --> 00:28:33,320 viņi tikai derīgs iekšā šī funkcija, kas nozīmē, tiklīdz mijmaiņas tiek darīts izpildes 451 00:28:33,320 --> 00:28:38,470 un mēs aiziet no līdz 25 līnija 24 līnijas, x un y nav mainījies vispār. 452 00:28:38,470 --> 00:28:42,790 Jūs vienkārši izšķērdēta visai daudz laika pārnešana kopijas mainīgajiem. 453 00:28:42,790 --> 00:28:47,010 Tātad izrādās, ka risinājums ir tas tiešām nav skaidrs. 454 00:28:47,010 --> 00:28:50,670 Tas nav gluži pietiekami, lai atgrieztos vērtības, jo mēs varam atgriezties tikai 1 vērtība, 455 00:28:50,670 --> 00:28:53,470 un es tiešām gribu, lai mijmaiņas gan x un y, tajā pašā laikā, 456 00:28:53,470 --> 00:28:55,210 tāpēc mēs esam nāksies atgriezties pie šī. 457 00:28:55,210 --> 00:29:01,020 Bet tagad, saprotam, ka jautājums būtiski atvasināts no tā, ka a un b ir kopijas 458 00:29:01,020 --> 00:29:03,630 un tie ir savā darbības jomā. 459 00:29:03,630 --> 00:29:05,050 Mēģināsim atrisināt kautkādā veidā. 460 00:29:05,050 --> 00:29:11,250 Ļaujiet man tiešām ritināt atpakaļ šeit un atvērt, teiksim, ceturto variantu tas, buggy4. 461 00:29:11,250 --> 00:29:13,370 Ko par šo? 462 00:29:13,370 --> 00:29:17,810 Tas ir līdzīgi, bet vienkāršāk problēma apskatīt, pirms mēs pieņemt stab ir atrisināt to. 463 00:29:17,810 --> 00:29:24,190 Šī programma sauc pieauguma, un tas acīmredzot inicializē ar x skaitlis līdz 1 18 rindā. 464 00:29:24,190 --> 00:29:28,150 Es tam jāpieprasa x ir 1, es pēc tam jāpieprasa "palielināšanai ..." 465 00:29:28,150 --> 00:29:33,730 Tad es aicinu pieaugumu, bet tad līnijās 22 un 23, man apgalvo, tas ir bijis pieaudzis, 466 00:29:33,730 --> 00:29:40,220 Es apgalvo x ir tagad kāds tas ir - 2, iespējams - bet šī programma ir bagijs. 467 00:29:40,220 --> 00:29:42,610 Kāda ir problēma? 468 00:29:43,440 --> 00:29:50,160 Yeah. >> [Dzirdams studentu reaģēšanas] >> Tieši tā. 469 00:29:50,160 --> 00:29:52,490 Tātad x ir atzīta, protams, 18 līnija. 470 00:29:52,490 --> 00:29:54,700 Tas ir iekšā Main s cirtaini lencēm. 471 00:29:54,700 --> 00:29:58,440 Tik vienkārša atbilde ir, ka, kamēr x pastāv šeit, 472 00:29:58,440 --> 00:30:03,930 tā nepastāv 32 līnijas, tāpēc šī programma tiešām nav pat sastādīt. 473 00:30:03,930 --> 00:30:07,940 Kompilators kad mēģinu apkopojot šo kodu gatavojas kliegt uz mani 474 00:30:07,940 --> 00:30:14,100 par kādu nedeklarētu identifikatoru vai kaut kas šajā sakarā. Faktiski, pamēģināsim. 475 00:30:14,100 --> 00:30:18,470 Tas ir padarīt buggy4. Tur tas ir. 476 00:30:18,470 --> 00:30:22,110 Izmantot nedeklarētu identifikators "X" 32 rindā. 477 00:30:22,110 --> 00:30:25,580 Un tiešām, būsim precīzāk šeit šodien, lai tas ir lietderīgi 478 00:30:25,580 --> 00:30:27,580 biroju stundās un mājās. 479 00:30:27,580 --> 00:30:29,300 >> Ievērojiet, ka tas ir mazliet cryptically rakstīts. 480 00:30:29,300 --> 00:30:37,270 Bet fakts, ka šķindēt ir kliedza uz mums, sakot buggy4.c: 32:5, ir faktiski noderīga. 481 00:30:37,270 --> 00:30:42,050 Tas nozīmē, ka kļūda ir par pie raksturs nostāju 5 32 līniju. 482 00:30:42,050 --> 00:30:46,700 Tātad 1, 2, 3, 4, 5. Tas ir, faktiski, kur ir problēma. 483 00:30:46,700 --> 00:30:49,790 Un arī, arī paturēt prātā darba laika un mājās, es esmu laimīgs šeit. 484 00:30:49,790 --> 00:30:52,990 Man ir viena kļūda. Tas būs salīdzinoši viegli noteikt. 485 00:30:52,990 --> 00:30:55,990 Bet, ja jūs saņemsiet visu ekrānu pilns milzīgs kļūdu ziņojumiem, 486 00:30:55,990 --> 00:31:00,330 vēlreiz saprast, ka viszemākais viens var tikai simptomātiska no augšējais vienu. 487 00:31:00,330 --> 00:31:03,450 Tāpēc vienmēr tramdīt nosaka jūsu bugs no augšas uz leju 488 00:31:03,450 --> 00:31:05,820 jo tur var tikai ziedlapķēde efekts 489 00:31:05,820 --> 00:31:09,240 kas liek domāt, jums ir veids, vairāk problēmu, nekā jūs faktiski darīt. 490 00:31:09,240 --> 00:31:15,150 Tātad, kā mēs varētu noteikt šo ja mans mērķis ir, lai pieauguma x? >> [Students] Marka x pasaules. 491 00:31:15,150 --> 00:31:17,060 Labi, lai mēs varētu veikt x globāla. 492 00:31:17,060 --> 00:31:20,480 Paņemsim saīsni, kas man brīdināja par agrāk, taču heck, mēs vienkārši ir nepieciešams ātrs risinājums, 493 00:31:20,480 --> 00:31:25,730 tāpēc pieņemsim tikai teikt int x šeit. Tas padara x globāla. 494 00:31:25,730 --> 00:31:31,800 Tāpēc tagad galvenais ir pieeja tai, un pieaugums ir pieejama, 495 00:31:31,800 --> 00:31:34,110 un tāpēc ļaujiet man iet uz priekšu un apkopo šo tagad. 496 00:31:34,110 --> 00:31:37,630 Padarīt buggy4, Enter. Šķiet, lai apkopotu tagad. 497 00:31:37,630 --> 00:31:41,230 Pieņemsim palaist buggy4. Un tas, šķiet, faktiski strādā. 498 00:31:41,230 --> 00:31:45,150 Šī ir viena no šīm lietām, kas ir darīt, kā es saku, nevis kā man, 499 00:31:45,150 --> 00:31:47,010 kā es tikko darīts šeit, jo kopumā 500 00:31:47,010 --> 00:31:50,440 Mūsu programmas ir gatavojas iegūt daudz vairāk interesantu un daudz ilgāk, nekā tas, 501 00:31:50,440 --> 00:31:56,390 un, ja jūsu risinājums dzīves problēmām ir tikai nodot visus mainīgos augšpusē jūsu failu, 502 00:31:56,390 --> 00:31:59,690 ļoti ātri do programmas nokļūt horrifically grūti pārvaldīt. 503 00:31:59,690 --> 00:32:02,190 Tā kļūst grūtāk izdomāt jaunus mainīgo nosaukumi, 504 00:32:02,190 --> 00:32:05,240 tā kļūst grūtāk saprast, ko mainīgais ko dara, 505 00:32:05,240 --> 00:32:08,460 un tāpēc kopumā, tas nav labs risinājums. 506 00:32:08,460 --> 00:32:10,030 Tāpēc pieņemsim darīt labāk. 507 00:32:10,030 --> 00:32:12,160 Mēs nevēlamies, lai izmantotu globālu mainīgo šeit. 508 00:32:12,160 --> 00:32:16,240 >> Es vēlos, lai pieauguma x, tāpēc es varētu, protams - 509 00:32:16,240 --> 00:32:18,670 beigās, dienā, tas ir sava veida dumjš stāsts, jo mēs vienkārši darīt - 510 00:32:18,670 --> 00:32:24,450 bet, ja es nezināju par šo operatoru vai man nebija atļauts mainīt galvenajā pati, 511 00:32:24,450 --> 00:32:30,730 Kā vēl es varētu īstenot Ken nekā šeit šoreiz nevis kubu bet pieauguma? 512 00:32:31,380 --> 00:32:33,190 Kā es varu mainīt šo lietu šeit? Yeah. 513 00:32:33,190 --> 00:32:38,480 [Students] jo x Pass un pēc tam atgriezties [dzirdams] >> Labi, labi. 514 00:32:38,480 --> 00:32:41,900 Tātad, kāpēc nav man iet X un tad nevis atdot, 515 00:32:41,900 --> 00:32:44,870 kāpēc ne es vienkārši atgriezties x + 1. 516 00:32:44,870 --> 00:32:47,710 Pāris vairāk lietas ir jāmaina šeit. Es esmu uz pareizā ceļa. 517 00:32:47,710 --> 00:32:49,770 Kas vēl man ir nepieciešams nomainīt? Kāds cits. Yeah. 518 00:32:49,770 --> 00:32:51,740 [Dzirdams studentu reaģēšanas] 519 00:32:51,740 --> 00:32:54,730 Man vajag, lai mainītu atgriešanās veidu pieauguma, jo tas nav anulēta. 520 00:32:54,730 --> 00:32:57,780 Anulēts līdzekļi nekas netiek atgriezta, bet skaidri tagad tas ir, 521 00:32:57,780 --> 00:32:59,830 tāpēc to nepieciešams mainīt uz - >> [students] int. 522 00:32:59,830 --> 00:33:02,740 int jāsaskan ar ko es esmu faktiski atgriežas. 523 00:33:02,740 --> 00:33:05,180 Tagad kaut kas cits vēl ir bagijs šeit. Yeah. 524 00:33:05,180 --> 00:33:08,400 [Dzirdams studentu reaģēšanas] >> [Malan] Tāpēc man vajag, lai pieauguma x? 525 00:33:08,400 --> 00:33:12,080 [Dzirdams studentu reaģēšanas] >> [Malan] Ah, tāpēc man ir nepieciešams, lai iet x. 526 00:33:12,080 --> 00:33:16,660 Tāpēc man ir nepieciešams to darīt šeit. >> [Dzirdams students komentārs] 527 00:33:16,660 --> 00:33:20,050 [Malan] Tātad prototips, man ir, lai mainītu šo šeit. 528 00:33:20,050 --> 00:33:22,930 Tāpēc šī ir kļūt int, tas ir kļuvis - 529 00:33:22,930 --> 00:33:25,620 hmm, man tiešām ir bug leju šeit. Pieņemsim noteikt šo vienu vispirms. 530 00:33:25,620 --> 00:33:29,590 Kas būtu tas patiesībā ir? Tas ir got būt int kaut. 531 00:33:29,590 --> 00:33:32,700 Tas varētu būt x, bet atklāti sakot, ja jūs sākat aicinot visas jūsu mainīgajiem x, 532 00:33:32,700 --> 00:33:35,390 tas notiek, lai saņemtu mazāk un mazāk skaidrs, kas ir kas. 533 00:33:35,390 --> 00:33:39,560 >> Tāpēc pieņemsim tikai patvaļīgi izvēlēties citu nosaukumu konvencija par maniem palīgs funkciju, 534 00:33:39,560 --> 00:33:41,940 funkcijas es esmu rakstiski. Mēs to saucam, vai mēs varētu to saucam - 535 00:33:41,940 --> 00:33:45,010 Sauksim to skaits būs vēl skaidrāks. 536 00:33:45,010 --> 00:33:47,560 Tātad, tad man ir atgriezties kāds numurs ir plus 1, 537 00:33:47,560 --> 00:33:50,740 un tagad man ir jāmaina 1 cita lieta šeit un viena cita lieta šeit. 538 00:33:50,740 --> 00:33:54,350 Kas man ir jāmaina uz 21 līniju pirmais? >> [Dzirdams studentu reaģēšanas] 539 00:33:54,350 --> 00:33:57,610 [Malan] man ir piešķirt to x. Es nevaru vienkārši zvanīt pieaugumu (x). 540 00:33:57,610 --> 00:34:01,960 Man vajag atcerēties atbildi, mainot vērtību x kreisajā pusē. 541 00:34:01,960 --> 00:34:04,680 Un pat ja x ir tagad pa kreisi un pa labi, tas ir pilnīgi naudas sodu 542 00:34:04,680 --> 00:34:08,860 jo labajā pusē izpaužas izpildīts pirmais tam izpaužas plopped uz kreisā lieta - 543 00:34:08,860 --> 00:34:10,600 x šajā gadījumā. 544 00:34:10,600 --> 00:34:12,159 Un tad visbeidzot, tas ir viegli noteikt tagad. 545 00:34:12,159 --> 00:34:17,230 Tas būtu tikai saskaņot to, ko ir zemāk, int skaits. 546 00:34:17,230 --> 00:34:20,570 Tātad viss ķekars izmaiņas par patiešām stulba funkcijas 547 00:34:20,570 --> 00:34:24,420 bet pārstāvis lietām, ka mēs arvien vairāk vēlas darīt. 548 00:34:24,420 --> 00:34:27,090 Lai padarītu buggy4. Es esmu ieskrūvē augšu kaut kur. 549 00:34:27,090 --> 00:34:30,139 Ak, mans Dievs. Piecas kļūdas ar 6-line programma. 550 00:34:30,139 --> 00:34:35,690 Tātad, kas ir nepareizi, 18 līnija, raksturs 5? 551 00:34:35,690 --> 00:34:39,610 Tāpēc man ir atzīt šo, int. 552 00:34:39,610 --> 00:34:41,920 Pieņemsim redzēt. Ir viss ķekars citu kļūdām. 553 00:34:41,920 --> 00:34:47,010 Ak, mans Dievs - 19, 18, 21 - bet atkal, pieņemsim tikai notīrītu ekrānu, Control L šeit, 554 00:34:47,010 --> 00:34:49,380 un atkārto šķindēt. 555 00:34:49,380 --> 00:34:51,340 Tātad 5 problēmas ir faktiski tikai, ka 1. 556 00:34:51,340 --> 00:34:57,520 Tāpēc tagad pieņemsim darboties buggy4, Enter. Whew, x ir palielināts pareizi. 557 00:34:57,520 --> 00:35:02,720 Labi. Kādi jautājumi par to, kā pieauguma skaitļus? Yeah. 558 00:35:02,720 --> 00:35:09,870 [Dzirdams students jautājums] >> Labs jautājums. 559 00:35:09,870 --> 00:35:14,220 Kā tas ir, ka es varu tikai mainīt x uz numuru un programma uzreiz zinās? 560 00:35:14,220 --> 00:35:16,200 >> Atkal, domā par to, kā šo abstrakciju. 561 00:35:16,200 --> 00:35:21,600 Tātad, ja es esmu galvenais un Ken ir pieaugums, atklāti sakot, man vienalga, ko Kens aicina savu iPad. 562 00:35:21,600 --> 00:35:26,570 Man vienalga, ko viņš prasa kaut kas ir jādara ar savu īstenot šo funkcionalitāti. 563 00:35:26,570 --> 00:35:33,340 Tas ir īstenošana detaļa, kas man, galvenais, nav rūp. 564 00:35:33,340 --> 00:35:38,250 Un tā vienkārši mainot to konsekventi iekšpusē funkciju - skaits šeit un numurs šeit - 565 00:35:38,250 --> 00:35:40,960 ir viss tas notiek tik ilgi, kā es recompile. 566 00:35:40,960 --> 00:35:44,180 Tas ir veida, piemēram, ja jūs domājat par daudziem no mums, tiem no jums, ar vadītāja apliecību 567 00:35:44,180 --> 00:35:46,770 kuri brauc vai ja esat pat brauc ar automašīnu, 568 00:35:46,770 --> 00:35:50,950 lielākā daļa no mums nav ne jausmas, kā auto darbojas zem motora pārsega. 569 00:35:50,950 --> 00:35:54,970 Un burtiski, ja jūs atvērtu kapuci, lielākā daļa no mums - mani ieskaitot - 570 00:35:54,970 --> 00:35:56,940 nav gatavojas, lai tiešām zināt, ko mēs meklējam, ir, 571 00:35:56,940 --> 00:35:59,220 veida, piemēram, jūs varētu justies ar stuff kā šīs tiesības tagad. 572 00:35:59,220 --> 00:36:01,480 Bet mums nav īsti ir vienalga, kā auto darbojas, 573 00:36:01,480 --> 00:36:05,970 Mums nav vienalga, ko visi stieņi un virzuļu un kabeļu iekšpusē no automašīnas 574 00:36:05,970 --> 00:36:08,160 patiesībā dara. 575 00:36:08,160 --> 00:36:12,770 Tātad kaut kas līdzīgs, ko jūs saucat virzulis nav svarīgi šeit, šajā gadījumā. Pati ideja. 576 00:36:12,770 --> 00:36:25,300 Yeah. >> [Dzirdams students jautājums] 577 00:36:25,300 --> 00:36:29,180 Ja ir vairāk izmantojumu mainīgo Xa brīdi atpakaļ, 578 00:36:29,180 --> 00:36:32,150 Jūs, programmētājs, būtu jāmaina tos visur. 579 00:36:32,150 --> 00:36:36,600 Vai jūs varētu burtiski darīt File, Menu, un pēc tam atrast, Aizstāt - kaut kas līdzīgs, ka - 580 00:36:36,600 --> 00:36:39,170 bet jums nāksies izdarīt šīs pārmaiņas sevi. 581 00:36:39,170 --> 00:36:47,450 Jums ir jābūt konsekventiem. >> [Students] Ja ir vairāki mainīgie [dzirdams] 582 00:36:47,450 --> 00:36:53,100 Īpaši secībā, piemēram, šeit, ja tas bija int citu numuru? >> [Students] Pareizi. 583 00:36:53,100 --> 00:36:56,590 [Malan] Jā. Lai jautājumiem, kad jūs zvanāt funkciju. 584 00:36:56,590 --> 00:37:00,050 >> Tātad, ja es bija aicinot pieaugumu šeit ar kaut komats kaut ko, 585 00:37:00,050 --> 00:37:01,680 tur tieši kartēšanu. 586 00:37:01,680 --> 00:37:05,690 Pirmais mainīgais, neatkarīgi no tā sauc, ir izgatavots kopiju pirmo argumentu nekā šeit. 587 00:37:05,690 --> 00:37:07,760 Žēl. Tas nedrīkst būt iekavas. 588 00:37:07,760 --> 00:37:11,490 Otrs arguments līniju līdz ar otru. Tātad, lai, jā, jautājumi. Labi. 589 00:37:11,490 --> 00:37:17,020 Žēl. Man bija garš ceļš, lai saņemtu tur. Citi jautājumi? Labi. 590 00:37:17,020 --> 00:37:20,610 Tātad, pieņemsim redzēt, ja mēs nevaram uzzīmēt zīmējumu par to, kas patiesībā notiek šeit 591 00:37:20,610 --> 00:37:23,090 zem motora pārsega, lai runāt. 592 00:37:23,090 --> 00:37:26,640 Tas ir taisnstūris, kas varētu pārstāvēt datora atmiņā. 593 00:37:26,640 --> 00:37:30,970 Pat ja jums nav ne jausmas, cik atmiņa strādā vai cik RAM darbi, 594 00:37:30,970 --> 00:37:33,940 vismaz pieņemu, ka jums ir ķekarus to šajās dienās. 595 00:37:33,940 --> 00:37:36,280 Jūs esat ieguvuši megabaiti no tā, jūs esat ieguvuši gigabaiti tā, 596 00:37:36,280 --> 00:37:40,870 un mēs zinām no 0 nedēļā ka baits ir tieši tas, ko? >> [Students] 8 biti. 597 00:37:40,870 --> 00:37:42,950 8 biti, labi? Tā 8 nulles un 1. 598 00:37:42,950 --> 00:37:45,880 Tātad, ja jūsu datoram ir GIG RAM, 2 gigs RAM šajās dienās, 599 00:37:45,880 --> 00:37:55,030 jums ir miljards vai 2 miljards baitu atmiņas vai aptuveni 8 miljardiem eiro jeb 16000000000 bitiem 600 00:37:55,030 --> 00:37:56,890 iekšpusē datora. 601 00:37:56,890 --> 00:38:00,590 Atšķirībā no mazā Wooly Willy Piemēram, tas nav magnētiskās daļiņas parasti vairs. 602 00:38:00,590 --> 00:38:04,450 Arvien vairāk - arī klēpjdatorus vismaz - tas ir cietas diskus, SSDs, 603 00:38:04,450 --> 00:38:08,580 ka tikai nav kustīgu detaļu. Tas viss elektroniski. Tas viss elektroenerģijas bāzes. 604 00:38:08,580 --> 00:38:14,060 Tāpēc domāju, ka šī taisnstūra kā tikai pārstāv 1 vai 2 gigabaitu atmiņu, kas jums ir. 605 00:38:14,060 --> 00:38:16,020 >> Tāpēc tas rieciens atmiņas. 606 00:38:16,020 --> 00:38:19,830 Gada datorzinātņu pasaulē ir sava veida atdalīta 607 00:38:19,830 --> 00:38:22,950 gabalos atmiņas darīt dažādas lietas. 608 00:38:22,950 --> 00:38:27,190 Piemēram, ja tas ir jūsu datora atmiņa, kā to ierosināja taisnstūra tur, 609 00:38:27,190 --> 00:38:31,130 izrādās, ka pēc vienošanās, augšpusē jūsu RAM, tā teikt, 610 00:38:31,130 --> 00:38:33,660 parasti, ko sauc teksta segments. 611 00:38:33,660 --> 00:38:36,740 Tie ir 0s un 1s ka jums ir apkopojusi. 612 00:38:36,740 --> 00:38:39,020 Tātad, kad mēs esam paskatījās zem motora pārsega pie kāda a.out ir, 613 00:38:39,020 --> 00:38:41,980 visi šie 0s un 1s, palaižot programmu, 614 00:38:41,980 --> 00:38:46,290 tiem 0s un 1s tiek ielādēta no cietā diska kaut ko sauc atmiņa, 615 00:38:46,290 --> 00:38:49,320 un RAM viņi likts augšpusē. 616 00:38:49,320 --> 00:38:52,770 Tikmēr, jums ir citas lietas: inicializēt datus, uninitialize datus. 617 00:38:52,770 --> 00:38:57,510 Šie 2 swaths atmiņas atsaucas uz globālo mainīgo, kas jums nav bieži izmanto 618 00:38:57,510 --> 00:39:00,760 bet dažreiz, ja jūs darāt, viņi galu galā tur augšā, kā arī. 619 00:39:00,760 --> 00:39:04,260 Tad tur ir daži citi sīkumi: vides mainīgos, ko mēs ne tērēt daudz laika, 620 00:39:04,260 --> 00:39:06,860 bet tad 2 svarīgas lietas, kas nāks atpakaļ visā semestrī, 621 00:39:06,860 --> 00:39:08,550 kaudze un kaudze. 622 00:39:08,550 --> 00:39:12,210 Tātad lielākā daļa no jūsu datora atmiņa ir rezervēta, kad darbojas programma 623 00:39:12,210 --> 00:39:15,370 par kaut ko sauc kaudzīti un kaut sauc kaudze. 624 00:39:15,370 --> 00:39:18,840 Mēs nebrauksim runāt par kaudzes šodien, bet mēs runājam par kaudze. 625 00:39:18,840 --> 00:39:24,600 Kaudze ir domāts, lai uzburt vizuālo par ēdamzālē Paplātes jo Mather namā 626 00:39:24,600 --> 00:39:28,110 vai kur tev gadās būt, ja ēdamzāle darbinieki tīrīt tos katru dienu, 627 00:39:28,110 --> 00:39:30,180 viņi kaudze tos no grīdas uz augšu, 628 00:39:30,180 --> 00:39:34,550 un līdzīgi, jo atmiņas, tur ir šis liekot kaut uz kaudze ideju, 629 00:39:34,550 --> 00:39:36,860 liekot kaut uz steku, liekot kaut uz kaudze. 630 00:39:36,860 --> 00:39:38,240 Un ko mēs saprotam ar šo? 631 00:39:38,240 --> 00:39:41,860 >> Pieņemsim tuvinātu uz tikai apakšējā pusē, šajā attēlā, datora RAM, 632 00:39:41,860 --> 00:39:44,330 ierosināt sekojošo. 633 00:39:44,330 --> 00:39:48,170 Izrādās, ka tad, kad jūs darbināt programmu, piemēram a.out vai Hello - 634 00:39:48,170 --> 00:39:50,100 neatkarīgi programma ir, ka jūs esat rakstiski - 635 00:39:50,100 --> 00:39:54,020 atkal tie 0s un 1s tiek ielādēta no cietā diska, kas ir ilgtermiņa uzglabāšanu, 636 00:39:54,020 --> 00:39:57,230 paliek tur pat ja jūs kontaktdakšu, iepildīta RAM. 637 00:39:57,230 --> 00:40:00,610 RAM ir ātrāks nekā cieto disku - tas ir mazāks nekā cietajiem diskiem - 638 00:40:00,610 --> 00:40:03,300 bet tas ir, ja programmas dzīvot, bet jūs tos palaižot. 639 00:40:03,300 --> 00:40:08,230 Tātad jūs dubultklikšķi programmu uz Mac vai PC, tas ielādēta no cietā diska uz RAM. 640 00:40:08,230 --> 00:40:11,520 Tiklīdz tas ir iepildīta RAM, 0s un 1s aiziet pie ceļam augšā, 641 00:40:11,520 --> 00:40:16,610 ts teksta segmentā, bet tad tiklīdz jūsu programma faktiski sāk darboties, 642 00:40:16,610 --> 00:40:21,360 galvenā funkcija sauc, un galvenais, kā mēs esam redzējuši, bieži ir vietējo mainīgie, 643 00:40:21,360 --> 00:40:24,870 un tas ir Ints un stīgas un simboli un kā. 644 00:40:24,870 --> 00:40:29,180 Tātad, ja jūsu programma, kas jums ir rakstisks vai programma, kas jums ir dubultā noklikšķinājuši 645 00:40:29,180 --> 00:40:32,970 izmanto daži mainīgie iekšpusē main, 646 00:40:32,970 --> 00:40:37,240 viņi galu galā apakšā jūsu kaudze atmiņas, lai runāt. 647 00:40:37,240 --> 00:40:39,410 Konkrētāk, ko tas patiesībā nozīmē? 648 00:40:39,410 --> 00:40:48,450 Tas tikai nozīmē, ka, ja mēs gatavojamies skaits bytes RAM savā datorā, 649 00:40:48,450 --> 00:40:55,750 pamanīt, ka tas varētu būt baitu skaits 0, tas varētu būt baitu skaits 1, 2, 3, 4, 5, 6, 650 00:40:55,750 --> 00:41:01,480 visu ceļu līdz pat 2 miljardiem būtu visu ceļu tur augšā. 651 00:41:01,480 --> 00:41:05,880 Tātad, citiem vārdiem sakot, ja mēs runājam par RAM vai atmiņas ziņā baitos, 652 00:41:05,880 --> 00:41:11,500 tas tikai nozīmē, ka kāds ir nolēmis, ko skaitu katram no šiem atmiņas gabalos. 653 00:41:11,500 --> 00:41:16,650 Tātad, ja jums ir nepieciešams 32 bitus int vai jums ir nepieciešams 8 bitus char, 654 00:41:16,650 --> 00:41:18,840 kur tie nonāk atmiņā? 655 00:41:18,840 --> 00:41:22,350 >> Konceptuāli, viņi vienkārši galu galā pie šī lieta apakšā sauc kaudze. 656 00:41:22,350 --> 00:41:25,870 Bet kas ir interesanti tagad ir, kad galvenā aicina funkcija - 657 00:41:25,870 --> 00:41:28,750 pieņemsim funkciju sauc foo, tikai patvaļīgi nosaukums - 658 00:41:28,750 --> 00:41:32,330 kas notiek, ir galvenais ir apakšā šo kaudzi atmiņas; 659 00:41:32,330 --> 00:41:35,680 foo tagad tiek likts uz augšu no galvenā atmiņā. 660 00:41:35,680 --> 00:41:40,990 Tātad kādi vietējie mainīgie ka foo ir galu galā veida konceptuāli iepriekš tiem, kas galvenais. 661 00:41:40,990 --> 00:41:47,070 Ja foo aicina citu funkciju sauc bārs, šie mainīgie galu galā šeit. 662 00:41:47,070 --> 00:41:50,120 Ja josla aicina kaut ko citu, šeit, šeit, šeit. 663 00:41:50,120 --> 00:41:53,830 Tātad, kas ir interesanti par darbības programmu ir, ka jūs saucat funkcijas 664 00:41:53,830 --> 00:41:57,750 un kā tās funkcijas Zvanu funkcijas un kā tās funkcijas zvanu funkciju, 665 00:41:57,750 --> 00:42:01,470 Jūs veidot šo kaudzīti funkciju atmiņā. 666 00:42:01,470 --> 00:42:06,890 Un tikai vienu reizi funkcija atgriež jūs sākat saņemt šo atmiņu atpakaļ. 667 00:42:06,890 --> 00:42:10,860 Tātad viens no vienkāršākajiem veidiem, kā pietrūkt atmiņas ar datorprogrammu 668 00:42:10,860 --> 00:42:14,360 ir rakstīt funkcijas, kas nekad vairs neatgriezīsies. 669 00:42:14,360 --> 00:42:18,900 Tātad, piemēram, pieņemsim demonstrēt tik daudz ar apzināti buggy programmu. 670 00:42:18,900 --> 00:42:22,230 Ļaujiet man iet uz priekšu un darīt # ietvert , 671 00:42:22,230 --> 00:42:25,000 int galvenais (spēkā neesošs), 672 00:42:25,000 --> 00:42:32,940 un es esmu gatavojas darīt, kamēr (2> 1), kas, iespējams, nebūs nekad mainās uz mums, 673 00:42:32,940 --> 00:42:37,560 un ļaujiet man iet uz priekšu tagad un darīt printf. 674 00:42:37,560 --> 00:42:40,700 Faktiski, tas būs mazāk vizuāli interesants. Darīsim to. 675 00:42:40,700 --> 00:42:50,240 Par int i = 0, i> 0 - pieņemsim šo kļūdu - i + +. 676 00:42:50,240 --> 00:42:52,720 Un pieņemsim nav printf šeit. Pieņemsim praktizēt to, ko man bija sludināja. 677 00:42:52,720 --> 00:43:00,190 Pieņemsim ir metode šeit, void koris, un mēs teikt int i, 678 00:43:00,190 --> 00:43:06,830 un tad es esmu gatavojas teikt printf - nē, pieņemsim padara šo vairāk interesants. 679 00:43:06,830 --> 00:43:15,790 Pieņemsim faktiski nav drukāt neko. Darīsim šo: koris (i). 680 00:43:15,790 --> 00:43:20,390 Labi. Tātad tas ir bagijs, jo kāpēc? 681 00:43:20,390 --> 00:43:23,380 Es esmu padarot šo augšu, kā es iet, jo programma nav reāli darīt kaut interesi. 682 00:43:23,380 --> 00:43:25,320 >> Bet tas nav mērķis. 683 00:43:25,320 --> 00:43:29,630 Mērķis ir uzrakstīt programmu, kuras galvenā funkcija ko dara, acīmredzot? 684 00:43:30,720 --> 00:43:32,860 Zvanu pati. Un patiesībā, mums nav vajadzīga cilpa. 685 00:43:32,860 --> 00:43:37,200 Pieņemsim pat vienkāršos tas vienkārši tā, lai aizmirst par tiešām fundamentālo bug. 686 00:43:37,200 --> 00:43:39,640 Galvenie zvani koris dziedāt kādu koris, 687 00:43:39,640 --> 00:43:41,440 tad es tomēr kaut ko stulbu, un man bija koris zvanu koris 688 00:43:41,440 --> 00:43:43,760 jo es pieņemts kāds cits gatavojas to īstenot varbūt, 689 00:43:43,760 --> 00:43:47,210 un tagad tas nav gatavojas sastādīt vēl. Man vajag darīt? 690 00:43:47,210 --> 00:43:49,970 Man vajag prototips, atcerēties. 691 00:43:49,970 --> 00:43:56,110 Tāpēc man ir nepieciešams, lai būtu šeit void koris (int i); 692 00:43:56,110 --> 00:43:59,210 Tāpēc tagad, ja es iet uz leju šeit - patiesībā, pieņemsim izmantot lielāku logu. 693 00:43:59,210 --> 00:44:01,980 Iesim uz priekšu un veikt koris. 694 00:44:01,980 --> 00:44:06,490 Iesim uz priekšu un veikt koris. 695 00:44:06,490 --> 00:44:08,370 Izmantot nedeklarētu identifikators i. 696 00:44:08,370 --> 00:44:12,500 Ak, tas bija muļķīgi. Mums nav vajadzīga argumentu. Darīsim to. 697 00:44:12,500 --> 00:44:16,370 Es vēlētos, lai mēs būtu sākuši šo ceļu. Tas būtu bijis daudz vieglāk programma rakstīt. 698 00:44:16,370 --> 00:44:25,590 Tur. Tagad iesim uz manu termināļa logā, atkārto šķindēt, un šeit mēs iet. 699 00:44:25,590 --> 00:44:28,460 Tas bija ļoti ātri. 700 00:44:28,460 --> 00:44:31,150 Kas patiesībā vienkārši notika, lai gan? 701 00:44:31,150 --> 00:44:33,730 Nu, tagad es ņemšu pievienot drukas rindu, lai mēs varētu redzēt. 702 00:44:33,730 --> 00:44:43,490 Ļaujiet man teikt printf ("Es esmu šeit") - nav mainīgie. Mēs atstāt to tāpat. 703 00:44:43,490 --> 00:44:47,480 Ļaujiet man atkārto darīt. Ļaujiet man atkārto koris. 704 00:44:47,480 --> 00:44:57,380 Un ... come on. Saglabātu turpinās. 705 00:44:57,380 --> 00:44:59,930 Kā malā, kāpēc tā nav avarēja vēl? 706 00:44:59,930 --> 00:45:02,080 Segmentācija vaina notika super ātri pirms tam. 707 00:45:02,080 --> 00:45:06,570 [Dzirdams studentu reaģēšanas] >> Tieši tā. Tāpēc ir nepieciešams laiks, lai drukātu, labi? 708 00:45:06,570 --> 00:45:08,610 Tas tikai ņem vairāk darbu par datora daļas. 709 00:45:08,610 --> 00:45:10,620 Un tur tas ir: segmentācija vaina. 710 00:45:10,620 --> 00:45:12,340 >> Tātad paziņojums cik ātri programmas darbojas. 711 00:45:12,340 --> 00:45:14,130 Ja jūs neesat drukāšanas neko, super ātri. 712 00:45:14,130 --> 00:45:18,770 Bet mēs joprojām got šo segmentācijas vaina, jo to, kas notiek? 713 00:45:18,770 --> 00:45:21,210 Ja jūs domājat par to, kā jūsu datora atmiņā ir izklāstīts, 714 00:45:21,210 --> 00:45:28,740 Tas notiek, ir galvenais, bet šeit pieņemsim tikai nosaukt šo koris, un sauksim šo koris. 715 00:45:28,740 --> 00:45:34,550 Un tagad, ja man darīt manu estētiku labi, tas ir tikai gatavojas teikt koris, koris, koris, 716 00:45:34,550 --> 00:45:40,550 koris, koris, koris, koris, ad nauseum, un galu galā, kas notiks? 717 00:45:40,550 --> 00:45:45,630 Ja liels attēls, burtiski, tas ir, kas vienkārši notiek konceptuāli? 718 00:45:46,520 --> 00:45:48,630 Kaudzīti pārtēriņš kaudzi. 719 00:45:48,630 --> 00:45:51,940 Vai, vēl ļaunāk, jūs vienkārši pārsniegts viss, ieskaitot teksta segmentā, 720 00:45:51,940 --> 00:45:54,590 kas ir 0s un 1s kas pārstāv savu programmu. 721 00:45:54,590 --> 00:45:57,080 Īsāk sakot, tas ir vienkārši super, super slikti. 722 00:45:57,080 --> 00:45:58,830 Jūsu programmā ir spiraled ārpus kontroles. 723 00:45:58,830 --> 00:46:01,220 Jūs izmantojat kā vairāk atmiņas nekā paredzēts 724 00:46:01,220 --> 00:46:03,960 visi, jo stulba kļūda šajā gadījumā, 725 00:46:03,960 --> 00:46:08,040 vai šajā gadījumā ļoti apzināti darīts funkcija zvana pati. 726 00:46:08,040 --> 00:46:09,500 Tagad tas ir ne visi slikti. 727 00:46:09,500 --> 00:46:13,800 Funkcijas, kas sevi dēvēja tiešām ir ļoti liels spēks, ja jūs to izmantot pareizi. 728 00:46:13,800 --> 00:46:15,800 Man ir neizmanto to pareizi šeit. 729 00:46:15,800 --> 00:46:19,780 Tātad tas nav viss slikti, bet tas, ka es nekad tiešām pārtraukt zvana sevi 730 00:46:19,780 --> 00:46:23,520 ir būtisks trūkums šeit par šo programmu. 731 00:46:23,520 --> 00:46:26,400 Tātad, ja mēs ejam ar visu šo? Kas īsti notiek? 732 00:46:26,400 --> 00:46:30,340 Kad es zvanu pieauguma funkcijas, piemēram, mēs darām arī šiem piemēriem, 733 00:46:30,340 --> 00:46:33,420 Man ir vērtība, piemēram, 1 ka es iet iekšā 734 00:46:33,420 --> 00:46:37,570 Es iet uz kopiju skaitu 1, lai šādi notiek. 735 00:46:37,570 --> 00:46:44,240 Iesim uz pieauguma, piemēram, šis puisis tiesības pār šeit. 736 00:46:44,240 --> 00:46:46,870 Lūk, kas patiesībā notiek. 737 00:46:46,870 --> 00:46:53,400 Kad es aicinu pieaugumu un es iet uz X, piktogrammām, kas notiek šeit tas ir. 738 00:46:53,400 --> 00:46:59,520 >> Ja man ir vērtība 1 glabājas šeit, un es tiešām aicinu pieaugumu, 739 00:46:59,520 --> 00:47:04,330 ko tagad sauc koris - iPad ir throwing mani šeit. 740 00:47:04,330 --> 00:47:09,760 Sauksim šo pieaugumu, un mēs nezinām, ko tas nākamais funkcija būs. 741 00:47:09,760 --> 00:47:14,840 Tātad, kas patiesībā notiek, ir šeit kaut kur galvenais man ir rieciens atmiņas 742 00:47:14,840 --> 00:47:17,000 kas ir glabāšanas numuru 1. 743 00:47:17,000 --> 00:47:19,380 Kad es aicinu pieaugumu, es esmu, izmantojot citu rieciens atmiņas, 744 00:47:19,380 --> 00:47:21,230 bet tagad man ir kopija 1. 745 00:47:21,230 --> 00:47:26,660 Kad es pieauguma šo vērtību, tas kļūst 2, 746 00:47:26,660 --> 00:47:30,560 bet tad kas notiek ātrāk pieauguma atdevi? 747 00:47:30,560 --> 00:47:33,630 Šī atmiņa vienkārši izpaužas nodota atpakaļ uz operētājsistēmu, 748 00:47:33,630 --> 00:47:37,450 kas nozīmē, ka visi jūs esat darījuši, ir nekas noderīgs. 749 00:47:37,450 --> 00:47:43,120 1, kas sākotnēji tika ietverts galvenais ir joprojām faktiski tur. 750 00:47:43,120 --> 00:47:44,890 Tātad, kur mēs nokļūsim ar šo? 751 00:47:44,890 --> 00:47:49,770 Izrādās, ka atmiņa jums ir šī back-to-back baitu secība 752 00:47:49,770 --> 00:47:53,050 kas jums var likt stuff, un izrādās, ka mēs jau esam redzējuši kaut 753 00:47:53,050 --> 00:47:55,390 kas ietver liekot lietas atpakaļ atpakaļ atpakaļ atpakaļ. 754 00:47:55,390 --> 00:47:59,860 Kas ir virkne balstīta uz nedēļu 1 un tagad nedēļa 2? 755 00:48:00,020 --> 00:48:01,980 Tas ir tikai kolekcija rakstzīmes. 756 00:48:01,980 --> 00:48:04,310 Tātad izrādās, tāpat kā jūs varat ievietot numurus atmiņā, 757 00:48:04,310 --> 00:48:06,990 Tāpat jūs varat nodot rakstzīmes atmiņā. 758 00:48:06,990 --> 00:48:10,530 Un, kad sāksim rakstzīmes atmiņā atpakaļ atpakaļ atpakaļ uz muguras, 759 00:48:10,530 --> 00:48:13,620 izrādās, ka, izmantojot vienkāršāko lietām, piemēram, par cilpu vai kamēr cilpa, 760 00:48:13,620 --> 00:48:17,170 mēs varam atkārtot no kreisās uz labo pāri rakstzīmes virknē 761 00:48:17,170 --> 00:48:20,600 un sākt masāžas tos dažādos burtiem pavisam - 762 00:48:20,600 --> 00:48:23,370 varētu kļūt b, b, varētu kļūt c - 763 00:48:23,370 --> 00:48:27,780 tā, ka galu galā, mēs varam pieņemt kādu teikumu angļu valodā, kas faktiski ir jēga 764 00:48:27,780 --> 00:48:30,310 un pārvērst katru no šiem burtiem vienā laikā 765 00:48:30,310 --> 00:48:34,400 ejot caur mūsu datora atmiņā kreisās uz labo, lai faktiski šifrēt. 766 00:48:34,400 --> 00:48:35,810 Tāpēc pieņemsim mūsu piecu minūšu pārtraukumu šeit, 767 00:48:35,810 --> 00:48:40,730 un kad mēs atkal, mēs sāksim šo procesu kodēšanas informācija. 768 00:48:42,020 --> 00:48:43,520 >> Labi. 769 00:48:43,520 --> 00:48:48,070 Pirms mēs pikējošais kādu crypto un šīs lietas sauc bloki, 770 00:48:48,070 --> 00:48:51,470 ļaujiet man pauze, lai kādi jautājumi, jo es jūtu, ka man tiešām veida neskaidri 771 00:48:51,470 --> 00:48:54,080 daži no šiem tematiem. Tāpēc pieņemsim noteikt tagad, ja mēs varam. 772 00:48:54,080 --> 00:48:58,700 Mēs tikko runājām par atgriešanās vērtībām, mēs runājām par argumentiem, 773 00:48:58,700 --> 00:49:03,250 un mēs runājām par šo jēdzienu, ko mēs būsim atpakaļ uz nedēļās nākt, 774 00:49:03,250 --> 00:49:08,720 apskatei atmiņas par visu ķekars no šiem stacked paplātes, tā teikt, 775 00:49:08,720 --> 00:49:12,660 no apakšas uz augšu, tādā veidā, ka katrs paplātes, kas izpaužas likts uz skursteņa 776 00:49:12,660 --> 00:49:16,530 atspoguļo funkcija, kas pašlaik tiek sauc. 777 00:49:17,900 --> 00:49:20,260 Kādi jautājumi? 778 00:49:20,260 --> 00:49:22,640 Ļaujiet man uzdot jautājumu šeit. 779 00:49:22,640 --> 00:49:27,890 Ļaujiet man vienkāršot šo atpakaļ uz kāda tā bija pirms dažiem mūsu agrāk Q & A. 780 00:49:27,890 --> 00:49:35,570 Fakts, ka pieaugums ir atvērta iekavas, int skaits, slēgts iekavu - 781 00:49:35,570 --> 00:49:39,110 Kāda int skaits pārstāv? 782 00:49:39,110 --> 00:49:42,790 [Students] arguments. >> Arguments. Labi. Bet kas ir arguments? 783 00:49:42,790 --> 00:49:46,370 [Dzirdams studentu reaģēšanas] >> Kas tas ir? >> [Students] Kaut kas jums iet iekšā 784 00:49:46,370 --> 00:49:49,940 Labi, lai kaut kas jums iet iekšā Un vispār, tas ir tikai ieejas. 785 00:49:49,940 --> 00:49:52,450 Ja tu būtu rakstot funkciju un kuru funkcijas ir mērķi dzīvē 786 00:49:52,450 --> 00:49:55,770 ir darīt kaut nedaudz atšķiras katru reizi, kad lietojat to, 787 00:49:55,770 --> 00:50:00,110 tad vienīgais veids, lai to panāktu patiešām šķiet, būtu nodrošināt to ar ieejas 788 00:50:00,110 --> 00:50:03,510 lai tā varētu darīt kaut ko citu, ar šo ieejas katru reizi. 789 00:50:03,510 --> 00:50:06,650 >> Tātad jums ir nepieciešams norādīt divas lietas, kad funkcija tiek ievadi. 790 00:50:06,650 --> 00:50:09,590 Jums ir nepieciešams norādīt vārdu, kas jūs vēlaties, lai dotu šo ievadi 791 00:50:09,590 --> 00:50:12,700 tikai jūsu pašu ērtībai, lai jūs varētu atsaukties uz to 792 00:50:12,700 --> 00:50:16,540 ar funkciju, ka jūs pats rakstāt, kā es šeit 32 rindā. 793 00:50:16,540 --> 00:50:20,800 Bet jums arī nepieciešams norādīt tā tipu, jo C ir programmēšanas valoda 794 00:50:20,800 --> 00:50:25,940 kas tikai prasa, ka, ja jūs vēlaties mainīgo, jums ir pateikt datoram, ko datu tips tas ir, 795 00:50:25,940 --> 00:50:30,200 liela daļa tā, ka tā zina, cik bitus piešķirt uz šo mainīgo 796 00:50:30,200 --> 00:50:33,020 jo tas varētu būt 6 - piedodiet, tas nebūs 6. 797 00:50:33,020 --> 00:50:37,080 Tas var būt 16, tas var būt 8, tas var būt 32, pat 64, 798 00:50:37,080 --> 00:50:39,130 bet dators jāzina. 799 00:50:39,130 --> 00:50:43,180 Tagad, par kreisajā pusē int atspoguļo to, tieši pretēji? 800 00:50:46,350 --> 00:50:48,850 [Dzirdams studentu reaģēšanas] >> Kas tas ir? >> [Students] veids funkcijas. 801 00:50:48,850 --> 00:50:53,610 Par funkciju tipa un, konkrētāk, veidu no saražotā. Tiesības. 802 00:50:53,610 --> 00:50:57,380 Tātad tā lieta iekavās pārstāv tās ieejas, ja tādi ir, 803 00:50:57,380 --> 00:50:59,660 lieta kreisi pārstāv savu produkciju. 804 00:50:59,660 --> 00:51:03,530 Un šajā gadījumā, pieauguma acīmredzot atgriež int, 805 00:51:03,530 --> 00:51:07,690 un tā int ir atgriešanās tips šīs funkcijas. 806 00:51:07,690 --> 00:51:09,340 Ko tas nozīmē ar atgriešanu? 807 00:51:09,340 --> 00:51:15,090 Burtiski, jūs izmantojat atslēgvārdu atdevi, un tad, ja tas, ko jūs atgriežaties 808 00:51:15,090 --> 00:51:18,600 pa labi no atslēgvārds ir skaitlis, 809 00:51:18,600 --> 00:51:21,660 tad tas ir patiešām saskan ar to, ko mēs esam solīja. 810 00:51:21,660 --> 00:51:26,410 Jūs nevar darīt kaut kas līdzīgs šim - sveiki, pasaules - jo tas ir virkne. 811 00:51:26,410 --> 00:51:28,860 >> Acīmredzot, tas nav vesels skaitlis. 812 00:51:28,860 --> 00:51:33,140 Tātad īsumā, slogs ir tiešām par mums, programmētājs, par īpašu 813 00:51:33,140 --> 00:51:37,770 par to, ko mēs esam atgriežas un tad tiešām iet par to atpakaļ. 814 00:51:37,770 --> 00:51:43,440 Konteksts šeit tagad ir tas, ka datora atmiņa ir gigabaiti, 2 gigabaitus - 815 00:51:43,440 --> 00:51:45,920 kāds - varbūt tas ir vairāk, varbūt tas ir mazāk, 816 00:51:45,920 --> 00:51:49,050 bet dators uzskata to par tādu, kam dažādas sadaļas. 817 00:51:49,050 --> 00:51:51,200 Kaut kas tur lejā, kaut kas cits iet uz augšu tur, 818 00:51:51,200 --> 00:51:54,290 tēmām iet pa vidu, un šodien mēs vienkārši sākt stāstīt stāstu, 819 00:51:54,290 --> 00:51:56,340 bet mēs būsim atpakaļ uz šo laika gaitā. 820 00:51:56,340 --> 00:51:59,980 Tagad, vienīgais gabals atmiņas mums patiešām rūp ir teksta segments 821 00:51:59,980 --> 00:52:03,360 jo tas tikai atspoguļo 0s un 1s ka šķindēt ir izvadīt. 822 00:52:03,360 --> 00:52:06,050 Tātad, ja jūs palaist komandu pie tastatūras kā a.out 823 00:52:06,050 --> 00:52:09,110 vai jūs dubultklikšķi uz ikonas uz Mac OS vai Windows, 824 00:52:09,110 --> 00:52:11,880 Jūsu programma tiek ielādēta no cietā diska uz RAM 825 00:52:11,880 --> 00:52:16,330 un tas ir plopped augšpusē datora RAM, lai runāt. 826 00:52:16,330 --> 00:52:20,450 Tikmēr, kā jūsu programma sākas un galvenais izpaužas sauc 827 00:52:20,450 --> 00:52:23,640 programmā jūs rakstījāt vai programmu Microsoft vai Apple rakstīja, 828 00:52:23,640 --> 00:52:27,860 tās vietējās mainīgo galu galā tur lejā apakšā datora atmiņā. 829 00:52:27,860 --> 00:52:33,230 Bet, ja galvenais zvani cita funkcija, kas pati ir mainīgie vai argumentus, viņi galu galā virs tā. 830 00:52:33,230 --> 00:52:36,680 Un, ja šī funkcija prasa kaut ko, viņi galu galā virs tā, virs tā, virs tā. 831 00:52:36,680 --> 00:52:41,460 >> Un tikai tad, kad funkcija tiek darīts izpildes pozīciju par paplātes kaudze, tā teikt, 832 00:52:41,460 --> 00:52:43,240 sāk iegūt zemākas un zemākas. 833 00:52:43,240 --> 00:52:48,250 Un tas ir tas, ko tad, īsumā, izskaidro, kāpēc, kad jūs zvanu kubu 834 00:52:48,250 --> 00:52:51,550 vai jūs zvanīt pieaugumu, jūs iet uz kopiju vērtības. 835 00:52:51,550 --> 00:52:55,520 Un ko tas nozīmē piktogrammām ir, ka jūs burtiski rakstot numuru 1 836 00:52:55,520 --> 00:53:00,460 citā daļā atmiņu, mainot ka 1 līdz 2, ja pieauguma 837 00:53:00,460 --> 00:53:04,820 vai par 8 gadījumā kuba un tad izmet atmiņu prom 838 00:53:04,820 --> 00:53:09,140 tiklīdz pieauguma vai kuba funkcija atgriež. Jautājums. 839 00:53:09,140 --> 00:53:12,900 [Students] Ja ir pasaules mainīgie uzglabāti? 840 00:53:12,900 --> 00:53:18,100 Globālie mainīgie tiek glabāti to, kas pašlaik sauc inicializēts dati vai neinicializēts dati, 841 00:53:18,100 --> 00:53:21,920 Atšķirība ir, ja jums ir globālā mainīgā un jums piešķirt to nekavējoties vērtību 842 00:53:21,920 --> 00:53:24,640 ar vienlīdzības zīmi, tas beidzas līdz augšā tur, 843 00:53:24,640 --> 00:53:29,200 un, ja jūs vienkārši pateikt int x; ar nekādas vērtības, tas beidzas līdz nedaudz mazāks RAM 844 00:53:29,200 --> 00:53:31,710 vienkārši pēc vienošanās. 845 00:53:31,710 --> 00:53:34,940 Citi jautājumi? Labi. 846 00:53:34,940 --> 00:53:37,340 Tātad šo attēlu nāks atpakaļ, jo mēs vairāk spēcīgu 847 00:53:37,340 --> 00:53:39,170 ar ko mēs varam darīt ar datoru, 848 00:53:39,170 --> 00:53:42,720 bet tagad, pieņemsim ir īss intro kriptogrāfija, 849 00:53:42,720 --> 00:53:46,080 īpaša veida kriptogrāfijas tas neatrisina visas pasaules problēmām 850 00:53:46,080 --> 00:53:47,720 bet atrisināt dažus no tiem. 851 00:53:47,720 --> 00:53:51,700 Šajā gadījumā šeit, mums ir kaut ko sauc slepeno atslēgas kriptogrāfiju. 852 00:53:51,700 --> 00:53:56,410 Slepeno atslēgas kriptogrāfijas, kā norāda nosaukums, kas savu drošību no noslēpumu. 853 00:53:56,410 --> 00:54:00,690 >> Piemēram, ja jums bija atpakaļ pakāpē skolā, un jūs gāja mazliet noslēpums mīlestības vēstuli 854 00:54:00,690 --> 00:54:04,850 uz zēns vai meitene tu drupināšanas par, ja jūs vēlaties, lai iet šo piezīmi pa auditoriju, 855 00:54:04,850 --> 00:54:08,380 jūs, iespējams, nebūtu uzrakstīt šādu piezīmi angļu vai kāds jūsu dzimtā valoda ir. 856 00:54:08,380 --> 00:54:13,340 Drīzāk, jūs varētu šifrēt to, vai jūs varētu vienkārši nosūtīt tos īsziņu šajās dienās. 857 00:54:13,340 --> 00:54:15,460 Bet jūs tiešām var iet viņiem piezīmi visā klasē. 858 00:54:15,460 --> 00:54:18,700 Un tas ir jādara droši tādā veidā, ka jūsu draugi un skolotājs 859 00:54:18,700 --> 00:54:22,650 nezinu, ko jūs esat rakstiski, jūs varētu nākt klajā ar diezgan vienkāršu algoritmu, 860 00:54:22,650 --> 00:54:25,920 Jauns gan jūs varētu būt, lai tikai motokross vārdiem. 861 00:54:25,920 --> 00:54:28,130 Tā vietā rakstot jūs varētu rakstīt b, 862 00:54:28,130 --> 00:54:30,220 vietā B jūs varētu rakstīt C, 863 00:54:30,220 --> 00:54:32,140 vietā C jūs varētu rakstīt D, un tā tālāk. 864 00:54:32,140 --> 00:54:34,360 Vai jūs varētu nākt klajā ar daudz sarežģītu tulkojumu 865 00:54:34,360 --> 00:54:36,720 vēstuļu uz dažādiem burtiem. 866 00:54:36,720 --> 00:54:39,740 Bet nozveju ir zēns vai meitene, kuram jūs sūtāt šo piezīmi 867 00:54:39,740 --> 00:54:45,020 nepieciešams zināt kaut ko, kas ir tas, protams? >> [Students] Ko jūs sūtāt. 868 00:54:45,020 --> 00:54:49,720 Kāds jūsu noslēpums ir, piemēram, kādi ir, ka kartēšana starp s un B darbības, un C ir un d's. 869 00:54:49,720 --> 00:54:54,650 Tas ir tikai pievienojot 1 līdz katra no burtiem, lai iet no A uz B, B līdz C? 870 00:54:54,650 --> 00:54:56,670 Tas ir daudz sarežģītāka, nekā? 871 00:54:56,670 --> 00:55:01,540 >> Tātad jūs un jūsu simpātiju ir nepieciešama šo slepeno informāciju, 872 00:55:01,540 --> 00:55:03,190 bet tur ir sava veida nozvejas-22 šeit. 873 00:55:03,190 --> 00:55:06,830 Ja šī ir pirmā reizi, kad jūs sūtāt šo mīlestības vēstuli caur klasi, 874 00:55:06,830 --> 00:55:10,720 kā tas, ka zēns vai meitene dodas uz zināt noslēpums pat ir? 875 00:55:10,720 --> 00:55:13,930 Tā slepeno atslēgas Šifrēšanas neatrisina visas pasaules problēmas, 876 00:55:13,930 --> 00:55:16,320 un tur tiešām attiecības šeit, ka mēs atgriezīsimies pie virzienā semestra beigām. 877 00:55:16,320 --> 00:55:25,110 Tāpat lielākā daļa no mums nevar zināt kādu, kas darbojas, piemēram, pie Amazon.com, 878 00:55:25,110 --> 00:55:28,190 un vēl daudzi no mums ir iespējams iegādāties sīkumi pie Amazon.com, 879 00:55:28,190 --> 00:55:31,990 un mēs esam mācīti domāt, ka šie e-komercijas darījumiem ir droši. 880 00:55:31,990 --> 00:55:36,470 URL, iespējams saka https, tur varbūt muļķīgi mazliet atslēdziņa ikonas kaut kur, 881 00:55:36,470 --> 00:55:39,930 tur ir dažas no kriptogrāfijas veida nodrošināt savu kredītkartes informāciju 882 00:55:39,930 --> 00:55:42,160 starp jums un Amazon.com. 883 00:55:42,160 --> 00:55:45,430 Un tomēr, ja kriptogrāfija ietver zinot kādu noslēpumu 884 00:55:45,430 --> 00:55:48,620 un tomēr es nezinu, kāds pie Amazon, un es esmu, protams, nav sakārtoti kādu slepenu 885 00:55:48,620 --> 00:55:52,710 ar kādu Amazon, cik ir mans dators vai mana pārlūkprogramma to izdarīt? 886 00:55:52,710 --> 00:55:55,720 Izrādās, ka ir citi veidi, kriptogrāfija pavisam kas atrisinātu šo problēmu. 887 00:55:55,720 --> 00:55:57,670 Bet šodien, mēs koncentrēties uz vienkāršs, 888 00:55:57,670 --> 00:56:00,290 kur var organizēt iepriekš zināt, kādu noslēpumu 889 00:56:00,290 --> 00:56:03,760 piemēram +1 vai kādu no s un B darbības kartēšana. 890 00:56:03,760 --> 00:56:05,840 Un par kriptogrāfiju process parasti ietver šo. 891 00:56:05,840 --> 00:56:08,620 Jums ir dažas teksta, kas attēlota šeit kreisi, 892 00:56:08,620 --> 00:56:12,930 jūs palaist to caur kādu algoritmu vai kārtības šifrējot to - 893 00:56:12,930 --> 00:56:15,100 varbūt tas ir tikai kļūst b, b kļūst c - 894 00:56:15,100 --> 00:56:17,490 un tad jūs galu galā ar ciphertext. 895 00:56:17,490 --> 00:56:20,380 Tikmēr, kad jūsu simpātiju saņem šo slepeno piezīmi, 896 00:56:20,380 --> 00:56:24,200 viņš vai viņa ir, tad atšifrēt ar vispārēji atpakaļgaitas ka algoritms 897 00:56:24,200 --> 00:56:27,190 lai saņemtu atpakaļ teksta. 898 00:56:27,190 --> 00:56:28,960 Ir fiziski iemiesojumi šo. 899 00:56:28,960 --> 00:56:31,680 >> Piemēram, tas ir mazliet noslēpums dekodera gredzenu, 900 00:56:31,680 --> 00:56:35,110 un tas ir gredzens, kas nozīmē, ka tur ir divas ciparnīcas šeit. 901 00:56:35,110 --> 00:56:38,490 Uz ārējās perifērijā šī lieta, tur ir burti no A līdz Z, 902 00:56:38,490 --> 00:56:40,340 kaut viņi nejaušā secībā, 903 00:56:40,340 --> 00:56:42,880 un no iekšpuses, tur tiešām daži skaitļi 904 00:56:42,880 --> 00:56:46,620 tāds, ka ar šo gredzenu jūs varat veida vērsties ārpuses, bet ne iekšā 905 00:56:46,620 --> 00:56:49,140 lai rindā skaitļus ar burtiem. 906 00:56:49,140 --> 00:56:53,020 No filmu sauc Ziemassvētku stāsts, jūs redzēsiet, ka maz Ralphie 907 00:56:53,020 --> 00:56:58,000 bija tik ieinteresēts, lai noskaidrotu, ko maz bārenis Annie slepeno ziņu bija viņam 908 00:56:58,000 --> 00:57:02,570 kas bija paziņoti, es domāju, kā skaitlisku ziņojumus par graudaugu kastē 909 00:57:02,570 --> 00:57:07,220 un jums bija uzkrāt visu maz kartes, kas nāca no labības kastē, 910 00:57:07,220 --> 00:57:09,770 jums bija uz pastu tos, jums bija, lai saņemtu atpakaļ slepeno dekodera gredzenu 911 00:57:09,770 --> 00:57:13,910 lai jūs varētu beidzot izdomāt kartēšana ir starp burtiem un cipariem 912 00:57:13,910 --> 00:57:15,550 vai burti un burti. 913 00:57:15,550 --> 00:57:19,520 Kā datorā, mēs varam iet par īstenošanu vai pārstāv lietas, kā šis? 914 00:57:19,520 --> 00:57:22,560 Mums ir nepieciešams veids, kā izteikt sevi mazliet elastīgāk 915 00:57:22,560 --> 00:57:25,080 nekā mūsu mainīgie līdz šim sniegtie pakalpojumi. 916 00:57:25,080 --> 00:57:29,000 Mēs esam bija Ints, mēs esam bija chars, mēs esam bija pludiņus un dubultspēlēs un daži citi, 917 00:57:29,000 --> 00:57:34,200 bet tie ir unikāli atmiņu, kas nav īsti ļauj izteikt lietas 918 00:57:34,200 --> 00:57:36,440 tāpat vārdus un teikumus un frāzes. 919 00:57:36,440 --> 00:57:38,630 Patiesi, mēs esam sauc tādas lietas stīgas, 920 00:57:38,630 --> 00:57:42,660 bet mēs apsolām, ka tas patiešām ir tikai vienkāršošanai CS50 bibliotēkā 921 00:57:42,660 --> 00:57:45,540 ka mēs esam plāno mizu atpakaļ. 922 00:57:45,540 --> 00:57:47,500 Un tāpēc sāksim to darīt šeit. 923 00:57:47,500 --> 00:57:49,840 Ļaujiet man iet uz priekšu un atvērt failu - 924 00:57:49,840 --> 00:57:54,100 visi šie faili ir pieejami, kā parasti, internetā - sauktās array.c 925 00:57:54,100 --> 00:57:58,960 lai atrisinātu problēmu nav saistīta ar stīgas bet krāsām attēlu šeit 926 00:57:58,960 --> 00:58:01,520 par to, kā mēs varētu izmantot kaut ko sauc masīvs. 927 00:58:01,520 --> 00:58:04,050 >> Masīvs ir datu tips. 928 00:58:04,050 --> 00:58:10,730 Tas ir veids, mainīgais par veidu, kas ir vairākas mazākas datu tipu iekšpusē no tā 929 00:58:10,730 --> 00:58:12,680 atpakaļ atpakaļ atpakaļ atpakaļ. 930 00:58:12,680 --> 00:58:16,980 Tātad, piemēram, ja mēs vēlējāmies, lai rakstītu maz programmu, kas dod jums jūsu viktorīna vidējo 931 00:58:16,980 --> 00:58:19,780 kursu, piemēram, 50, kas ir 2 viktorīnas, 932 00:58:19,780 --> 00:58:23,450 jūs varētu ļoti viegli rakstīt šo programmu, pamatojoties pat uz dažām pagājušās nedēļas materiālu 933 00:58:23,450 --> 00:58:28,830 izmantojot GetInt un mainīgo lielumu pāris: int quiz1, int quiz2. 934 00:58:28,830 --> 00:58:30,550 Un tas ir diezgan vienkārši. 935 00:58:30,550 --> 00:58:33,500 Tas ir varbūt 10, 20 līnijas kodu max īstenot programmu 936 00:58:33,500 --> 00:58:38,940 kas prasa lietotājam uz 2 viktorīnu punktus un pēc tam aprēķina to vidējais 937 00:58:38,940 --> 00:58:42,020 pievienojot tos kopā, dalot ar 2, un pēc tam izdrukāt rezultātu. 938 00:58:42,020 --> 00:58:46,400 Mēs droši vien varētu izdarīt diezgan viegli tagad pēc kāda minūšu skaitu. 939 00:58:46,400 --> 00:58:49,450 Bet problēma ir tā, ka pieņemsim, ka 50 bija 3 viktorīnas vai 4. 940 00:58:49,450 --> 00:58:52,830 Pieņemsim, ka jūs vēlaties izmantot to pašu programmu klase, kas bija nedēļas viktorīnas. 941 00:58:52,830 --> 00:58:55,100 Padomā par klasi, kas ir nedēļas viktorīnas. 942 00:58:55,100 --> 00:58:58,840 Ja tur ir 16 vai tik nedēļas semestrī, tagad jums ir 16 mainīgie: 943 00:58:58,840 --> 00:59:03,030 int quiz1, int quiz2, int quiz3, int quiz4. 944 00:59:03,030 --> 00:59:06,870 Tiklīdz jūs sākat redzēt šo atlaišanu, tas kopējot un ielīmējot kodu, 945 00:59:06,870 --> 00:59:09,810 tas ir jāsāk, lai jūs vēlaties, tur bija labāks veids. 946 00:59:09,810 --> 00:59:13,610 Un par laimi, jo masīvi tur ir. Tāpēc pieņemsim darīt. 947 00:59:13,610 --> 00:59:16,700 Pirmkārt, ļaujiet man iepazīstināt ļoti vienkārša lieta, ka mēs esam ne izmantots līdz šim, 948 00:59:16,700 --> 00:59:18,820 bet jūs redzēsiet to reizēm kodu. 949 00:59:18,820 --> 00:59:21,270 >> Tas ir tas, ko parasti sauc nemainīgs. 950 00:59:21,270 --> 00:59:24,410 Tāpēc tas konstanti nozīmē, ka šī vērtība nekad nemainās. 951 00:59:24,410 --> 00:59:26,450 Cilvēka konvencija veidojot pastāvīgu 952 00:59:26,450 --> 00:59:30,420 ir izmantot visus lielos burtus tikai tāpēc, ka tas patiešām izceļas savu kodu, 953 00:59:30,420 --> 00:59:34,270 un īpašu atslēgvārdu, ka jūs izmantot C ir # definēt. 954 00:59:34,270 --> 00:59:39,970 Tāpēc mēs sakām # define, tad atstarpi, tad vārdu, kuru vēlaties izmantot konstanti vārdu 955 00:59:39,970 --> 00:59:41,730 un tad vērtība nemainās. 956 00:59:41,730 --> 00:59:44,710 Pamanīt tas ir atšķirīgs no piešķirot kaut mainīgo. 957 00:59:44,710 --> 00:59:46,430 Nav vienādības zīmes, nav semikolu. 958 00:59:46,430 --> 00:59:49,140 Tas ir tas, ko parasti sauc par apstrādātāju direktīvas 959 00:59:49,140 --> 00:59:50,840 bet vairāk par šo citā laikā. 960 00:59:50,840 --> 00:59:56,350 Tagad, tas rada nemainīgu vērtību sauc viktorīnas 961 00:59:56,350 --> 00:59:58,290 kura faktiskā skaitliskā vērtība ir 2. 962 00:59:58,290 --> 01:00:02,180 Tātad visur jūs redzēt viktorīnas, viktorīnas, aptaujas visā šajā failā, 963 01:00:02,180 --> 01:00:04,230 tas ir tikai numurs 2. 964 01:00:04,230 --> 01:00:06,550 Ja es apskatīt galvenais tagad, pieņemsim redzēt, kā tas darbojas. 965 01:00:06,550 --> 01:00:09,770 Sākumā tas izskatās nedaudz noslēpumains, bet tas viss ir sīkumi, no 1 nedēļas. 966 01:00:09,770 --> 01:00:12,210 Pieprasīt no lietotāja pakāpēs. Kā mēs to darām? 967 01:00:12,210 --> 01:00:17,350 22 rindā - tas ir patiešām sulīgs daļa - Es paziņoju, apgrozāmos 968 01:00:17,350 --> 01:00:23,240 bet ne tikai viena peldēt. Es esmu paziņojot, drīzāk masīvs peldošo vērtībām. 969 01:00:23,240 --> 01:00:27,700 Ka mainīgais tiks sauc pakāpes, kā jau minēts šeit, 970 01:00:27,700 --> 01:00:31,420 bet vienīgais gabals jaunās sintakses tad ir šie kvadrātiekavas. 971 01:00:31,420 --> 01:00:37,280 Fakts, ka es esmu teica peldēt pakāpes un tad atklātu kronšteinu un tad cipara - 972 01:00:37,280 --> 01:00:40,980 paziņojums, ja tas ir nemainīgs tas ir tāpat kā mēs to darījām - 973 01:00:40,980 --> 01:00:46,840 tas nozīmē, "Hei dators, dod man 2 pludiņus un pieņemsim kolektīvi sauc tos pakāpes." 974 01:00:46,840 --> 01:00:51,780 >> Tas ir pretstatā daudz garlaicīgs process, piemēram, šo: pludiņš Grade1; 975 01:00:51,780 --> 01:00:54,580 peldēt Grade2, un tā tālāk. 976 01:00:54,580 --> 01:00:58,310 Tāpēc masīvs ļauj mums īstenot šo ideju, bet daudz mazāk messily, 977 01:00:58,310 --> 01:01:04,560 tādā veidā, ka mēs varam rakstīt 1 līnija kodu, nevis, teiksim, 16 par 16 nedēļu semestrī. 978 01:01:04,560 --> 01:01:09,060 Es negribēju, lai grūti kodu 2, jo, ja jūs domājat par šo tagad loģiski, 979 01:01:09,060 --> 01:01:12,560 pieņemsim nākamgad CS50 maiņas 3 viktorīnas vietā 980 01:01:12,560 --> 01:01:15,010 un man bija numuru 2 šeit, man bija numuru 2 šeit, 981 01:01:15,010 --> 01:01:17,210 Man bija numurs 2 šeit, numuru 2 šeit. 982 01:01:17,210 --> 01:01:19,890 Tā kļūst ļoti garlaicīgs un ļoti viegli skrūvējamu augšu 983 01:01:19,890 --> 01:01:26,550 un nejauši mainīt vērtību 1 līdz 3 un garām kādu citu vērtību 2. 984 01:01:26,550 --> 01:01:30,660 Tāpēc es esmu gatavojas nevis abstrakti šo prom, un izmantot šo konstante, ka, 985 01:01:30,660 --> 01:01:32,520 Kā tā nosaukums liecina, nekad nemainās. 986 01:01:32,520 --> 01:01:35,870 Un tagad nav svarīgi, vai mums ir dažādi viktorīnas šogad vai nākamā, 987 01:01:35,870 --> 01:01:39,380 Man vienkārši ir jāmaina tā vienā vietā šeit augšā. 988 01:01:39,380 --> 01:01:41,230 Tā ka viss konstante ir. 989 01:01:41,230 --> 01:01:47,100 Tikmēr jaunā konceptuālā iezīme ir tā, ka no masīva. 990 01:01:47,100 --> 01:01:55,030 Tātad kvadrātiekavas man šo daudz pludiņus un ļauj man kolektīvi viņiem piezvanīt pakāpes šeit. 991 01:01:55,030 --> 01:01:56,720 Tāpēc tagad pieņemsim redzēt, ko es esmu gatavojas darīt. 992 01:01:56,720 --> 01:01:59,220 Šeit 24 līnija ir par sākums cilpu. 993 01:01:59,220 --> 01:02:03,380 >> Tas ir patiešām nekas iedomātā. Tas ir vienkārši, izmantojot aptaujas nevis iekodēts numuru. 994 01:02:03,380 --> 01:02:06,740 Bet tur nekas intelektuāli atšķiras no tiem pagājušajā nedēļā. 995 01:02:06,740 --> 01:02:11,650 Tas ir tikai printf, tāpēc printf ("Quiz #% d no% d:") 996 01:02:11,650 --> 01:02:16,670 jo es tikai vēlos, lai izdrukātu dot man viktorīna no 2 1 numuru un tad 2 no 2. 997 01:02:16,670 --> 01:02:18,480 Tātad šis ir tīri estētisks lieta. 998 01:02:18,480 --> 01:02:21,000 Bet interesanti daļa tagad ir 27 rindā. 999 01:02:21,000 --> 01:02:27,840 Lai aizpildītu vienā no divām vietturu ar peldošo punktu vērtības, 1000 01:02:27,840 --> 01:02:29,640 Jūs atkal izmantot kvadrātiekavas. 1001 01:02:29,640 --> 01:02:35,170 Šajā gadījumā, es esmu, izmantojot i, jo šis cilpa ir sācies ar I iedots kāda vērtība, acīmredzot? 1002 01:02:35,170 --> 01:02:36,670 [Students] 0. >> [Malan] 0. 1003 01:02:36,670 --> 01:02:40,990 Tātad pirmajā atkārtojuma šīs cilpas, tas ir, it kā es uzrakstīju šo kodu, 1004 01:02:40,990 --> 01:02:46,310 bet otrajā atkārtojuma šīs cilpas, tas ir, it kā es uzrakstīju šo manā kodu. 1005 01:02:46,310 --> 01:02:49,970 Bet fakts, ka es esmu, izmantojot mainīgo ir ideāls, jo, kā liecina nosaukums, 1006 01:02:49,970 --> 01:02:52,600 tas mainās savu vērtību par katru atkārtojuma, 1007 01:02:52,600 --> 01:02:55,900 tāpēc es esmu aizpildot šī masīva vienas vietas laikā. 1008 01:02:55,900 --> 01:02:57,380 Ko tas masīvs izskatās? 1009 01:02:57,380 --> 01:03:01,570 Iemesls es vērsa super vienkāršu taisnstūri uz ekrāna šeit pirms šī iemesla. 1010 01:03:01,570 --> 01:03:05,590 Masīvs ir tikai atmiņas rieciens seko cita rieciens atmiņas 1011 01:03:05,590 --> 01:03:08,570 seko cits rieciens atmiņas un tā tālāk. 1012 01:03:08,570 --> 01:03:13,120 Tātad, ja mans masīvs ir 2 izmēru, šajā gadījumā šeit, viss, ko es varētu darīt 1013 01:03:13,120 --> 01:03:20,200 ierakstot manu viktorīnu punktus patīk šeit - es saņēmu 100 par šo vienu, un tad es saņēmu 99 par šo vienu - 1014 01:03:20,200 --> 01:03:24,970 tad šī atmiņa varētu pat tikt izmantots, jo es esmu tikai lūdza datoru 1015 01:03:24,970 --> 01:03:26,840 par masīva 2 izmēru. 1016 01:03:26,840 --> 01:03:28,600 Šie laukumi ir vēl tur, labi? 1017 01:03:28,600 --> 01:03:32,670 Jums vēl ir 2 gigabaiti RAM, pat ja jūs tikai lūdzot par 2 pludiņi. 1018 01:03:32,670 --> 01:03:36,840 Tātad aiz masīviem ideja ir tāda, ka dators vienkārši ņem rieciens atmiņas 1019 01:03:36,840 --> 01:03:41,340 un tad proporcionāli sadala mazākos gabalos atpakaļ atpakaļ atpakaļ atpakaļ. 1020 01:03:41,340 --> 01:03:43,310 Un tā tas viss masīvs. 1021 01:03:43,310 --> 01:03:47,350 >> Tas ir blakusesoši rieciens atmiņas iekšā kas var nodot lietas. 1022 01:03:47,350 --> 01:03:50,700 Tas notiek, lai tad darīt tikai daži garlaicīgs aritmētika. 1023 01:03:50,700 --> 01:03:54,640 Ja es ritiniet uz leju šeit, tas ir, ja es tad atkārtot pa masīva. 1024 01:03:54,640 --> 01:03:58,020 Es nāku klajā ar summējot visu masīvā vērtībām, 1025 01:03:58,020 --> 01:04:02,470 un tad es varu izmantot apaļo funkciju šeit, lai faktiski darīt summu dala ar viktorīnas. 1026 01:04:02,470 --> 01:04:06,320 Bet ļaujiet man vilnis savu roku tajā kā sava veida pietiekami aritmētikas tagad. 1027 01:04:06,320 --> 01:04:08,370 Bet viss, kas dara man beidzot ir skaitļošanas vidēji. 1028 01:04:08,370 --> 01:04:13,580 Tāpēc vispirms viktorīna plus 2. viktorīna dalīts ar 2 un tad izdrukāt to ārā kā int. 1029 01:04:13,580 --> 01:04:17,280 Bet pieņemsim tagad pāreja uz citu piemēru sauc virkne1, 1030 01:04:17,280 --> 01:04:20,700 kas krāsām līdzīgu ainu, bet, izmantojot stīgām. 1031 01:04:20,700 --> 01:04:23,940 Ļaujiet man iet uz priekšu un vienkāršot tikai brīdi. 1032 01:04:23,940 --> 01:04:27,090 Piedot iedobi tagad. 1033 01:04:27,090 --> 01:04:30,870 Paziņojums šā piemērā 19 līnijā, man string no lietotāja. 1034 01:04:30,870 --> 01:04:34,640 Bet pamanīt to, ko es esmu nākamais dara rindās 22 vēlāk. 1035 01:04:34,640 --> 01:04:41,250 Es esmu tiešām atkārtojot no i līdz - un tas ir jauns triks - strlen, stīgu garumu. 1036 01:04:41,250 --> 01:04:44,880 Tas ir funkcija, kas nāk ar C, ka, ja jūs iet to virkni, 1037 01:04:44,880 --> 01:04:47,730 tā stāsta, cik daudz rakstzīmes šajā virknē. Tas arī viss. 1038 01:04:47,730 --> 01:04:51,550 Un fakts, ka tas ir strlen vietā virknes garums ir tikai tāpēc, ka tas ir vairāk īss. 1039 01:04:51,550 --> 01:04:55,100 Trīsdesmit gadus atpakaļ, cilvēki patika rakstīt lietas kā īsi vien iespējams, 1040 01:04:55,100 --> 01:04:57,630 tāpēc mēs esam tur, ka konvenciju šeit. 1041 01:04:57,630 --> 01:05:00,660 I + + tikai nozīmē pieauguma i katrā atkārtojuma. 1042 01:05:00,660 --> 01:05:02,990 Un tagad paziņojums šo, kas ir patiešām interesanti. 1043 01:05:02,990 --> 01:05:09,180 24 līniju, es saku, "Dators, man raksturs, 8 biti, un to sauc par c." 1044 01:05:09,180 --> 01:05:12,630 Bet kas tas ir par labajā pusē saka? 1045 01:05:13,490 --> 01:05:16,530 Angļu, ko tas pārstāv? 1046 01:05:16,530 --> 01:05:18,730 [Students] pirmā rakstzīme masīvā. 1047 01:05:18,730 --> 01:05:20,790 Tieši tā. Dodiet man pirmo rakstzīmi masīvs. 1048 01:05:20,790 --> 01:05:24,090 Vai, plašākā nozīmē, dod man kārtējam rakstzīmi masīvs. 1049 01:05:24,090 --> 01:05:26,100 Un saprast, tas ir svarīgi, ka šobrīd kā datorzinātnieku, 1050 01:05:26,100 --> 01:05:27,890 Mēs esam patiešām skaitot no 0. 1051 01:05:27,890 --> 01:05:29,720 >> Jums nav rīcības brīvības tagad, lai sāktu to darīt. 1052 01:05:29,720 --> 01:05:34,160 Tagad jums ir rīkosies saskaņā ar datoru cerībām un skaitīt no 0 1053 01:05:34,160 --> 01:05:38,180 jo [0] būs pirmā rakstzīme virknē, 1054 01:05:38,180 --> 01:05:42,150 [1] būs otrais, [2] būs trešais, un tā tālāk. 1055 01:05:42,150 --> 01:05:49,720 Tātad šī programma, ja es apkopot to, tas ir atkal virkne1, lai padarītu virkne1, 1056 01:05:49,720 --> 01:05:54,670 un tagad es esmu palaist virkne1 manā termināļa logā. 1057 01:05:54,670 --> 01:05:58,330 Tas gaida ievadi, tāpēc es esmu gatavojas rakstīt Dāvidam, Enter, 1058 01:05:58,330 --> 01:06:02,540 un tagad tas drukā Dāvidu viss dažādās līnijās, jo informācija, ko es esmu dara. 1059 01:06:02,540 --> 01:06:05,820 Es esmu izdevējdarbība vienu rakstzīmi laikā. 1060 01:06:05,820 --> 01:06:10,100 Mēs ne iedziļināties sīkāk šodien par šo jautājumu, bet es svītrots brīdi pirms šīs pārbaudes šeit. 1061 01:06:10,100 --> 01:06:15,480 Izrādās, ka tad, ja lietotājs nedarbojas atbilstoši, sacīkstes, vai vienkārši sajaukt, 1062 01:06:15,480 --> 01:06:20,210 Jūs faktiski var neizdoties, lai sniegtu virkni kādu garumu. 1063 01:06:20,210 --> 01:06:22,860 Ja jūs hit nepareizu taustiņu uz tastatūras, jūs varētu dot nekādu stīgu vispār, 1064 01:06:22,860 --> 01:06:26,950 vai, ja jūs ļaunprātīgu, jūs varētu mēģināt ielīmēt gigabaitu vērts esejas 1065 01:06:26,950 --> 01:06:29,290 aizpildīt šo stīgu, un ja dators darbojas no atmiņas, 1066 01:06:29,290 --> 01:06:32,710 izrādās, ka mēs esam gatavojas saņemt atpakaļ šo īpašo vērtību sauc NULL. 1067 01:06:32,710 --> 01:06:35,580 Tātad tagad, tikai zinu, ka tur ir šī īpašā vērtība sauc NULL 1068 01:06:35,580 --> 01:06:39,580 kas ļaus mums pārbaudīt, kad mēs esam no atmiņas, cita starpā. 1069 01:06:39,580 --> 01:06:45,630 Bet, ja es atvērt tagad virkne2, paziņojums viena atšķirība šeit. 1070 01:06:45,630 --> 01:06:48,210 Paziņojums viena atšķirība šeit ar virkne2. 1071 01:06:48,210 --> 01:06:51,340 Ar virkne2, šis cilpa ir nedaudz atšķirīgs. 1072 01:06:51,340 --> 01:06:55,010 >> Ļaujiet man izdzēst nulls, lai mēs varētu runāt par tiem citā laikā. 1073 01:06:55,010 --> 01:06:57,800 Kas ir atšķirīgs par cilpa šoreiz? 1074 01:06:59,620 --> 01:07:01,670 Es varu doties atpakaļ uz iepriekšējo piemēru. 1075 01:07:01,670 --> 01:07:08,580 Tā ka ir versija 2, tas ir versija 1. 1, 2. 1076 01:07:08,580 --> 01:07:11,980 1, 2. 1077 01:07:13,520 --> 01:07:16,660 Strlen zvans ir kur? 1078 01:07:16,660 --> 01:07:18,860 Tas pirmajā daļā attiecībā uz cilpas. 1079 01:07:18,860 --> 01:07:21,830 Jebkurš domas par to, kāpēc es esmu to izdarīt? Yeah. 1080 01:07:21,830 --> 01:07:24,560 [Students] Tātad jums nav zvanu funkciju katru reizi. 1081 01:07:24,560 --> 01:07:26,440 [Malan] Tātad mums nav saucam funkciju katru reizi. Tieši tā. 1082 01:07:26,440 --> 01:07:28,300 Atceros no uz cilpas, kas viņi super vienkāršs 1083 01:07:28,300 --> 01:07:31,770 Tiklīdz jūs veida saprast, ka tas ir inicializācijas, nosacījums, un atjauninājumā. 1084 01:07:31,770 --> 01:07:34,750 Problēma ir tā, ka nosacījums notiek par katru atkārtojuma no cilpas. 1085 01:07:34,750 --> 01:07:40,010 Un tāpēc šajā piemērā šeit, kas ir slikti par to, ka šis ir mans stāvoklis? 1086 01:07:40,010 --> 01:07:41,830 [Students] Jūs aicinot strlen. 1087 01:07:41,830 --> 01:07:44,340 [Malan] Jūs aicinot strlen atkal un atkal un atkal. 1088 01:07:44,340 --> 01:07:47,410 Bet tad, kad es esmu drukāti Dāvidu, šī virknes garums ir 5, 1089 01:07:47,410 --> 01:07:49,650 un tas nav gatavojas mainīt uz katru atkārtojuma no cilpas 1090 01:07:49,650 --> 01:07:51,670 jo virkne joprojām D--V-i-d. 1091 01:07:51,670 --> 01:07:55,320 Tātad tas ir mājiens par to, kas notiek, lai kļūtu arvien svarīga ideja 1092 01:07:55,320 --> 01:08:00,410 pazīstams kā dizaina lēmumu, ja vienkārši nav padarīt datoru darīt nevajadzīgu darbu. 1093 01:08:00,410 --> 01:08:03,920 >> Tāpat kā ložņāt preview par pset2, pset2 no standarta izdevums 1094 01:08:03,920 --> 01:08:07,030 gatavojas apstrīdēt jums tiešām īstenotu dažas vairākus cipariem, 1095 01:08:07,030 --> 01:08:10,410 daži skaits šifrēšanas algoritmu, lai jūs varat gan šifrēt 1096 01:08:10,410 --> 01:08:13,840 un atšifrēt slepenos ziņojumus daudz, piemēram, no vienas Ralphie tur dekodēt. 1097 01:08:13,840 --> 01:08:16,810 Jo hakeru izdevumā pset2, mēs gatavojamies iet mazliet tālāk. 1098 01:08:16,810 --> 01:08:19,649 Mēs ejam, lai rokas jums failu no faktiskā datorsistēmā 1099 01:08:19,649 --> 01:08:23,479 kas satur visu ķekars, lietotājvārdus un faktisko šifrētu paroles, 1100 01:08:23,479 --> 01:08:26,939 un par hakeru izdevuma uzdevums būs kreka tās paroles 1101 01:08:26,939 --> 01:08:33,200 un izdomāt, ko kriptogrāfija vai kāds noslēpums tika izmantota, lai tiešām radītu tās paroles. 1102 01:08:33,200 --> 01:08:36,109 Un mēs esam gatavojas darīt, izmantojot jaunu funkciju šeit no C 1103 01:08:36,109 --> 01:08:40,630 ka es jums došu tikai no demo sauc par komandrindas argumentus. 1104 01:08:40,630 --> 01:08:44,229 Izrādās, kā daži no jums var būt redzējis sadaļā vai mācību grāmatas, 1105 01:08:44,229 --> 01:08:48,260 Galvenais ne vienmēr ir jābūt spēkā neesošu iekavās. 1106 01:08:48,260 --> 01:08:52,430 Izrādās, ka galvenais var būt arī rakstīts kā šis, ar diviem argumentiem, 1107 01:08:52,430 --> 01:08:56,870 argc un argv, kur argc ir vārdu skaits 1108 01:08:56,870 --> 01:09:00,020 ka tu rakstīt pēc programmas nosaukumu uz jūsu komandrindas 1109 01:09:00,020 --> 01:09:03,420 un argv ir faktiskie vārdi. 1110 01:09:03,420 --> 01:09:07,540 Un kā kvadrātiekavas tur liecina, argv acīmredzot masīvs. 1111 01:09:07,540 --> 01:09:12,210 Tas būs virkne pēc virknes pēc virknes atmiņā. 1112 01:09:12,210 --> 01:09:16,010 >> Tātad, ko mēs ejam, lai varētu izdarīt sākot ar 2 PSET ir kaut kas līdzīgs šim. 1113 01:09:16,010 --> 01:09:21,350 Ja es argv1, kas ir piemērs mēs atgriezīsimies pie pirmdien, un palaist to, 1114 01:09:21,350 --> 01:09:23,370 paziņojums, ka tā nav, šķiet, darīt kaut ko vēl. 1115 01:09:23,370 --> 01:09:25,490 Tā vienkārši izdrukā savu vārdu. 1116 01:09:25,490 --> 01:09:31,479 Bet, ja es saku ardievas klase, paziņojums, ka šī programma acīmredzot vairākkārt uzsvērts 1117 01:09:31,479 --> 01:09:35,479 pār katru vārdu, kas tika drukāti uz ātru. 1118 01:09:35,479 --> 01:09:41,630 Un līdzekļus, ar kuriem mēs iegūtu piekļuvi vārdiem, ka lietotājs ir ievadījis pie tūlītēja 1119 01:09:41,630 --> 01:09:49,160 ir, mainot galvenā sākot ar šo nedēļas nogali no int galvenais (spēkā neesošs) int galvenais (argc, argv) 1120 01:09:49,160 --> 01:09:52,050 un tādējādi būs piedzimis komandrindas argumentus. 1121 01:09:52,050 --> 01:09:57,100 Un, kad jums patiešām sarežģīta šajā, jūs varēsiet rakstīt tiešām trippy programmas 1122 01:09:57,100 --> 01:09:59,610 piemēram, šo vienu šeit, kas iet augstāk un tālāk 1123 01:09:59,610 --> 01:10:03,940 daži no funkcionalitātes mēs esam darījuši līdz šim, bet visi ir diezgan spēcīgs. 1124 01:10:03,940 --> 01:10:08,950 >> Tāpēc mēs atstāt to ar šo uz ekrāna, un mēs redzēt jūs pirmdien. 1125 01:10:17,570 --> 01:10:20,000 >> [CS50.TV]