1 00:00:00,000 --> 00:00:02,200 [Powered by Google Translate] [Ġimgħa 3] 2 00:00:02,200 --> 00:00:03,950 [David J. Malan - Università ta 'Harvard] 3 00:00:03,950 --> 00:00:07,140 [Dan huwa CS50. - CS50.TV] 4 00:00:07,140 --> 00:00:10,720 Let me tidderieġi us fid-direzzjoni ta 'fejn aħna jitħalla' off-aħħar darba, 5 00:00:10,720 --> 00:00:13,890 li kien jibdew jaħsbu ftit aktar minn madwar sintassi 6 00:00:13,890 --> 00:00:17,150 u jippruvaw jaħsbu ftit inqas dwar kollha tal-dettalji 7 00:00:17,150 --> 00:00:20,630 li jieħu ftit ta 'żmien biex aklimatizza għal s'issa f'termini ta' semicolons 8 00:00:20,630 --> 00:00:22,360 u parentesi u ċingi kaboċċi, 9 00:00:22,360 --> 00:00:25,630 biex jibdew jieħdu affarijiet ftit għal livell kunċettwali ogħla 10 00:00:25,630 --> 00:00:28,800 sabiex il-problemi li għandna issa tibda issolvi matul il-ġimgħat diversi li jmiss 11 00:00:28,800 --> 00:00:32,340 ser jinvolvu aktar fis problemi f'livell għola konċettwali 12 00:00:32,340 --> 00:00:36,310 u ftit inqas fis-sintattika kif ikollok saqajn tiegħek imxarrab 13 00:00:36,310 --> 00:00:40,090 u idejk maħmuġ ma 'wħud mill-sintassi minn dawn aħħar ftit ġimgħat. 14 00:00:40,090 --> 00:00:43,690 >> Allura ifakkar li ġimgħa li għaddiet aħna introduċiet dan il-kunċett ta 'firxa. 15 00:00:43,690 --> 00:00:49,320 U firxa bl-Ingliż tista 'tiġi deskritta bħala xiex? >> [Rispons istudent inaudible] 16 00:00:49,320 --> 00:00:51,710 Jiddispjacini? 17 00:00:51,710 --> 00:00:54,810 A ġbir ta '? >> [Rispons istudent inaudible] >> Okay, tajba. 18 00:00:54,810 --> 00:00:57,820 A ġbir ta 'oġġetti. Allura rajna arrays fil Scratch. 19 00:00:57,820 --> 00:01:01,880 Jekk inti ġara li tuża għal pset 0 1 tal-listi Scratch li inti tista 'ttawwal l-affarijiet 20 00:01:01,880 --> 00:01:05,410 bħall-larinġ u l-banana fi, inventarju ta 'tipi, 21 00:01:05,410 --> 00:01:07,100 dan huwa tip ta 'bħal dak li l-firxa hija. 22 00:01:07,100 --> 00:01:10,980 U mbagħad aktar teknikament, fil-kuntest ta 'kompjuter attwali, 23 00:01:10,980 --> 00:01:14,730 firxa hija sempliċement blokki kontigwi ta 'memorja. 24 00:01:14,730 --> 00:01:18,590 Fi kliem ieħor, inti għandek byte, imbagħad ieħor byte, imbagħad ieħor byte, imbagħad ieħor byte, 25 00:01:18,590 --> 00:01:21,330 u jekk ġejt biex tiġbed dawk bytes fi stampa, 26 00:01:21,330 --> 00:01:24,510 huma jkunu dahar ma 'dahar lura lura. Dak hu li aħna jfisser minn kontigwi. 27 00:01:24,510 --> 00:01:26,690 >> Allura huwa numru byte 1, imbagħad 2, imbagħad 3. 28 00:01:26,690 --> 00:01:29,680 Dan ma jfissirx up hawn, up hawn, up hawn, up here. 29 00:01:29,680 --> 00:01:33,800 Firxa hija blokki kontigwi ta '0 jew aktar bytes. 30 00:01:33,800 --> 00:01:36,160 Allura liema huma utli għall? 31 00:01:36,160 --> 00:01:40,090 Recall kellna dan it-tip ta 'eżempju artifiċjali ta' gradi kwizz nies ħażna taċ fi programm 32 00:01:40,090 --> 00:01:42,580 biex tiġi kkalkulata bħala medja kwizz tiegħek għal xi kors, 33 00:01:42,580 --> 00:01:46,780 u jfakkru li nistgħu tibda bil-miktub dak il-programm billi jiddikjara quiz1 varjabbli. 34 00:01:46,780 --> 00:01:49,550 Imbagħad jista 'jkollna ieħor varjabbli imsejħa quiz2. 35 00:01:49,550 --> 00:01:52,030 Iżda mbagħad jekk kien hemm 3 kwizzijiet f'din il-klassi, quiz4. 36 00:01:52,030 --> 00:01:55,710 Jew jekk kien hemm kwizz ta 'kull ġimgħa, ikun quiz5, quiz6, quiz7. 37 00:01:55,710 --> 00:01:58,520 Allura inti għandek kollha ta 'dawn il-varjabbli iddikjarat ġewwa ta prinċipali 38 00:01:58,520 --> 00:02:00,470 jew x'imkien ieħor fil-programm tiegħek, 39 00:02:00,470 --> 00:02:03,870 u l-problema ma 'dan l-approċċ, faċli għalkemm huwa biss kopja u paste, 40 00:02:03,870 --> 00:02:06,120 huwa huwa biss ferm malajr isir impossibbli. 41 00:02:06,120 --> 00:02:09,360 Alla jipprojbixxu inti fil-fatt ikollhom 30 kwizzijiet jew 50 kwiżż. 42 00:02:09,360 --> 00:02:12,080 Jekk huwa simili iskola għolja stil kwizz pop kuljum, 43 00:02:12,080 --> 00:02:15,910 allura inti biss jkollhom lista twila ta 'ridiculously varjabbli li jiġu dikjarati, 44 00:02:15,910 --> 00:02:17,780 u dan biss malajr ħafna gets out ta 'kontroll. 45 00:02:17,780 --> 00:02:20,820 Huwa ikrah, huwa diffiċli li żżomm, huwa daqstant faċli li tagħmel typo 46 00:02:20,820 --> 00:02:23,910 jekk ikollok numru 1 mistyped x'imkien fil-programm tiegħek. 47 00:02:23,910 --> 00:02:26,800 >> Allura aħna introduċiet il-kunċett ta 'firxa minflok. 48 00:02:26,800 --> 00:02:30,760 U tfakkar li aħna implimentat dan il-programm billi tagħmel ftit xi ħaġa bħal din. 49 00:02:30,760 --> 00:02:33,950 Let me go fis lum Sors tad-direttorju Tnejn 3 50 00:02:33,950 --> 00:02:37,160 u jiftħu firxa, li rajna aħħar darba. 51 00:02:37,160 --> 00:02:39,940 U anki jekk kien hemm koppja ta 'tricks C ġodda hawn, 52 00:02:39,940 --> 00:02:41,920 fosthom il-kunċett ta 'kostanti, 53 00:02:41,920 --> 00:02:47,140 ifakkar li aħna ddikjarat sufruni multipli essenzjalment billi jużaw dan sintassi: 54 00:02:47,140 --> 00:02:51,750 float, allura l-isem tal-varjabbli, allura aħna użati ċingi kwadru verament għall-ewwel darba, 55 00:02:51,750 --> 00:02:55,450 u dak li għamilna ġewwa ta 'dawk ċingi kwadru kienet effettivament tqiegħed numru. 56 00:02:55,450 --> 00:02:59,780 Iżda minflok ta 'tqegħid ta' numru, nressaq din il-kelma kapitalizzat, kwizzijiet. 57 00:02:59,780 --> 00:03:03,220 U dak kien il-motivazzjoni għat-tqegħid kelma kapitalizzat bħal kwizzijiet 58 00:03:03,220 --> 00:03:08,170 u mbagħad tuża trick 17 linja ta hawn biex effettivament jagħtu illi numru? 59 00:03:08,170 --> 00:03:11,240 Liema kienet l-motivazzjoni hemmhekk? Yeah. 60 00:03:11,240 --> 00:03:13,360 >> [Rispons istudent inaudible] >> Eżattament. 61 00:03:13,360 --> 00:03:16,630 Jekk irridu li jibdlu dak il-valur 2, aħna biss biex jibdlu in 1 post 62 00:03:16,630 --> 00:03:19,680 għaliex jikkunsidraw - I lanqas biss tiftakar dak li dan il-programm ma eżattament, 63 00:03:19,680 --> 00:03:22,040 imma jekk inti biss skim tara kwizzijiet, kwizzijiet. 64 00:03:22,040 --> 00:03:24,720 You see kwizzijiet, stabbiliti hawn aktar kwizzijiet. 65 00:03:24,720 --> 00:03:28,180 Allura jekk aħna ma kellhomx din il-kostanti, dan l-użu ta 'sharp jiddefinixxu, 66 00:03:28,180 --> 00:03:33,320 aħna kieku ittajpjat 2, allura 2, allura 2, allura 2, li huwa multa. Ikun daqstant korrett. 67 00:03:33,320 --> 00:03:36,220 Iżda jissoponi li sena d-dieħla għandna 3 kwizzijiet fil CS50. 68 00:03:36,220 --> 00:03:39,190 So I ikollhom imorru u taġġorna l-kodiċi, I għandhom recompile dan, 69 00:03:39,190 --> 00:03:43,820 iżda l-problema hija jekk nagħmel xi ħaġa stupid, bħal I jinjoraw 1 tismija ta '2 70 00:03:43,820 --> 00:03:46,750 u tinsa li plug fi 3, il-programm kollu jista 'tajjeb ħafna break. 71 00:03:46,750 --> 00:03:48,720 Allura aħna qed biss tistaqsi għall-inkwiet. 72 00:03:48,720 --> 00:03:53,170 >> Allura l-kunċett ta 'kostanti hija kollha dwar factoring barra xi biċċa ta' data, 73 00:03:53,170 --> 00:03:56,070 jekk huwa string jew char jew float jew kwalunkwe, 74 00:03:56,070 --> 00:04:00,070 u li tiddikjaraha 1 post sabiex inti tista 'aktar faċilment bidla fil-futur. 75 00:04:00,070 --> 00:04:03,660 U huwa wkoll, franchement, daqsxejn aktar faċli biex jinqraw għaliex jekk inti biss jaħsbu ta 'dan issa, 76 00:04:03,660 --> 00:04:07,840 huwa kwizzijiet, jew nistgħu saħansitra semmi mill-ġdid xi ħaġa bħal NUMBER_OF_QUIZZES 77 00:04:07,840 --> 00:04:09,430 jew aktar espliċita xi ħaġa. 78 00:04:09,430 --> 00:04:11,830 Il-kodiċi biss isir ftit aktar ovvju li dak li qed jagħmel, 79 00:04:11,830 --> 00:04:15,780 u inti wonder ftit inqas dak in-numru 2 jista 'jiġri li jfisser. 80 00:04:15,780 --> 00:04:18,920 Allura l-kostanti ma kellu xejn x'jaqsam fundamentalment ma 'arrays. 81 00:04:18,920 --> 00:04:22,990 Il-firxa kienet introdotta permezz ta 'dawn il-ċingi kwadru. 82 00:04:22,990 --> 00:04:26,610 >> Allura tinnota li fil-linja 23 nitolbu lill-utent, "Liema kienu punteġġi kwizz tiegħek?" 83 00:04:26,610 --> 00:04:31,120 Imbagħad aħna biss għandhom dan loop li apparentement jitlob lill-utent għall-gradi tagħhom. Kif? 84 00:04:31,120 --> 00:04:37,460 Hija ttenni 0-2. U jien ngħid 2 minħabba kwizzijiet f'kull limiti bħalissa 2. 85 00:04:37,460 --> 00:04:42,310 Għalhekk ttenni minn 0 sa 2 u allura tistampa Quiz # ħaġa ta 'xi ħaġa, 86 00:04:42,310 --> 00:04:45,830 u mbagħad tuża GetFloat tikseb valur mill-utent. 87 00:04:45,830 --> 00:04:49,050 Allura Avviż dan huwa l-uniku element ġdid ieħor ta 'sintassi minn aħħar Erbgħa. 88 00:04:49,050 --> 00:04:53,120 Jekk inti tixtieq li taħżen xi ħaġa f'post partikolari f'dak array, 89 00:04:53,120 --> 00:04:55,460 inti terġa 'tuża l-parentesi kwadri. 90 00:04:55,460 --> 00:04:57,030 >> Allura hemm daqsxejn ta dikotomija hawn. 91 00:04:57,030 --> 00:04:59,040 L-ewwel darba li tuża l-parentesi kwadri 92 00:04:59,040 --> 00:05:02,250 inti tużaha biex tispeċifika kemm hu kbir trid li l-firxa li tkun. 93 00:05:02,250 --> 00:05:06,580 Iżda f'dan il-kuntest li jmiss hawn fejn aħna jimpjegaw mill-ġdid dawn il-parentesi kwadri 94 00:05:06,580 --> 00:05:10,540 ifisser jekk f'dik firxa inti tixtieq li tqiegħed xi valur? 95 00:05:10,540 --> 00:05:13,650 U d-distinzjoni hawnhekk tista 'tiġi dedotta mill-kuntest. 96 00:05:13,650 --> 00:05:17,130 Avviż hawnhekk għandna tip ta 'data, allura għandna l-isem ta' varjabbli, 97 00:05:17,130 --> 00:05:20,770 allura għandna ċingi kwadru tagħna ma 'numru ġewwa, virgola. Li minnu. 98 00:05:20,770 --> 00:05:22,290 Allura thats dikjarazzjoni. 99 00:05:22,290 --> 00:05:28,390 Huwa biss kif għalkemm aħna kienu għamlu xi ħaġa bħal float grade1; float Grade2; 100 00:05:28,390 --> 00:05:31,730 iżda għal darb'oħra, dan malajr ħafna hija rriżervata fil-kopja mod wisq, pejst, 101 00:05:31,730 --> 00:05:34,260 hekk minflok aħna biss simplifikati bħala tali, 102 00:05:34,260 --> 00:05:38,800 li jfisser issa għandna grad li tista 'tiġi maħżuna bracket 0, 103 00:05:38,800 --> 00:05:41,760 għandna ieħor grad li tista 'tiġi maħżuna bracket 1, 104 00:05:41,760 --> 00:05:46,890 imma dak jekk I goof u, per eżempju, linja tiegħi tmur s'issa - 105 00:05:46,890 --> 00:05:48,740 per eżempju, I jagħmlu dan inqas minn jew ugwali għal, 106 00:05:48,740 --> 00:05:50,620 li jfakkru kien is-sors ta 'bug preċedenti - 107 00:05:50,620 --> 00:05:55,590 li effettivament ifisser li fuq xi iterazzjoni aċċidentali 3 ta 'dan loop 108 00:05:55,590 --> 00:06:00,380 I użu parentesi 2. Effettivament, dak li jista 'jiġri hawn? Jiddispjacini? 109 00:06:00,380 --> 00:06:02,860 [Student] Huwa ser jiġi sostitwit. >> Huwa ser jiġu sostitwiti? 110 00:06:02,860 --> 00:06:04,520 Liema jkun mibdul? 111 00:06:04,520 --> 00:06:10,890 Dan litteralment huwa qal jissostitwixxi dak li hu fil-post 2 mal-valur tar-ritorn ta 'GetFloat. 112 00:06:10,890 --> 00:06:13,690 Iżda l-problema hija kemm hu kbir huwa l-array f'dan il-punt fl-istorja? 113 00:06:13,690 --> 00:06:17,730 [Rispons inaudible student] >> Il-firxa għadu biss ta 'daqs 2 114 00:06:17,730 --> 00:06:22,730 minħabba li l-firxa, bħal kull varjabbli, ġie ddikjarat l-ewwel, qabel we użat, 115 00:06:22,730 --> 00:06:27,220 u aħna speċifikati hawn minħabba dan kostanti li għandi 2 gradi li jien ser tpoġġi. 116 00:06:27,220 --> 00:06:29,930 >> Imma ftakar, il-xjenzjati tal-kompjuter jibdew jingħaddu minn 0. 117 00:06:29,930 --> 00:06:33,620 Allura l-ewwel post f'dak firxa hija kategorija 0. 118 00:06:33,620 --> 00:06:40,210 Il-post li jmiss huwa 1. Din hija ħaġa dejjem hekk ftit wisq fuq il-ġenb. 119 00:06:40,210 --> 00:06:42,870 Allura fi kliem ieħor, jekk I attwalment kellu dan array - 120 00:06:42,870 --> 00:06:46,790 u let me tara kif ukoll dan tikkopera hawn għalina - 121 00:06:46,790 --> 00:06:52,360 jekk I jkollhom firxa li stajt sempliċiment mfassla kif ġej 122 00:06:52,360 --> 00:06:56,750 u stajt allokati spazju għal 2 elementi, I jista 'jiġbed dan bħal dan fil-memorja 123 00:06:56,750 --> 00:06:58,020 fejn dan kanvas abjad kbira hija. 124 00:06:58,020 --> 00:07:00,920 Huwa biss l-RAM għandi fil-kompjuter tiegħi, GIG ta 'RAM, 2 gigs ta RAM, tkun xi tkun, 125 00:07:00,920 --> 00:07:05,400 iżda dawn il-kaxxi 2 issa individwalment jirrappreżentaw float, 32 bits. 126 00:07:05,400 --> 00:07:10,860 Mela jekk nressaq numru 1 hawn bħal 1.0, allura nressaq numru ieħor hawn simili 3.2 127 00:07:10,860 --> 00:07:15,280 iżda mbagħad I do bracket 2, li huwa simili tqegħid xi ħaġa hawn. 128 00:07:15,280 --> 00:07:17,820 U kif l-istampa jissuġġerixxi, m'hemm xejn hemm. 129 00:07:17,820 --> 00:07:20,450 Huwa tip ta 'bħal art ebda raġel minħabba I ma talabx-sistema operattiva 130 00:07:20,450 --> 00:07:23,550 li tagħti me dan il-kwizz 3. 131 00:07:23,550 --> 00:07:26,940 Jekk jien ma tixtieq li kwizz 3, I kellha l-previdenza 132 00:07:26,940 --> 00:07:31,700 li titlob lill-sistema operattiva għal dan billi tiddikjara kwizzijiet biex ma jkunux 2 133 00:07:31,700 --> 00:07:34,210 iżda biex minflok ugwali 3. 134 00:07:34,210 --> 00:07:39,000 >> Allura fi kliem ieħor, l-istampa li għandna effettivament ikollhom fil-idejn tidher bħal dan hawn. 135 00:07:39,000 --> 00:07:42,260 Dan għal darb'oħra huwa art ebda raġel. Aħna aħjar ma tippruvax miktub valuri hawnhekk. 136 00:07:42,260 --> 00:07:45,300 Iżda għal darb'oħra, xjenzjati tal-kompjuter minħabba għadd minn 0, 137 00:07:45,300 --> 00:07:49,520 meta nitkellmu dwar dan il-post fil-firxa, li suppost li tkun post 0, 138 00:07:49,520 --> 00:07:53,890 dan suppost tkun post 1, u dan ma jeżistux 139 00:07:53,890 --> 00:07:57,380 għaliex aħna biss talab lill-sistema operattiva għal 2 postijiet. 140 00:07:57,380 --> 00:08:00,130 Allura dawk tal inti ma esperjenza ta 'programmazzjoni preċedenti minn lingwi oħra 141 00:08:00,130 --> 00:08:04,150 tista 'taf li dan mhux dejjem il-każ ma' arrays jew affarijiet imsejħa vettori. 142 00:08:04,150 --> 00:08:06,930 Pjuttost, inti tista 'sempliċement iżommu żżid u żżid u żżid affarijiet li arrays, 143 00:08:06,930 --> 00:08:10,720 li, franchement, kellna dik l-abbiltà fis Scratch u għadhom aħna jidhru li taw it up here 144 00:08:10,720 --> 00:08:15,160 għaliex ma inti C programmazzjoni ħafna aktar espliċitu. 145 00:08:15,160 --> 00:08:17,980 Huwa biss int u l-kompjuter dritt issa, u l-kompjuter huwa biss se tagħmel 146 00:08:17,980 --> 00:08:19,530 dak li inti tgħid li tagħmel. 147 00:08:19,530 --> 00:08:24,270 Mela jekk inti biss għid li jtik 2 sufruni permezz ta 'linja 22 hawn, 148 00:08:24,270 --> 00:08:27,640 li kollox int ser terġa 'lura mis-sistema operattiva: spazju għall-2. 149 00:08:27,640 --> 00:08:34,049 >> Allura dejjem qed programmi tiegħek ser kultant tkun Buggy fir-rigward arrays. 150 00:08:34,049 --> 00:08:37,520 Dan huwa biss it-tip tan-natura ta 'l-kruha li biha lkoll huma fallible, 151 00:08:37,520 --> 00:08:42,490 u f'xi punt inti se indiċi probabbli ħafna lil hinn mill-konfini ta 'firxa tiegħek. 152 00:08:42,490 --> 00:08:45,980 U dan huwa biss mod fancy ta 'tgħid li inti marru fis xi ħaġa bracket 153 00:08:45,980 --> 00:08:49,970 u xi ħaġa kien biss kbira wisq ta 'numru. Inti marru lil hinn mill-limiti tal-firxa tiegħek. 154 00:08:49,970 --> 00:08:51,530 Iżda l-rasu issa huwa dan. 155 00:08:51,530 --> 00:08:54,990 Il-bqija ta 'dan il-programm verament m'għandha x'taqsam xejn fundamentalment ma' arrays. 156 00:08:54,990 --> 00:08:58,180 Dan kollu biss dwar xi aritmetiku sempliċi għall-medji tal-kompjuter. 157 00:08:58,180 --> 00:09:03,200 Allura aħna għandna hawn f'dan għat loop hawn ewwel somma varjabbli msejħa li aħna initialize għal 0. 158 00:09:03,200 --> 00:09:09,020 Imbagħad aħna jtenni minn 0 sa 2 darb'oħra u aħna żid għal din il-varjabbli kalkolu totali 159 00:09:09,020 --> 00:09:12,620 il-grad ith, hekk parentesi 0 allura bracket 1. 160 00:09:12,620 --> 00:09:15,130 U allura kif inti tagħmel fl-iskola grad biex tiġi kkalkulata l-medja, 161 00:09:15,130 --> 00:09:19,420 aħna sempliċiment jieħdu dik is-somma, diviża bin-numru totali ta 'kwizzijiet, 162 00:09:19,420 --> 00:09:22,520 u mbagħad għal miżura tajba aħna sejħa funzjoni hawn imsejjaħ tond. 163 00:09:22,520 --> 00:09:28,580 >> Issa, bħala twarrib, dak li huwa l-ftehim ma 'dan int parenthetical on line 34? 164 00:09:28,580 --> 00:09:31,730 Jista għandhom joħorġu diġà fis-sezzjoni, ma jkunux verament tkellem dwar dan formalment hawnhekk, 165 00:09:31,730 --> 00:09:35,210 imma dak li hu dan int fil parens probabilment tagħmel? >> [Rispons istudent inaudible] 166 00:09:35,210 --> 00:09:38,500 Yeah, dan jirreferi għall-ikkastjar jew typecasting, 167 00:09:38,500 --> 00:09:41,690 li tfisser it-teħid 1 tad-dejta tat-tip u dan jinbidel għal ieħor. 168 00:09:41,690 --> 00:09:45,400 Inti ma tistax tagħmel dan ma 'kull tip ta' data minħabba li xi kultant ikun daqsxejn stramba. 169 00:09:45,400 --> 00:09:49,640 Iżda f'dan il-każ, jekk il-valur tar-ritorn ta round huwa float 170 00:09:49,640 --> 00:09:53,880 minħabba li, wara kollox, jien tieħu float u jaqsmuh minn numru simili 2, 171 00:09:53,880 --> 00:09:55,840 Jien ser terġa 'lura float. 172 00:09:55,840 --> 00:10:00,760 Iżda n-nies iskola grad ma verament jixtieq ikun jaf li l-medja tagħhom kien 93.4 173 00:10:00,760 --> 00:10:04,420 għaliex dawn ser jirrealizzaw li kienu qatt tant qrib il-punt arrotondament 95. 174 00:10:04,420 --> 00:10:09,540 >> Allura rridu minflok jużaw int li jarrotondaw kulħadd biex l-int eqreb, 175 00:10:09,540 --> 00:10:12,730 li f'dan il-każ se tkun 94 bl-ebda punt wara dan. 176 00:10:12,730 --> 00:10:14,530 Hekk li jinsab biss trick matematika ftit. 177 00:10:14,530 --> 00:10:17,570 U aħna ser terġa 'lura għal dan il-kunċett ta' ikkastjar minħabba li se jkollha implikazzjonijiet, 178 00:10:17,570 --> 00:10:21,640 jekk inti ma jkunux skoperti diġà, għall-problema stabbilita 2. 179 00:10:21,640 --> 00:10:25,210 Allura firxa allura, inti tista 'taħseb - li għaddej biex jagħmlu me daħka ġurnata kollha. 180 00:10:25,210 --> 00:10:27,830 Jidher qisu dan jekk inti tfassal stampa ta 'dan, 181 00:10:27,830 --> 00:10:31,460 iżda l-importanti huwa li d-daqs huwa wkoll magħżula minnek 182 00:10:31,460 --> 00:10:34,050 meta inti titlob mis-sistema operattiva. 183 00:10:34,050 --> 00:10:39,460 Kwalunkwe mistoqsijiet imbagħad fuq matriċi? Yeah. 184 00:10:39,460 --> 00:10:47,080 [Kwistjoni student inaudible] 185 00:10:47,080 --> 00:10:49,310 Ah, mistoqsija tajba. 186 00:10:49,310 --> 00:10:53,150 Il-kwistjoni huwa dak li jiġri lill-0 null fil-firxa? Ma teżistix f'dan il-kuntest. 187 00:10:53,150 --> 00:10:57,430 Dan jeżisti biss fil-kuntest ta 'spag, li aħna qed dwar li ġejjin fil-ftit mument. 188 00:10:57,430 --> 00:11:02,300 Iżda għal firxa, bħal f'dan il-każ, kull ikollok huwa dak li inti titlob lill-sistema operattiva għal. 189 00:11:02,300 --> 00:11:04,050 >> U bħala twarrib, lest dan ikun ċar, 190 00:11:04,050 --> 00:11:07,030 I iżommu qal li inti titlob lill-sistema operattiva, titlob lill-sistema operattiva. 191 00:11:07,030 --> 00:11:10,090 Sistema operattiva, kif inti probabilment taf, huwa Mac OS, Windows, Linux. 192 00:11:10,090 --> 00:11:13,560 Meta int ssejjaħ funzjonijiet simili GetFloat 193 00:11:13,560 --> 00:11:19,280 jew inti tiddikjara varjabbli bħall gradi, 194 00:11:19,280 --> 00:11:23,200 fl-aħħar tal-ġurnata inti effettivament tistaqsi xi ħadd ieħor li jtik li l-memorja 195 00:11:23,200 --> 00:11:25,940 għaliex aħna bħala jaspiraw programmaturi 196 00:11:25,940 --> 00:11:28,800 m'għandhom l-ebda idea kif fil-fatt tikseb aċċess fiżiku għall-memorja. 197 00:11:28,800 --> 00:11:31,100 Iżda xi ħadd ma: is-sistema operattiva. 198 00:11:31,100 --> 00:11:36,630 Allura minbarra jippreżentaw lilna ma ikoni pretty u l-menus u folders u simili 199 00:11:36,630 --> 00:11:39,050 li tara fuq id-desktop tiegħek, jekk Mac jew PC, 200 00:11:39,050 --> 00:11:42,240 sistemi operattivi wkoll tagħmel l-għalf livell baxx mundane, 201 00:11:42,240 --> 00:11:44,680 l-għalf ferm teknika tal-ġestjoni tal-gigabyte 202 00:11:44,680 --> 00:11:48,780 jew 2 gigabytes ta 'memorja li għandek, ġestjoni tal-CPU li għandek, u oħrajn. 203 00:11:48,780 --> 00:11:50,170 Allura meta int bil-miktub il-kodiċi, 204 00:11:50,170 --> 00:11:53,900 int verament hooking fis-sistema operattiva tiegħek f'dan is-sens. 205 00:11:53,900 --> 00:11:55,720 Jien ser ikollhom biex jimminimizzaw dan. Kull dritt. 206 00:11:55,720 --> 00:11:59,980 >> Mistoqsijiet oħra dwar arrays? 207 00:12:00,330 --> 00:12:02,520 Nru? Okay. 208 00:12:02,520 --> 00:12:06,680 Allura l-tranżizzjoni b'mod naturali minn matriċi huwa attwalment suġġett li l-daqsxejn familjari. 209 00:12:06,680 --> 00:12:09,570 U aħna ħares qatt tant qosor f'dan il-ħin l-aħħar wisq. 210 00:12:09,570 --> 00:12:12,500 Dan kien eżempju string minn l-Erbgħa. 211 00:12:12,500 --> 00:12:15,060 Dan l-eżempju string kien programm pjuttost sempliċi, 212 00:12:15,060 --> 00:12:18,120 u stajt attwalment simplifikata lilha minn koppja ta 'linji għal skopijiet tal-lum. 213 00:12:18,120 --> 00:12:22,680 Kull ma fil-linja 19 hija tikseb string mill-utent, tirreġistrahom ġo varjabbli msejħa s. 214 00:12:22,680 --> 00:12:28,670 Imbagħad fl-22 linja 'il quddiem huwa apparentement istampar li string 1 karattru għal kull linja. 215 00:12:28,670 --> 00:12:30,730 Imma kif huwa tagħmel dan? 216 00:12:30,730 --> 00:12:33,350 Aħna qed tiddikkjara i varjabbli, dan ikun iffissat ugwali għal 0, 217 00:12:33,350 --> 00:12:35,770 u dan qed isir drawwa qadima issa. 218 00:12:35,770 --> 00:12:39,270 Aħna ma kinux jidhru f'dan sa l-Erbgħa, iżda inti tista 'tip ta' jiddeduċu minn isimha 219 00:12:39,270 --> 00:12:44,610 strlen jirritorna dak meta jingħata s? It-tul tas-sekwenza. 220 00:12:44,610 --> 00:12:47,940 Mela jekk jien tgħaddih string, kwotazzjoni-unquote DAVID, 221 00:12:47,940 --> 00:12:51,810 huwa wieħed jittama se jirritornaw lili n-numru 5 minħabba DAVID. 222 00:12:51,810 --> 00:12:55,600 Allura dak l-iskop tagħha fil-ħajja huwa li tieħu string, kemm jekk iebes kodifikati minnek 223 00:12:55,600 --> 00:12:58,840 jew f'dan il-każ pplaggjata bħala varjabbli, bħala argument, 224 00:12:58,840 --> 00:13:01,980 u figuri barra dak it-tul ta 'dak sekwenza hu. 225 00:13:01,980 --> 00:13:06,470 >> Allura hawn issa aħna qed tissellef xi notazzjoni mill-eżempju kwizz preċedenti. 226 00:13:06,470 --> 00:13:09,390 Dan m'għandha x'taqsam xejn ma 'sufruni, m'għandha x'taqsam xejn ma' kwizzijiet, 227 00:13:09,390 --> 00:13:13,100 iżda jirriżulta li l-jimteddu ftit abjad aħna kont qed tghidlek mill-ġimgħa 1 228 00:13:13,100 --> 00:13:16,330 hija li string ma verament jeżistu C. 229 00:13:16,330 --> 00:13:20,230 A string fl-aħħar tal-ġurnata hija verament ftit firxa. 230 00:13:20,230 --> 00:13:25,140 Huwa ta 'firxa ta' bytes, hekk byte, byte, byte, byte, li jfakkru huwa biss 8 bits, 231 00:13:25,140 --> 00:13:28,130 hekk blokki ta 'memorja, blokki ta' memorja, blokki ta 'memorja, blokki tal-memorja. 232 00:13:28,130 --> 00:13:31,210 U l-mezzi li bihom string huwa implimentat 233 00:13:31,210 --> 00:13:33,070 huwa billi l-ewwel karattru hawnhekk, 234 00:13:33,070 --> 00:13:37,470 allura hawnhekk, allura hawnhekk, allura hawnhekk, lura lura lura fil-memorja tal-kompjuter. 235 00:13:37,470 --> 00:13:42,160 Mela jekk int riedu li jespliċitaw kelma bħal HELLO, inti tpoġġi karattru H 1, 236 00:13:42,160 --> 00:13:48,240 allura E, allura l allura L, imbagħad O - 5 karattri b'kollox - x'imkien fil RAM kompjuter tiegħek. 237 00:13:48,240 --> 00:13:52,080 Iżda l-dettall prinċipali hawnhekk hija li dawn qed tmur biex tkun lura lura lura biex lura, 238 00:13:52,080 --> 00:13:54,200 dritt li jmiss ma 'xulxin. 239 00:13:54,200 --> 00:13:58,820 Meta meta ngħid i [i], dak bl-Ingliż huwa dan li tagħti me? 240 00:14:01,240 --> 00:14:04,550 X'jagħmel s [i] jirrappreżentaw f'dan il-każ? Yeah. 241 00:14:04,550 --> 00:14:07,800 >> [Student] Il-karattru ith fil-sekwenza. >> Eżattament. Il-karattru ith fil-sekwenza. 242 00:14:07,800 --> 00:14:12,260 Issa, i se tibda fil 0 kif kull tiegħi għal loop hawn, 243 00:14:12,260 --> 00:14:14,850 iżda li tajjeb għaliex kollox jibda jgħodd minn 0. 244 00:14:14,850 --> 00:14:19,160 Allura s [0] se jirrappreżenta l-ittra H fi ftit kliem bħal HELLO, 245 00:14:19,160 --> 00:14:24,530 s [1] se jirrappreżenta ittra bħal E fil-kelma bħall HELLO, u oħrajn. 246 00:14:24,530 --> 00:14:27,130 U dak li aħna jidhru li tkun qiegħda tagħmel fuq kull iterazzjoni ta 'dan loop 247 00:14:27,130 --> 00:14:32,780 huwa temporanjament ħażna l-karattru ith fil-varjabbli msejħa ċ, li huwa biss char, 248 00:14:32,780 --> 00:14:35,010 u allura aħna qed istampar c 249 00:14:35,010 --> 00:14:37,620 hekk li fl-aħħar tal-ġurnata dak li dan il-programm ma huwa dan li ġej. 250 00:14:37,620 --> 00:14:42,900 Jekk immur fil-direttorju sors u nagħmel string1 u I jimxi 'l quddiem u run string1, 251 00:14:42,900 --> 00:14:51,920 u mbagħad I tip kelma bħal HELLO, Daħħal, kollox ma huwa Stampa din il-karattru 1 kull darba. 252 00:14:51,920 --> 00:14:54,010 >> Allura hemm opportunità għall-irfinar hawn. 253 00:14:54,010 --> 00:14:58,150 Jien xorta li jagħmlu aktar xogħol, anki jekk huwa aktar ċar forsi b'dan il-mod, milli meħtieġ. 254 00:14:58,150 --> 00:15:03,270 Liema linja tal-kodiċi hawn nista probabbilment armih kollox? Yeah. 255 00:15:03,270 --> 00:15:08,290 Linja 24. F'konformità 24 jien tiddikjara ċ varjabbli. 256 00:15:08,290 --> 00:15:14,320 Jien ħażna l-karattru ith ta s fiha, iżda mbagħad jien jużaw ċ hawn. 257 00:15:14,320 --> 00:15:20,160 Allura jien jużaw c, hekk inħoss bħal I tista 'mhux biss tarmi linja 24 bogħod. 258 00:15:20,160 --> 00:15:23,850 [Kumment student inaudible] >> Eżattament. 259 00:15:23,850 --> 00:15:26,240 Allura meta niġu biex jitkellem dwar id-disinn ta 'programmi, 260 00:15:26,240 --> 00:15:30,740 Avviż dan is-simplifikazzjoni żgħira tal-kodiċi, li huwa daqstant tinqara, 261 00:15:30,740 --> 00:15:34,680 imma tirrealizza li s huwa biss varjabbli, tip tad-data tiegħu huwa firxa, 262 00:15:34,680 --> 00:15:38,610 hekk i [i] huwa biss se istantanjament ritorn li inti l-karattru ith f'dak sekwenza. 263 00:15:38,610 --> 00:15:40,620 U jekk inti tixtieq li jistampaw, li l-multa. 264 00:15:40,620 --> 00:15:43,680 Inti sempliċiment għandek tuża ċ% għax int ma istampar string, 265 00:15:43,680 --> 00:15:48,520 int istampar karattru fi string, u dan ukoll għandu l-effett ta 'stampar-karattru ith. 266 00:15:48,520 --> 00:15:51,390 U mfakkra l-unika differenza verament mill-aħħar ġimgħa bl-użu printf 267 00:15:51,390 --> 00:15:54,220 hija li filwaqt li fil-ġimgħat li għaddiet, aħna se nagħmlu xi ħaġa super sempliċi 268 00:15:54,220 --> 00:15:58,510 bħall placeholder l-% s allura l-isem ta 'sekwenza hawn, 269 00:15:58,510 --> 00:16:01,190 Issa aħna qed għadis ftit aktar profonda taħt il-barnuża u qal, 270 00:16:01,190 --> 00:16:06,090 ma print-sekwenza; jistampaw il-karattru uniku hemmhekk. 271 00:16:06,090 --> 00:16:10,570 >> Allura nistgħu nagħmlu xi ħaġa ftit differenti hawn għaliex hemm 1-oħra - mhux bug 272 00:16:10,570 --> 00:16:14,090 għaliex dan il-programm hija tajba, imma jien tagħmel xi ħaġa stupid 273 00:16:14,090 --> 00:16:16,810 li semmejt fil-qosor l-Erbgħa. 274 00:16:16,810 --> 00:16:22,680 Iżda ħsieb lura, kif jista 'disinn dan il-programm jista' jittejjeb saħansitra aktar? Yeah. 275 00:16:22,680 --> 00:16:28,280 [Rispons istudent inaudible] >> Oh, tajba. 276 00:16:28,280 --> 00:16:32,120 Allura tfakkar li aħna introduċiet varjabbli 2 imsejjaħ n-aħħar darba, 277 00:16:32,120 --> 00:16:34,850 li jidher li jkun tikkontradixxi nfusna għaliex l-għan tiegħi t-tieni ilu 278 00:16:34,850 --> 00:16:37,380 kien biss li tarmi l bogħod varjabbli bħala bla bżonn, 279 00:16:37,380 --> 00:16:40,700 iżda tfakkar li nhar l-Erbgħa aħna fil-fatt għamlet dan. 280 00:16:40,700 --> 00:16:46,170 I biddel il-linja għal li attwalment ikollhom comma hawn, allura n = strlen, 281 00:16:46,170 --> 00:16:52,120 u mbagħad minn hawn għamilt i 00:16:57,660 X'inhu l-qligħ fundamentali li jien kisba billi jbiddlu inizjalizzazzjoni tiegħi għal dan 283 00:16:57,660 --> 00:17:01,590 u l-kundizzjoni tiegħi għal din issa? >> [Rispons istudent inaudible] >> Eżattament. 284 00:17:01,590 --> 00:17:06,170 Jien ma jfakkar strlen ġdid u għal darb'oħra u għal darb'oħra minħabba jfakkru kif il-linja għal xogħlijiet. 285 00:17:06,170 --> 00:17:08,790 Anke jekk dawn jibdew biex jiksbu aktar ikkumplikati li tħares, 286 00:17:08,790 --> 00:17:12,480 ifakkar li l-ħaġa qabel l-virgola ewwel huwa l-inizjalizzazzjoni, li jiġri darba. 287 00:17:12,480 --> 00:17:14,359 Il-kondizzjoni, għalkemm, hi fin-nofs, 288 00:17:14,359 --> 00:17:17,710 u dan gets ċċekkjati kull darba li inti tmur permezz tal-linja. 289 00:17:17,710 --> 00:17:22,420 >> Allura huwa tip ta 'stupid li għandha titlob l-kompjuter l-istess kwistjoni mill-ġdid u għal darb'oħra - 290 00:17:22,420 --> 00:17:25,920 X'hemm-tul ta 'HELLO? X'hemm-tul ta 'HELLO? X'hemm-tul ta 'HELLO? - 291 00:17:25,920 --> 00:17:29,740 għaliex kif aħna ser tara llum u nhar l-Erbgħa, dan definittivament se jieħu ż-żmien, 292 00:17:29,740 --> 00:17:34,320 u mhuwiex użu tajjeb ħafna ta 'żmien minħabba biex insemmu l-tul ta' sekwenza 293 00:17:34,320 --> 00:17:37,030 effettivament jieħu daqsxejn ta 'sforz. 294 00:17:37,030 --> 00:17:39,760 Mhuwiex istantanja, kif huwa f'xi lingwa. 295 00:17:39,760 --> 00:17:43,920 Allura billi jinbidlu dan għal n, il-prezz jien ħlas huwa dak? 296 00:17:43,920 --> 00:17:45,640 Aħna qed jaraw kompromess hawn. 297 00:17:45,640 --> 00:17:49,460 I jista 'jiffranka ħin billi ma titlob il-kwistjoni kkritikat istess ġdid u għal darb'oħra, 298 00:17:49,460 --> 00:17:51,740 iżda li għaddej biex ispiża lili xi ħaġa, li huwa dak? 299 00:17:51,740 --> 00:17:55,050 >> [Student] Inti titlef ċertu ammont ta 'memorja. >> Eżattament. Huwa ser tiswieli xi memorja. 300 00:17:55,050 --> 00:17:56,670 Allura f'dan il-każ l-ispejjeż lili dak? 301 00:17:56,670 --> 00:18:01,530 Ieħor bits 32 minħabba n huwa biss int, kif implikat mill-int kelma hawn. 302 00:18:01,530 --> 00:18:03,300 Iżda huwa li okay? 303 00:18:03,300 --> 00:18:05,800 Franchement, dan huwa probabbilment okay għaliex jekk inti taħseb dwarha, 304 00:18:05,800 --> 00:18:09,030 l-itwal-sekwenza huwa, l-aktar ħin jien ser tkun ħela 305 00:18:09,030 --> 00:18:11,920 minħabba strlen hija se tikseb sejjaħ għal darb'oħra u għal darb'oħra u għal darb'oħra 306 00:18:11,920 --> 00:18:13,520 għal kull iterazzjoni tal-linja. 307 00:18:13,520 --> 00:18:18,070 U dawn il-ġranet, Mac tiegħi tkun 2 gigs ta RAM, dawn il-jiem 4 gigs ta RAM kultant. 308 00:18:18,070 --> 00:18:22,420 I think I jistgħu jaffordjaw 4 ta 'dawk bytes li attwalment veloċità affarijiet up. 309 00:18:22,420 --> 00:18:26,590 Iżda din se tkun kompromess u tema verament fl-ipprogrammar u fl-xjenza tal-kompjuter 310 00:18:26,590 --> 00:18:28,320 ta qatt ma jkollna xejn b'xejn. 311 00:18:28,320 --> 00:18:32,880 Jekk inti tixtieq li ttejjeb xi ħaġa hawn, inti għandek tħallas għaliha fl-naħa l-oħra b'xi mod. 312 00:18:32,880 --> 00:18:35,880 Spazju kontra l-ħin f'dan il-każ. 313 00:18:35,880 --> 00:18:40,700 >> Allura dan kien kollu jwassal lejn xi ħaġa mistur bħal din, 314 00:18:40,700 --> 00:18:44,070 li, kif inti probabilment dehret minn issa, fil-fatt jgħid? 315 00:18:44,070 --> 00:18:47,420 [Rispons inaudible student] >> Yeah, għalhekk dan huwa, Kun żgur li tixrob Ovaltine tiegħek, 316 00:18:47,420 --> 00:18:52,490 attwalment billi jintuża algoritmu imsejħa ROT13, ROT 1-3, 317 00:18:52,490 --> 00:18:55,500 li sempliċiment ifisser dawwar kollha tal-ittri 13 postijiet, 318 00:18:55,500 --> 00:18:58,720 li jfisser jieħu A u mbagħad żid 13 sa lilha u jmorru dot, dot, dot 319 00:18:58,720 --> 00:19:04,640 it-triq kollha għall-ittra 13 bogħod, jagħmlu l-istess ħaġa għall-B u għall C u għal D u oħrajn. 320 00:19:04,640 --> 00:19:10,850 U għalhekk jekk aħna verament jikkonvertu dan hawn jużaw bidla ta '13 postijiet, 321 00:19:10,850 --> 00:19:14,580 aħna ser terġa 'lura għal dak Ralphie ftit kellu, li kien, Kun żgur li tixrob Ovaltine tiegħek. 322 00:19:14,580 --> 00:19:18,160 Iżda issa għall-problema stabbilita 2, fl-edizzjoni standard mill-inqas, 323 00:19:18,160 --> 00:19:21,680 inti għandek tip ta 'do dan enciphering lilek innifsek, 324 00:19:21,680 --> 00:19:25,990 u għandna li b'xi mod jieħdu input bħal dan u kriptaġġ jew decrypt dan. 325 00:19:25,990 --> 00:19:29,850 >> Allura liema minn dawn it-tip fundamenti tal twassalna biex dik l-opportunità? 326 00:19:29,850 --> 00:19:32,650 Ejja tagħti ħarsa lejn dan l-eżempju 3 hawn. 327 00:19:32,650 --> 00:19:38,430 L-ewwelnett, huwa msejjaħ ASCII. Xi jfisser ASCII jirreferu lura għal? 328 00:19:38,430 --> 00:19:40,460 Standard Kodiċi Amerikana għall Interchange Informazzjoni, 329 00:19:40,460 --> 00:19:43,850 li huwa mod verament twila ta 'tgħid liema? X'inhu ASCII? 330 00:19:43,850 --> 00:19:47,890 [Inaudible student rispons] >> X'hemm li? >> [Student] A Mappa karattru. >> Mappa karattru. 331 00:19:47,890 --> 00:19:51,390 Hija biss mapep numri għall-ittri minħabba li l-dinja għandha standardizzat 332 00:19:51,390 --> 00:19:55,380 liema numri se jirrappreżenta dak l-ittri sabiex lkoll jistgħu jużaw il-kompjuters 333 00:19:55,380 --> 00:19:59,340 u l-programmi tagħna kollha huma biss kompatibbli meta niġu għall-istampar l-affarijiet fuq l-iskrin. 334 00:19:59,340 --> 00:20:04,680 Allura ifakkar li 65 jiġri li jirrappreżentaw A, 97 jiġri li jirrappreżentaw zghar a. 335 00:20:04,680 --> 00:20:08,510 U hekk dan il-programm sempliċi hawn ASCII qiegħda tieħu vantaġġ ta 'dan il-fatt - 336 00:20:08,510 --> 00:20:12,770 li d-dinja jaf li l-kapital A huwa 65 - u huwa biss istampar tal-mapping. 337 00:20:12,770 --> 00:20:16,320 >> Għalhekk qabel we adsa fis dan il-kodiċi, let me minflok tiftaħ tieqa terminal. 338 00:20:16,320 --> 00:20:21,550 Let me imorru quddiem u jagħmlu ASCII, u mbagħad ejja biss run dan il-ħaġa biss li jħassru l-output. 339 00:20:21,550 --> 00:20:25,960 U hija biss tagħmel dan: ċart verament kbir li biss jgħidlekx me kollha tal-kodiċijiet varji 340 00:20:25,960 --> 00:20:27,950 għall kollha ta 'l-ittri differenti. 341 00:20:27,950 --> 00:20:32,100 Allura sempliċi program super, imma jien ma jkollhom kodiċi iebes dawk il-linji ta 'produzzjoni 52: 342 00:20:32,100 --> 00:20:34,860 26 uppercase, 26 zghar. 343 00:20:34,860 --> 00:20:37,790 Minflok, I ma 'dan programmatically ma' koppja ta 'linji. 344 00:20:37,790 --> 00:20:39,720 Avviż dak li għamilt hawn. 345 00:20:39,720 --> 00:20:44,790 I tennew mill-i huwa 65 dwar sa 65 + 26 għaliex jien ridt li jistampa 26 ittri 346 00:20:44,790 --> 00:20:49,860 fil-alfabett Ingliż, i + + fuq kull iterazzjoni, u issa avviż dan mill-ġdid. 347 00:20:49,860 --> 00:20:52,540 Hu l-ripetizzjoni ta 'typecasting ħabib tagħna 348 00:20:52,540 --> 00:20:54,620 fejn inti jikkonvertu 1 dejta tat-tip għall-ieħor 349 00:20:54,620 --> 00:20:57,480 għaliex dak li nixtieq do f'dan il-programm partikolari? 350 00:20:57,480 --> 00:21:02,650 Irrid għadd numerikament minħabba li l-mod kif I kiber għadd - 65, 66, 67, u oħrajn - 351 00:21:02,650 --> 00:21:04,420 imma ma rridx li jistampaw biss in-numri. 352 00:21:04,420 --> 00:21:08,030 Irrid li jistampaw l-ittra segwita bin-numru. 353 00:21:08,030 --> 00:21:18,640 Irrid li jistampaw A: numru, B: numru, iżda I tista 'tagħmel dan bl-varjabbli eżatt l-istess. 354 00:21:18,640 --> 00:21:21,630 So I jistampa c% bħala placeholder għal karattru, 355 00:21:21,630 --> 00:21:25,080 D% bħala placeholder għal ċifra jew numru. 356 00:21:25,080 --> 00:21:27,750 Imbagħad dak li għandi plagg fl għal dawk placeholders 2? 357 00:21:27,750 --> 00:21:33,960 I plug 1 fl-ekwivalenti karattru ta 'i, u mbagħad I jistampa i stess. 358 00:21:33,960 --> 00:21:36,400 >> Allura Avviż dan wisq biss xogħlijiet. 359 00:21:36,400 --> 00:21:39,320 Hekk kif I jistgħu mitfugħa minn float għal int 360 00:21:39,320 --> 00:21:41,750 sabiex imorru minn numru reali li integer, 361 00:21:41,750 --> 00:21:46,100 here I tista 'tmur minn int lil char, li hija ftit stramb - 362 00:21:46,100 --> 00:21:48,680 ma pjuttost Mappa fuq id-dinja reali - iżda fil-kompjuters 363 00:21:48,680 --> 00:21:51,140 a char huwa biss numru taħt il-barnuża, 364 00:21:51,140 --> 00:21:53,590 hekk aħna qed tkun dejjem hekk espliċita hawn lejn il-kompjuter, qal, 365 00:21:53,590 --> 00:21:58,920 printf, jistampa mhux i bħala 65, ipprintjaha bħala ekwivalenti numerika tagħha. 366 00:21:58,920 --> 00:22:02,110 U jirriżulta jien teknikament ma anki bżonn din. 367 00:22:02,110 --> 00:22:05,020 What I kienet tagħmel mument ilu huwa espliċitament ikkastjar 368 00:22:05,020 --> 00:22:08,760 billi jispeċifikaw liema dejta tat-tip Irrid immur minn u lejn. 369 00:22:08,760 --> 00:22:11,840 Imma avviż li jien diġà għandhom dan ċ% placeholder 370 00:22:11,840 --> 00:22:14,930 u dan ieħor% placeholder ċ hawn. 371 00:22:14,930 --> 00:22:18,880 Anke jekk dan mhux int, il-kompjuter jirrealizza li char, 372 00:22:18,880 --> 00:22:21,080 huwa biss int taħt il-barnuża. 373 00:22:21,080 --> 00:22:25,100 >> Mela jekk jien attwalment recompile dan u terġa 'ssir l-programm ASCII, 374 00:22:25,100 --> 00:22:31,210 tinnota li għadu biss xogħlijiet minħabba l-kompjuter jirrealizza li hemm din il-korrispondenza. 375 00:22:31,210 --> 00:22:34,870 Issa, huwa aktar importanti li jagħmlu l-ikkastjar espliċita fid-dinja ta 'sufruni biex ints 376 00:22:34,870 --> 00:22:37,460 għaliex hemm int fil-fatt tagħmel deċiżjoni kkalkulati: 377 00:22:37,460 --> 00:22:40,140 tarmi kollox wara l-punt deċimali. 378 00:22:40,140 --> 00:22:44,990 Hawn hemm verament xejn li tarmi l bogħod minħabba karattru huwa biss numru, 379 00:22:44,990 --> 00:22:48,220 u string huwa biss firxa ta 'karattri. 380 00:22:48,220 --> 00:22:52,530 Allura meta niġu żmien li jittieħdu xi wħud kriptaġġ jew deċifrar, 381 00:22:52,530 --> 00:22:56,770 kif qed jgħid li nistgħu ngħidu tittraduċi xi ħaġa bħal din nonsense li, 382 00:22:56,770 --> 00:22:58,670 Kun żgur li tixrob Ovaltine tiegħek? 383 00:22:58,670 --> 00:23:02,700 X'jiġri jekk nafu dritt issa - ejja tieħu bħala assunzjoni - li ċ-ċavetta, 384 00:23:02,700 --> 00:23:08,010 in-numru li aħna qed ddur kollha ta 'dawn l-ittri minn, huwa n-numru 13? 385 00:23:08,010 --> 00:23:11,800 Allura aħna marru mill-ittra B-triq kollha sa O fil-bidu tas-sentenza, 386 00:23:11,800 --> 00:23:14,710 Kun żgur li tixrob Ovaltine tiegħek, għaliex jekk nagħmel B 387 00:23:14,710 --> 00:23:19,600 u mbagħad mmur C, D, E, F, G, H, I, J, K, L, M, N, O, 388 00:23:19,600 --> 00:23:23,760 hu għalhekk li l-encryption ta 'l-ittra B isir O 389 00:23:23,760 --> 00:23:26,570 minħabba I biss miżjud 13 miegħu. 390 00:23:26,570 --> 00:23:33,460 >> Mela jekk jien tixtieq li decrypt dan, I essenzjalment għandhom jieħdu O u mbagħad naqqas 13 minnha. 391 00:23:33,460 --> 00:23:36,880 Or, franchement, għaliex hemm 26-ittri fil-alfabett, dan huwa wonderfully simetriċi, 392 00:23:36,880 --> 00:23:41,260 nistgħu wkoll żid ftit 13 u aħna ser terġa 'lura għall-ittra B. 393 00:23:41,260 --> 00:23:44,290 Imma kif taħseb li tmur dwar implimentazzjoni xi ħaġa bħal din fil-Caesar 394 00:23:44,290 --> 00:23:46,600 jew verament manipulazzjoni kordi b'mod ġenerali? 395 00:23:46,600 --> 00:23:51,380 Jekk l-ittra B huwa dak in-numru? 396 00:23:51,380 --> 00:23:55,290 X'hemm-ittra B? Allura huwa 66, id-dritt? 397 00:23:55,290 --> 00:23:59,220 Allura jekk l-ittra A huwa 65 u l-ittra B huwa 66, 398 00:23:59,220 --> 00:24:03,940 hekk 66, I kollha għandek tagħmel hu li żżid 13 lilha, u dan jagħti me 79. 399 00:24:03,940 --> 00:24:09,150 U jekk immorru ftit iqarrqu folja tagħna, 79 tabilħaqq mapep fuq O. 400 00:24:09,150 --> 00:24:11,290 >> Iżda hemm daqsxejn ta 'każ kantuniera hawnhekk. 401 00:24:11,290 --> 00:24:15,170 X'inhu, ngħidu aħna, l-ittra Z? 402 00:24:15,170 --> 00:24:20,180 Jekk nagħmlu 66 + 25 biex tikseb it-triq kollha sa l-aħħar ta 'l-alfabett, aħna qed fuq 91. 403 00:24:20,180 --> 00:24:24,520 91 + 13 tagħti me 104, u raden liema? 404 00:24:24,520 --> 00:24:29,200 104 ma ugwali ittra uppercase. 405 00:24:29,200 --> 00:24:31,610 Ejja ħa mmorru lura għal folja iqarrqu ftit hawn. 406 00:24:31,610 --> 00:24:38,070 Jekk I terġa 'ssir dan il-programm fl-appliance, avviż li 104, jekk immur lura għall-tieqa terminal, 407 00:24:38,070 --> 00:24:41,800 104 hija apparentement l-h zghar. 408 00:24:41,800 --> 00:24:46,400 Għalhekk għandna bżonn xi trick qofol hawnhekk sabiex tagħmel ċert li meta aħna tibda fil Z 409 00:24:46,400 --> 00:24:50,260 u aħna żid 13 sa din ma rridux li biss iżommu forġa quddiem għal numri akbar u akbar. 410 00:24:50,260 --> 00:24:52,600 What do we verament irridu li tagħmel? 411 00:24:52,600 --> 00:24:54,570 Inti tixtieq li nagħlaq madwar. 412 00:24:54,570 --> 00:25:00,250 >> Għalhekk jirriżulta, kif inti stajt tidher probabbilment fit-taqsima issa jew fil-spec sett problema nnifisha 413 00:25:00,250 --> 00:25:05,730 induna li hemm dan operatur ieħor fis-C li wkoll huwa sinjal fil-mija, 414 00:25:05,730 --> 00:25:11,020 iżda billi konna użati% hawn biex tispeċifika placeholder, 415 00:25:11,020 --> 00:25:15,420 jafu li, speċjalment għal sett problema 2, hemm ukoll xi ħaġa bħal din: 416 00:25:15,420 --> 00:25:18,990 int x = y% z. 417 00:25:18,990 --> 00:25:22,770 Let me biss tippreżenta din bħala forma ferm ġeneriċi ta 'dan. 418 00:25:22,770 --> 00:25:25,580 Perċentwali ifisser dak fil-lingwa ta 'programmar? >> [Student] Modulo. 419 00:25:25,580 --> 00:25:28,790 Modulo, li huwa mod fancy ta 'tgħid l-bqija. 420 00:25:28,790 --> 00:25:31,620 Anki jekk hemm distinzjoni żgħira mad-definizzjoni hemm, 421 00:25:31,620 --> 00:25:37,210 dan ifisser jaqsam y mill z iżda ma jibgħat lura l-riżultat ta 'dik id-diviżjoni; 422 00:25:37,210 --> 00:25:39,650 minflok, jirritorna l-bqija. 423 00:25:39,650 --> 00:25:47,390 >> Mela jekk y huwa attwalment 3 u z huwa attwalment 2, 3 diviż bi 2 hija l-1 bil-bqija ta '1, 424 00:25:47,390 --> 00:25:51,550 hekk dak li ma x-fatt ugwali f'dan ix-xenarju? 1. 425 00:25:51,550 --> 00:25:54,540 Dan huwa tali sempliċi, ta 'livell baxx idea. 426 00:25:54,540 --> 00:25:56,480 Huwa jieħu ftit ħin biex tikseb moħħok imgeżwer madwaru 427 00:25:56,480 --> 00:25:58,740 għaliex dan huwa probabbilment kien filwaqt li peress li inti anki kellhom kura dwar fdalijiet 428 00:25:58,740 --> 00:26:01,160 u fil-fatt jużawhom għal xi ħaġa skop, 429 00:26:01,160 --> 00:26:05,290 imma f'dan il-każ il-fatt sempliċi li inti tista 'tmur minn numru kbir bħal 3 430 00:26:05,290 --> 00:26:08,920 lil numru relattivament żgħir bħal 2 u mbagħad wrap madwar effettiv 431 00:26:08,920 --> 00:26:14,160 billi tuża l-bqija għal valur iżgħar bħal 1 se jkun trick imprezzabbli 432 00:26:14,160 --> 00:26:17,690 li nistgħu nużaw kemm għal xi ħaġa bħal Caesar u dan Vigenere ħaġa oħra 433 00:26:17,690 --> 00:26:22,240 fil-problema sett 2, iżda dan se jkun trick rikorrenti matul il-semestru. 434 00:26:22,240 --> 00:26:24,880 Dan sempliċi, idea sempliċi ta 'ftit jieħdu l-bqija b'mod ġenerali 435 00:26:24,880 --> 00:26:26,530 se jippermettilna naslu biex nagħlaq madwar. 436 00:26:26,530 --> 00:26:31,140 U kif aħna tibda playing aktar mal-matriċi, kif aħna tibda playing aktar bil-memorja nnifisha, 437 00:26:31,140 --> 00:26:35,800 dan se jsiru aktar u aktar ta 'trick qawwija. 438 00:26:35,800 --> 00:26:43,420 >> Allura xi mistoqsijiet imbagħad fuq ASCII jew il-rappreżentazzjoni ta 'spag bħala arrays? 439 00:26:43,420 --> 00:26:47,430 U aħna ser teħodha up 1 talja aktar. Yeah. 440 00:26:47,430 --> 00:26:52,350 [Kwistjoni student inaudible] >> mistoqsija Tajba. 441 00:26:52,350 --> 00:26:55,370 Xi jfisser meta varjabbli għandha b'asterisk quddiem ta 'dan? 442 00:26:55,370 --> 00:26:57,720 Let me jipposponi twieġeb li, f'kull dettall, 443 00:26:57,720 --> 00:27:00,100 iżda li jirreferi għal suġġett magħruf bħala pointer. 444 00:27:00,100 --> 00:27:03,440 Pointers għandhom x'jaqsmu ma 'memorja, u aħna qed attwalment llum 445 00:27:03,440 --> 00:27:06,330 tieħu l-ewwel pass lejn din id-diskussjoni, 446 00:27:06,330 --> 00:27:08,600 iżda għal issa, let me nippretendu li l-istilla ma teżistix 447 00:27:08,600 --> 00:27:15,380 u aħna ser tkompli ssejjaħ kordi kordi minflok tintuża * char, 448 00:27:15,380 --> 00:27:19,530 li inti stajt probabbilment jidhru qabel u jien ser jitqiegħdu fuq l-iskrin fi ftit mument bħala teaser. 449 00:27:19,530 --> 00:27:23,010 Allura aħna ser terga 'lura għal dik fid-dettall il-mod aktar milli ħafna minnkom probabbilment se simili. 450 00:27:23,010 --> 00:27:25,760 Eventwalment,. Llum ma Yeah. 451 00:27:25,760 --> 00:27:42,810 >> [Kwistjoni student inaudible] 452 00:27:42,810 --> 00:27:47,080 F'liema kuntest do ikollok biex tipprovdi s-sinjal ta 'karattru? >> [Student] Yeah. 453 00:27:47,080 --> 00:27:52,130 Allura fil-kontumaċja, meta inti ma jpoġġux +, biss numri pożittivi huma assunti. 454 00:27:52,130 --> 00:27:55,390 Allura jekk biss jiktbu n-numru 1, huwa ta '1 pożittiv. 455 00:27:55,390 --> 00:27:57,710 Jekk inti fil-fatt tixtieq li tispeċifika l-negazzjoni ta 'valur, 456 00:27:57,710 --> 00:28:01,060 inti litteralment għandek tagħmel -1 fuq it-tastiera tiegħek. 457 00:28:01,060 --> 00:28:20,440 Iżda dan probabbilment mhix kwistjoni tiegħek. >> [Rispons istudent inaudible] 458 00:28:20,440 --> 00:28:22,200 >> Good kwistjoni. Okay. 459 00:28:22,200 --> 00:28:24,970 Allura dan għandu ma, I jiġbru, ma 'xi tip ta' bug inti dam fis 460 00:28:24,970 --> 00:28:27,640 għaliex inti kienu konverżjoni integer għal karattru, 461 00:28:27,640 --> 00:28:29,780 iżda b'xi negattività ltqajna involuti, 462 00:28:29,780 --> 00:28:32,380 u għalhekk il-karattru għadha kemm ħarġet mill munged b'xi. 463 00:28:32,380 --> 00:28:36,710 Allura għal issa, let me oversimplify ftit sakemm aħna terġa 'lura għal dan it-tip ta' suġġett. 464 00:28:36,710 --> 00:28:39,570 Għal issa, think ta 'affarijiet b'dan il-mod - u dan huwa oversimplification. 465 00:28:39,570 --> 00:28:43,500 Imma fid-dinja ta 'numru sħiħ, inti għandek kemm bits għad-dispożizzjoni tiegħek? 466 00:28:43,500 --> 00:28:45,190 Inti għandek 32 bits. 467 00:28:45,190 --> 00:28:49,030 U s'issa, konna tkellimna dwar in-numru totali ta 'numri interi inti tista' għalhekk tirrappreżenta 468 00:28:49,030 --> 00:28:52,430 hija madwar 4 biljun fl-total għax għandek 32 bits, 469 00:28:52,430 --> 00:28:55,100 b'tali mod li 2 għall-32, b'tali mod li madwar 4 biljun. 470 00:28:55,100 --> 00:28:58,810 Iżda rajna fil-ġimgħa jew 2 ilu li inti ma verament jkollhom firxa ta 'numri 471 00:28:58,810 --> 00:29:01,240 minn 0 fil sa 4 biljun. 472 00:29:01,240 --> 00:29:06,340 Il-firxa minflok jmur minn madwar negattiva 2 biljun għal pożittiv 2 biljun. 473 00:29:06,340 --> 00:29:10,990 Iżda dan imbagħad iqajjem il-kwistjoni, kif taħseb li jirrappreżentaw l-kunċett ta 'negattivi 2000000000 474 00:29:10,990 --> 00:29:13,260 aħseb u ara negattiva 1? 475 00:29:13,260 --> 00:29:17,960 Għal issa, nistgħu oversimplify u biss jgħidu li aħna qed tmur biex jużaw il-ftit leftmost 476 00:29:17,960 --> 00:29:22,380 ta 'dawk bits 32, u jekk huwa ta' 1 huwa numru negattiv, 477 00:29:22,380 --> 00:29:25,090 u jekk huwa ta '0 huwa numru pożittiv. 478 00:29:25,090 --> 00:29:28,570 Il-problema li rappreżentazzjoni simplifikata ta 'numri negattivi 479 00:29:28,570 --> 00:29:33,700 hija li jekk inti kienu deliberatament qed għaqlija u jippruvaw li jikkonvertu mill-karattru għal numru 480 00:29:33,700 --> 00:29:37,190 jew viċe versa, hemm ebda ħaġa bħal karattru negattiv. 481 00:29:37,190 --> 00:29:42,550 Fid-dinja tal-ASCII, li juża biss 8 bits, kollha 8 ta 'dawk kwistjoni bits, 482 00:29:42,550 --> 00:29:46,810 u l-ftit leftmost m'għandha x'taqsam xejn ma 'negattività. 483 00:29:46,810 --> 00:29:49,670 U biss li jkunu ċari, meta ngħid bits xellugi, 484 00:29:49,670 --> 00:29:54,610 ifakkar li meta għamilna daqsxejn relatati eżempji tagħna fl-ewwel ġimgħa 485 00:29:54,610 --> 00:30:02,570 ifakkar li fassalna affarijiet simili 1001101, xi ħaġa bħal din. 486 00:30:02,570 --> 00:30:07,210 Meta I say-ftit leftmost, I biss litteralment tfisser il-1 li tikteb it-triq kollha fuq lejn ix-xellug. 487 00:30:07,210 --> 00:30:11,910 Għalhekk fl-dinja ta 'karattri ma jkun hemm ebda kunċett ta' negattività, 488 00:30:11,910 --> 00:30:16,360 hekk li ftit leftmost attwalment għandu xi ħaġa li tagħmel ma 'ASCII, x'taqsam xejn mal-negattività. 489 00:30:16,360 --> 00:30:19,390 >> Allura li ħsejjes simili - u barra mill-kuntest huwa diffiċli li tingħata risposta eżattament - 490 00:30:19,390 --> 00:30:25,840 iżda b'xi, il-kodiċi tiegħek kien konfuża li ftit leftmost bħala li jirrappreżentaw valur negattiv 491 00:30:25,840 --> 00:30:29,160 meta verament kien parti mill-karattru fil-kwistjoni. 492 00:30:29,160 --> 00:30:32,250 U għal darb'oħra, jien oversimplifying minħabba kompjuters fil-fatt jagħmlu xi ħaġa ftit fancier 493 00:30:32,250 --> 00:30:37,080 milli sempliċiment tibdil li ftit leftmost għal 1 għal sinjal negattiv versus 0. 494 00:30:37,080 --> 00:30:41,270 Huma minflok, jekk int kurjuż lill-Google, l-użu xi ħaġa tipikament tissejjaħ jikkumplimentaw 2, il- 495 00:30:41,270 --> 00:30:43,830 li huwa daqsxejn aktar sofistikati ta 'approċċ 496 00:30:43,830 --> 00:30:45,490 iżda l-idea hija finalment l-istess. 497 00:30:45,490 --> 00:30:50,530 >> Allura fil-qosor, kellha tagħmel mal-fatt li inti kienu timmassaġġja numru lil karattru 498 00:30:50,530 --> 00:30:53,750 jew viċe versa, iżda kodiċi tiegħek ma kienx tieħu konjizzjoni tal-fatt 499 00:30:53,750 --> 00:30:56,510 li 1 minn dawk bits kellhom importanza fid-dinja numerika. 500 00:30:56,510 --> 00:30:59,940 Li mhux il-każ fid-dinja karattru. 501 00:30:59,940 --> 00:31:04,270 Iżda ħsejjes bħalek ffissat, f'liema każ irrilevanti issa. Mistoqsijiet oħra. 502 00:31:06,030 --> 00:31:07,110 Okay. 503 00:31:07,110 --> 00:31:11,560 Allura s'issa, kollha tal-programmi konna bil-miktub ħadu kontribut forsi mill-utent 504 00:31:11,560 --> 00:31:14,330 fil-forma ta 'funzjonijiet simili GetInt, GetString, 505 00:31:14,330 --> 00:31:16,990 jew jekk inti ħadthom ġiet qari quddiem fil-kotba varji jew referenzi fuq l-internet, 506 00:31:16,990 --> 00:31:21,390 inti infuskom jista 'jkollok użati funzjonijiet bħall scanf li, franchement, nużaw fil-librerija CS50. 507 00:31:21,390 --> 00:31:25,370 Iżda fil-ġimgħa jew 2, aħna ser attwalment nuruk kif il-librerija CS50 tiġi implimentata 508 00:31:25,370 --> 00:31:27,890 sabiex inkunu tista 'tieħu dawk ir-roti ta' taħriġ off kollox. 509 00:31:27,890 --> 00:31:31,340 >> Iżda jirriżulta hemm mod ieħor biex jiksbu input mill-utent. 510 00:31:31,340 --> 00:31:34,670 Fil-fatt, aħna lilna nfusna kienu jużaw argumenti kmand tal-linja 511 00:31:34,670 --> 00:31:36,500 għal ftit ġimgħat issa. 512 00:31:36,500 --> 00:31:41,150 Kull darba aħna run clang jew għandna run jagħmlu, 513 00:31:41,150 --> 00:31:45,050 aħna mhux biss ittajpjat clang, Ikteb, aħna ma ittajpjat jagħmlu, Ikteb. 514 00:31:45,050 --> 00:31:49,340 Dak li aħna tipikament miktuba wara l-kelma clang fil-pront tagħna terminal twieqi? 515 00:31:51,110 --> 00:31:52,900 [Student] L-isem fajl. >> L-isem fajl, id-dritt? 516 00:31:52,900 --> 00:31:57,560 Hello.c jew mario.c jew ikun x'ikun l-isem ta 'fajl rilevanti huwa. 517 00:31:57,560 --> 00:32:01,910 U f'dan is-sens dak li inti stajt verament isir huwa inti ħadthom influwenzat l-imġiba ta clang 518 00:32:01,910 --> 00:32:05,750 għaliex ċertament l-persuni li kiteb clang kellhom ebda idea li ftit qodma inti 519 00:32:05,750 --> 00:32:08,890 kienet se jikteb programm imsejjaħ snin mario.c aktar tard. 520 00:32:08,890 --> 00:32:13,150 Allura inti kellhom b'xi mod jinfluwenzaw l-imġieba ta 'dak il-programm, 521 00:32:13,150 --> 00:32:18,140 u li clang programm kellhom jiġu miktuba b'tali mod li tista 'taċċetta l-input mill inti 522 00:32:18,140 --> 00:32:23,480 biż-żieda ta 'kliem fuq il-pront quddiem il-hits utent Ikteb. 523 00:32:23,480 --> 00:32:27,860 >> Għalhekk jirriżulta li għal xi żmien konna qed tiddikjara kważi kollha tal-programmi tagħna 524 00:32:27,860 --> 00:32:32,840 biex tibda bħal dan - prinċipali int (vojt) - u allura konna marret quddiem 525 00:32:32,840 --> 00:32:35,110 u bdew kitba kodiċi tagħna. 526 00:32:35,110 --> 00:32:37,910 U aħna jista 'jkollha xi sharp tinkludi fil-quċċata tal-fajl, 527 00:32:37,910 --> 00:32:40,660 iżda kważi kollha tal-programmi tagħna s'issa bdew ma 'dan 528 00:32:40,660 --> 00:32:44,200 anki jekk inti jista 'jkollok dehru fit-taqsima, fil-kotba, ir-referenzi fuq l-internet 529 00:32:44,200 --> 00:32:46,570 li dan ma fil-fatt għandhom ikunu bla effett. 530 00:32:46,570 --> 00:32:55,820 Forma oħra leġittimi biex dan jieħu tkun int argc u mbagħad string ARGV []. 531 00:32:55,820 --> 00:32:57,500 Allura issa dak li huwa dan jimplika? 532 00:32:57,500 --> 00:33:01,320 Jirriżulta li argc, li hija konvenzjoni tal-bniedem - inti tista 'sejħa dan foo, 533 00:33:01,320 --> 00:33:03,710 iżda se jkun biss ħafna inqas ċar lill-qarrejja - 534 00:33:03,710 --> 00:33:09,330 argc biss huwa argument li l-funzjoni msejħa ewlenija li tirrappreżenta dak li? 535 00:33:09,330 --> 00:33:12,450 Xi jfisser argc joqgħod għal għal dawk familjari? 536 00:33:12,450 --> 00:33:14,980 >> [Rispons istudent inaudible] >> Yeah, in-numru ta 'argumenti jew għadd argument. 537 00:33:14,980 --> 00:33:16,510 Huwa sempliċi bħal dik. 538 00:33:16,510 --> 00:33:19,160 Kemm argumenti kienu għaddew dan il-programm? 539 00:33:19,160 --> 00:33:20,630 X'ifisser dan? 540 00:33:20,630 --> 00:33:27,090 Jekk fuq il-linja tal-kmand Għandi run xi ħaġa bħal din - clang mario.c-- 541 00:33:27,090 --> 00:33:35,440 argc meta I hit Ikteb se tieħu fuq il-valur ta ', xi ftit konfuż, 2. 542 00:33:35,440 --> 00:33:40,150 Għalhekk jirriżulta li argc huwa għadd argument, 543 00:33:40,150 --> 00:33:46,280 iżda għal raġunijiet storiċi, l-isem tal-programm innifsu huwa inkluż f'dik għadd. 544 00:33:46,280 --> 00:33:51,950 Allura argc huwa 2 meta I kiteb clang mario.c. 545 00:33:51,950 --> 00:33:54,290 X'jagħmel ARGV fiha? 546 00:33:54,290 --> 00:33:57,020 L-ewwelnett, ARGV qisu string iżda mhux pjuttost 547 00:33:57,020 --> 00:33:59,310 għax kif tal-Erbgħa li għadda u l-aktar tal-lum, 548 00:33:59,310 --> 00:34:02,890 dawn parentesi kwadri jindika liema? Li firxa. 549 00:34:02,890 --> 00:34:07,110 M'hemm l-ebda numru fil-firxa, u li għandu jagħmel sens intuwittivament 550 00:34:07,110 --> 00:34:10,790 minħabba li l-persuni li kiteb snin ilu clang żgur kellhom ebda idea 551 00:34:10,790 --> 00:34:16,300 kif ħafna nies kliem bħal minna tip fil-prompt qabel laqtu Ikteb. 552 00:34:16,300 --> 00:34:22,280 >> Allura f'dan il-każ hawnhekk huma jkunu dikjarati l-funzjoni prinċipali bħala teħid firxa ta 'argumenti, 553 00:34:22,280 --> 00:34:24,590 0 jew aktar argumenti. 554 00:34:24,590 --> 00:34:26,460 Huma ma jafux bil-quddiem kemm hemm, 555 00:34:26,460 --> 00:34:29,690 b'hekk m'hemm l-ebda deliberatament ġewwa numru ta 'dawn parentesi kwadri. 556 00:34:29,690 --> 00:34:32,750 Imma l-fatt li l-parentesi kwadri huma hemm javżak-kompjuter, 557 00:34:32,750 --> 00:34:34,639 jistennew firxa. 558 00:34:34,639 --> 00:34:37,489 ARGV huwa biss notazzjoni qosor għal vector argument. 559 00:34:37,489 --> 00:34:39,889 A vector huwa mod fancy ta 'tgħid array, 560 00:34:39,889 --> 00:34:42,980 u firxa huwa mod fancy ta 'tgħid' lista jew il-ġbir. 561 00:34:42,980 --> 00:34:47,360 Allura dan ifisser biss li jekk tikteb ewlenin bħal dan 562 00:34:47,360 --> 00:34:51,100 minflok bħal kif aħna kont qed tagħmel dan għall-aħħar ftit ġimgħat, 563 00:34:51,100 --> 00:34:54,699 programm tiegħek issa għandha l-poter li jaċċettaw argumenti kmand tal-linja 564 00:34:54,699 --> 00:34:58,520 b'tali mod li m'għadx għandek tikteb mario u mbagħad hit Ikteb, 565 00:34:58,520 --> 00:35:01,610 imbagħad it-tip fil-numru għal kemm blokki għoli trid li l-piramida li jkun, 566 00:35:01,610 --> 00:35:03,100 imbagħad hit Ikteb ġdid. 567 00:35:03,100 --> 00:35:07,720 Aħna ma anki ħtieġa li jużaw GetString jibqgħalu jew GetInt jew GetFloat għal dik il-kwistjoni. 568 00:35:07,720 --> 00:35:12,370 Nistgħu biss nistennew li l-utent tat-tip dawn il-kliem fil-pront innifsu 569 00:35:12,370 --> 00:35:16,850 bħad-awturi ta 'clang ddeċidiet li tkun ta' programm verament annoying 570 00:35:16,850 --> 00:35:20,550 jekk biex jikkompilaw kodiċi tiegħek inti l-ewwel clang ittajpjat, hit Ikteb, 571 00:35:20,550 --> 00:35:24,090 allura aħna qal lill-utent, jekk jogħġbok tip l-isem tal-fajl inti tixtieq li jikkompilaw, 572 00:35:24,090 --> 00:35:26,920 allura aħna tip fil mario.c u hit Ikteb. 573 00:35:26,920 --> 00:35:29,850 Imma dak li eżattament dak li aħna kont qed tagħmel lill-utenti tagħna l-koppja passat ta 'ġimgħat. 574 00:35:29,850 --> 00:35:33,550 Aħna nużaw GetString u aħna stenna sakemm il-programm qed taħdem biex twassalhom għall-input. 575 00:35:33,550 --> 00:35:36,710 Dan m'għadux jeħtieġ li jkun il-każ. 576 00:35:36,710 --> 00:35:41,160 >> Allura f'dan l-eżempju hawn, issa għandna string ARGV, 577 00:35:41,160 --> 00:35:43,390 u dan ukoll huwa oversimplification, 578 00:35:43,390 --> 00:35:45,610 roti ta 'taħriġ li se malajr ħafna come off. 579 00:35:45,610 --> 00:35:50,860 Dan huwa l-mod aktar xieraq ta 'kitba din id-dikjarazzjoni alternattiva ta prinċipali 580 00:35:50,860 --> 00:35:54,740 għaliex jirriżulta li dak li aħna jżomm ssejjaħ string fil-fatt għandha stilla, 581 00:35:54,740 --> 00:35:58,440 b'asterisk, fid-definizzjoni attwali tagħha, iżda dan biss jistenna ikkumplikat, 582 00:35:58,440 --> 00:36:02,600 huwa konfuża għall-ewwel, hekk aħna jissimplifikaw bi ftit ħolqien ta 'sinonimu ta' tipi 583 00:36:02,600 --> 00:36:09,340 fil-librerija CS50 li l-mapep * char għal din is-sekwenza kelma aktar faċli għall-utent. 584 00:36:09,340 --> 00:36:13,180 >> Mela ejja fil-fatt jipprovaw dan imbagħad. Let me imorru quddiem u tiftaħ gedit here. 585 00:36:13,180 --> 00:36:17,010 Let me imorru quddiem u tiftaħ ARGV ta '1. 586 00:36:17,010 --> 00:36:21,620 Dan il-programm jidher li prints l-argumenti, iżda wkoll f'termini Ingliż, 587 00:36:21,620 --> 00:36:26,290 billi tħares lejn dan il-kodiċi, dan xi jagħmlu aktar speċifiku? 588 00:36:26,290 --> 00:36:35,910 Jekk I tip fil-kmand a.out foo bar, liema gets stampati tieqa iswed u abjad tiegħi? 589 00:36:35,910 --> 00:36:41,260 A.out foo bar, Ikteb. 590 00:36:43,120 --> 00:36:48,300 Jimxi 'l quddiem. Yeah. >> [Rispons istudent inaudible] 591 00:36:48,300 --> 00:36:52,730 Tajba. Allura a.out, linja ġdida, foo, linja ġdida, bar, linja ġdida. 592 00:36:52,730 --> 00:36:54,980 Għaliex dan? Aħna jista 'ċertament jikkonfermaw fi ftit mument. 593 00:36:54,980 --> 00:36:56,940 Dan huwa tip ta 'linja fluffy tal-kodiċi. 594 00:36:56,940 --> 00:36:59,560  Hija biss prints linja ġdida biss biex jagħmlu l-affarijiet prettier fuq l-iskrin. 595 00:36:59,560 --> 00:37:03,730 Din hija linja li l-iterazzjoni minn 0 sa l argc, 596 00:37:03,730 --> 00:37:07,210 u dan huwa inkrementazzjoni fuq kull iterazzjoni + +. 597 00:37:07,210 --> 00:37:12,270 Allura dan huwa issa qal jistampaw string, kif implikat minn din% s. 598 00:37:12,270 --> 00:37:16,460 ARGV [i] hija pjuttost l-istess idea mill-eżempju preċedenti. 599 00:37:16,460 --> 00:37:19,580 Aħna użati li jsejħu l-i varjabbli; issa huwa msejjaħ, b'mod arbitrarju, ARGV. 600 00:37:19,580 --> 00:37:24,270 Dan ifisser jistampaw l-argument ith li kien ittajpjat fil-linja tal-kmand, 601 00:37:24,270 --> 00:37:28,690 u mbagħad wara dan ħaġa sħiħa isir, biss għal miżura tajba jistampaw linja oħra ġdida. 602 00:37:28,690 --> 00:37:31,600 >> Mela ejja ara dan. Let me tiftaħ il-tieqa terminal. 603 00:37:31,600 --> 00:37:37,470 Let me tiġbor ARGV ta '1, u issa let me run ARGV ta' 1, Ikteb. Hmm. Okay. 604 00:37:37,470 --> 00:37:40,850 Ejja run bar foo. Interessanti. Baz. 605 00:37:40,850 --> 00:37:42,640 U jekk inti stajt qatt staqsiet għaliex jien tip dan, 606 00:37:42,640 --> 00:37:45,010 din hija biss wkoll konvenzjoni stupid xjenza tal-kompjuter. 607 00:37:45,010 --> 00:37:48,050 Id-dinja ta 'spiss teħtieġ biss placeholders verbali għall-kliem. 608 00:37:48,050 --> 00:37:50,090 Mela jekk inti tixtieq li nitkellmu dwar xi spag ġeneriku, 609 00:37:50,090 --> 00:37:53,250 xjenzjati tal-kompjuter biss it-tendenza li jgħidu foo meta jkollhom bżonn kelma każwali, 610 00:37:53,250 --> 00:37:55,530 allura jgħidu bar jekk ikollhom bżonn kelma każwali tieni, 611 00:37:55,530 --> 00:37:59,100 allura jgħidu baz jekk ikollhom bżonn kelma terz, allura jgħidu QUX jekk ikollhom bżonn kelma 4, 612 00:37:59,100 --> 00:38:01,520 u allura hemm enormi reliġjużi dibattitu online dwar dak wasal wara QUX, 613 00:38:01,520 --> 00:38:04,940 sabiex inti tista 'Google li ċifra barra dak l-kelma arbitrarja oħra għandu jkun. 614 00:38:04,940 --> 00:38:07,480 Iżda dawn ma jkollhom ebda tifsira tkun xi tkun, 615 00:38:07,480 --> 00:38:10,100 għalkemm foo bar, jekk inti Google dan, dan ma għandhom tifsira, 616 00:38:10,100 --> 00:38:12,780 li huwa parti mill-etimoloġija hawn. 617 00:38:12,780 --> 00:38:17,550 >> Allura dan kollu qed tagħmel allura huwa l-istampar 1 ta 'dawn kordi għal kull linja. 618 00:38:17,550 --> 00:38:19,900 Mela jekk jien minflok, għalkemm, riedu li jiksbu ftit fancier, 619 00:38:19,900 --> 00:38:22,550 jissoponi li jien ma riedx li jistampaw kull sekwenza kull linja; 620 00:38:22,550 --> 00:38:26,220 Jien ridt li jistampaw kull karattru minn kull sekwenza għal kull linja. 621 00:38:26,220 --> 00:38:28,550 Kif jista I minflok tagħmel dan? 622 00:38:28,550 --> 00:38:33,720 What do I bżonn għall-bidla dwar dan il-programm jekk irrid li jistampaw mhux kull kelma 623 00:38:33,720 --> 00:38:37,290 imma nixtieq li jistampaw kull ittra kelma permezz ta 'ittra permezz ta' ittra, 624 00:38:37,290 --> 00:38:40,590 allura l-ittra kelma li jmiss permezz ta 'ittra permezz ta' ittra? 625 00:38:40,590 --> 00:38:43,650 Kif nistgħu jikkombinaw dawn l-ideat s'issa? Yeah. 626 00:38:43,650 --> 00:38:47,390 [Student]% c. >> Kull dritt. Allura aħna x'imkien bżonn c%. 627 00:38:47,390 --> 00:38:50,680 Tajba, minħabba I ma jridux li jistampaw kordi sħiħ, nixtieq li jistampaw karattri. X'aktar? 628 00:38:50,680 --> 00:38:54,290 >> [Inaudible student rispons] >> interessanti. 629 00:38:54,290 --> 00:38:56,860 Allura għandna bżonn it-tip ta 'dimensjoni 2 hawn issa 630 00:38:56,860 --> 00:39:02,300 minħabba jaħsbu ARGV bħala firxa, iżda huwa firxa ta 'spag. 631 00:39:02,300 --> 00:39:07,170 Iżda sa, bħal, 15-il minuta ilu, x'hemm string? Huwa ta 'firxa ta' karattri. 632 00:39:07,170 --> 00:39:12,320 Allura verament, ARGV huwa firxa ta 'firxa ta' karattri, 633 00:39:12,320 --> 00:39:14,870 firxa ta 'arrays ta' karattri. 634 00:39:14,870 --> 00:39:19,170 Għalhekk jirriżulta li nistgħu nużaw notazzjonijiet parentesi biss aktar kwadru. Mela ejja jagħmlu dan. 635 00:39:19,170 --> 00:39:23,650 Fil-quċċata ta 'din loop fuq il-linja 19, jien ser jtenni mill-i sa argc, 636 00:39:23,650 --> 00:39:25,760 iżda mbagħad jien ser tagħmel dan: 637 00:39:25,760 --> 00:39:27,580 għall - I ma jistgħux jużaw i issa. 638 00:39:27,580 --> 00:39:30,300 I bżonn ieħor varjabbli għaliex nixtieq li jtenni matul l-kliem 639 00:39:30,300 --> 00:39:32,640 iżda mbagħad wkoll fuq l-ittri fil-kliem 640 00:39:32,640 --> 00:39:37,280 so I tip ta jkollhom assi vertikali u ma 'fus orizzontali, tip ta' kunċettwalment. 641 00:39:37,280 --> 00:39:43,930 Allura j int gets 0, imbagħad I trid tagħmel j sakemm j huwa inqas minn - u jien ser jitnaddaf dan up fi ftit. 642 00:39:43,930 --> 00:39:48,410 Kif nista jtenni fuq l-ittri string? Għamilna dan mument ilu. 643 00:39:48,410 --> 00:39:54,670 Strlen ta ARGV [i]. Tajba. 644 00:39:54,670 --> 00:39:57,860 U għal darb'oħra, jien jagħmlu ineffiċjenza ftit hawn billi ma joħloq n jew kwalunkwe, 645 00:39:57,860 --> 00:39:59,610 iżda aħna ser terga 'lura għal dan. 646 00:39:59,610 --> 00:40:03,270 >> Allura issa j + +. Issa għandi inċiż ulterjuri hawnhekk. 647 00:40:03,270 --> 00:40:06,950 What do I issa tixtieq li jistampaw fuq kull iterazzjoni? 648 00:40:06,950 --> 00:40:09,720 [Rispons istudent inaudible] >> Hekk [i] se tagħti me-kelma. 649 00:40:09,720 --> 00:40:12,910 [I] [j], 'tip simili għal matriċi. 650 00:40:12,910 --> 00:40:14,810 Dawk tal inti ma matematika 'y sfondi, 651 00:40:14,810 --> 00:40:19,340 aħna qed tip ta 'indiċjar anke aktar fil-fond din matriċi jew din firxa ta' arrays, 652 00:40:19,340 --> 00:40:21,380 din l-istruttura 2-dimensjonali. 653 00:40:21,380 --> 00:40:25,070 Allura issa ejja ara dak li jiġri hawn. Let me tiftaħ tieqa tiegħi terminali akbar. 654 00:40:25,070 --> 00:40:28,170 Let me terġa 'tagħmel ta ARGV ta' 1. 655 00:40:28,170 --> 00:40:33,090 U stajt invitat up hawn, li hija lezzjoni tajba għaliex jien wisq nesa li jagħmlu dan. 656 00:40:33,090 --> 00:40:37,150 Impliċitament li tiddikjara "strlen" librerija C funzjoni ma iffirmati tip "- 657 00:40:37,150 --> 00:40:40,360 I lanqas biss jafu x'inhi l-bqija ta 'dan, imma rajt dan qabel, 658 00:40:40,360 --> 00:40:42,000 b'mod impliċitu li tiddikjara. 659 00:40:42,000 --> 00:40:45,540 Kull meta naraw dan l-iżball, dak ma dan normalment ifisser? 660 00:40:45,540 --> 00:40:48,520 >> [Inaudible student rispons] >> I nesa librerija top up. Imma stenna minuta. 661 00:40:48,520 --> 00:40:51,690 Normalment Stajt invitat up minħabba I nesa l-librerija CS50, iżda li hemmhekk. 662 00:40:51,690 --> 00:40:54,480 Normalment Stajt invitat up għaliex stajt minsija standard I / O. 663 00:40:54,480 --> 00:40:57,960 U franchement, jien ma anki bżonn din. Aħna ma jużawx GetString illum. 664 00:40:57,960 --> 00:40:59,900 Allura dak li jien nieqsa? 665 00:40:59,900 --> 00:41:04,860 Hemm ieħor librerija li issa għandna bżonn l-użu string.h kultant imsejħa, 666 00:41:04,860 --> 00:41:08,980 u dan huwa biss pass ieħor librerija li għandu funzjonijiet aktar li mhumiex fl-istandard I / O. 667 00:41:08,980 --> 00:41:11,640 >> Mela ejja jmorru lura għall-tieqa tiegħi terminal kbir. 668 00:41:11,640 --> 00:41:16,670 Okay. Issa, kkritikat dan, I raden I kienet żbaljata. I kienet qed tuża l-librerija CS50. 669 00:41:16,670 --> 00:41:18,460 Allura nistgħu jiffissaw dan f'wieħed minn 2 modi. 670 00:41:18,460 --> 00:41:21,510 Nistgħu nkunu l-roti tat-taħriġ off dritt issa u biss tagħmel dan, 671 00:41:21,510 --> 00:41:26,600 jew tip ejja ta 'jżomm dik is-simplifikazzjoni biss għal issa, paste dan lura fl- 672 00:41:26,600 --> 00:41:30,180 issolvi din il-problema, u issa mur lura għall-tieqa terminal. 673 00:41:30,180 --> 00:41:33,080 Allura biex tkun ċara, fil-librerija CS50 mhux biss il-funzjonijiet, 674 00:41:33,080 --> 00:41:36,920 huwa wkoll il-sekwenza keyword, u huwa għalhekk li dan l-iżball biss ġara. 675 00:41:36,920 --> 00:41:43,010 >> Allura here we go. I fiss kemm mill-kwistjonijiet librerija. Ikteb. Tajba. 676 00:41:43,010 --> 00:41:49,250 ARGV ta '1, foo bar, Ikteb. Eċċellenti. 677 00:41:49,250 --> 00:41:52,830 Allura issa għandna kull ittra ta 'kull kelma stampata 1 għal kull linja, 678 00:41:52,830 --> 00:41:55,290 li ma jagħmilx għal programm interessanti ħafna, 679 00:41:55,290 --> 00:41:59,350 imma avviż issa għandna l-kapaċità ta 'mhux biss iterazzjoni fuq kliem 680 00:41:59,350 --> 00:42:04,090 iżda wkoll fuq l-ittri individwali kliem, li ħsejjes awfully familjari 681 00:42:04,090 --> 00:42:10,330 li anki l-aktar sempliċi ta 'applikazzjonijiet bħal ittri scrambling fi string bħal dan. 682 00:42:10,330 --> 00:42:12,410 Ejja jimxi 'l quddiem u tieħu 5-minuta break tagħna hawn. 683 00:42:12,410 --> 00:42:14,410 U meta niġu lura, aħna ser jibda jitkellem dwar l-effiċjenza 684 00:42:14,410 --> 00:42:17,670 li magħhom nistgħu nagħmlu dawn l-affarijiet aħjar. 685 00:42:19,370 --> 00:42:21,900 >> Kull dritt. Aħna lura. 686 00:42:21,900 --> 00:42:26,970 Grazzi għall wieħed mill-TFS tagħna li jilgħab ħafna Bananagrams, 687 00:42:26,970 --> 00:42:30,000 għandna attwalment ikollhom mazz sħiħ ta 'Chars magħna hawn illum 688 00:42:30,000 --> 00:42:32,520 fiżikament incarnated ma 'dawn il-biċċiet tal-plastik ftit, 689 00:42:32,520 --> 00:42:36,910 u let me tipproponi li din lavanja abjad vojt hawn tirrappreżenta l-RAM fil-kompjuter tiegħi - 690 00:42:36,910 --> 00:42:39,790 , laptop desktop, ikun x'ikun - u hemm qisu ħafna ta 'dan 691 00:42:39,790 --> 00:42:44,090 għaliex jekk nibdew tqattiegħ up dan RAM fis żgħir byte ta 'daqs biċċiet, 692 00:42:44,090 --> 00:42:48,970 ejja ngħidu li b'mod arbitrarju xi ħaġa li d-daqs u l blurry jirrappreżenta - 693 00:42:48,970 --> 00:42:52,430 hemm immorru, u ejja zoom out ftit hawn - 694 00:42:52,430 --> 00:42:56,120 ejja ngħidu xi ħaġa li d-daqs jirrappreżenta f'byte wieħed. 695 00:42:56,120 --> 00:43:00,400 Allura nistgħu tabilħaqq joqogħdu mazz sħiħ ta 'bytes jew karattri ġewwa ta' dan il-memorja, 696 00:43:00,400 --> 00:43:02,860 kif issuġġerit mill-daqs relattiv hawn. 697 00:43:02,860 --> 00:43:06,780 >> Allura jissoponi issa li l-għan huwa li jiġu allokati memorja għal string. 698 00:43:06,780 --> 00:43:08,680 Kif jaħdem dan attwalment jaħdmu? 699 00:43:08,680 --> 00:43:11,380 Fil-programmi aħna kont qed miktub, konna normalment qed tuża GetString, 700 00:43:11,380 --> 00:43:16,300 iżda issa, b'mod ċar, hemm dan il-kanal l-oħra li permezz tagħhom nistgħu nibdew input utent fil ARGV 701 00:43:16,300 --> 00:43:18,190 permezz argumenti kmand tal-linja. 702 00:43:18,190 --> 00:43:20,580 Imma x'inhu verament għaddej minn taħt il-barnuża? 703 00:43:20,580 --> 00:43:24,920 Jirriżulta jekk nagħmlu sejħa - ejja iscroll lura lill GetString - il-GetString funzjoni 704 00:43:24,920 --> 00:43:28,190 fil-librerija CS50, l-utent huwa wassal għal string, 705 00:43:28,190 --> 00:43:30,780 it-tipi utent b'xi kelma - ejja sejħa hija HELLO. 706 00:43:30,780 --> 00:43:35,410 U aħna kont qed tgħid għall-aħħar ftit ġimgħat li l-valur tar-ritorn ta 'GetString 707 00:43:35,410 --> 00:43:37,750 huwa fil-fatt string, bħall-kelma HELLO. 708 00:43:37,750 --> 00:43:39,660 >> Imma dak li hu verament GetString tagħmel? 709 00:43:39,660 --> 00:43:45,230 Peress li l-tipi utent HELLO, Daħħal, GetString huwa li jidhru fl- 710 00:43:45,230 --> 00:43:47,930 okay, kemm karattri huwa dan? Dan huwa H-E-L-L-O. 711 00:43:47,930 --> 00:43:52,500 Għalhekk jeħtieġ li jiġu allokati, jeħtieġ li titlob lill-sistema operattiva - Linux f'dan il-każ - 712 00:43:52,500 --> 00:43:55,410 għal mill-inqas 5 bytes li jaħżen HELLO. 713 00:43:55,410 --> 00:43:59,570 U dak li mbagħad tipproċedi biex tagħmel darba jiġrilha lura dawk bytes 5 mis-sistema operattiva 714 00:43:59,570 --> 00:44:04,120 huwa li jistabbilixxu HELLO lura lura lura lura. 715 00:44:04,120 --> 00:44:11,070 U hekk dak li verament lura minn GetString hija blokki ta 'data li tidher bħal dan. 716 00:44:11,070 --> 00:44:16,850 Iżda dan huwa daqsxejn ineżatta peress li jirriżulta li mhuwiex sempliċi 717 00:44:16,850 --> 00:44:20,310 biss bħala ħażna HELLO fil-memorja tal-kompjuter 718 00:44:20,310 --> 00:44:24,140 għaliex jissoponi dak il-programm tiegħi li jien bil-miktub fis-C mbagħad jitlob GetString mill-ġdid, 719 00:44:24,140 --> 00:44:28,210 u l-kelma li jmiss l-utent tipi fil huwa BYE, BYE. 720 00:44:28,210 --> 00:44:31,300 Well, I-ħtieġa li jitwaħħal li BYE kelma x'imkien fil-memorja. 721 00:44:31,300 --> 00:44:33,790 I cannot clobber HELLO. 722 00:44:33,790 --> 00:44:37,320 Per eżempju, jien ma jridu li l-kompjuter għal ftit tibda kitba fuq oħra bħal din 723 00:44:37,320 --> 00:44:41,400 il-kelma oriġinali minħabba I xorta tista 'tuża l-kelma HELLO fil-varjabbli 724 00:44:41,400 --> 00:44:43,070 x'imkien ieħor fil-programm tiegħi. 725 00:44:43,070 --> 00:44:45,900 >> Allura B-Y-E għandu jispiċċa x'imkien ieħor fil-memorja. 726 00:44:45,900 --> 00:44:50,460 Iżda l-konvenzjoni tipikament hija li l-sekwenza li jmiss inti jallokaw 727 00:44:50,460 --> 00:44:54,940 probabbilment, iżda mhux dejjem, se jispiċċaw fil-post tal-memorja li jmiss disponibbli. 728 00:44:54,940 --> 00:44:57,370 U jekk I ma talab lill-sistema operattiva għal kwalunkwe memorja 729 00:44:57,370 --> 00:45:01,380 mill-aħħar darba I imsejħa GetString, odds huma l BYE kelma 730 00:45:01,380 --> 00:45:05,790 se jispiċċaw dritt wara l-kelma HELLO fil-memorja. 731 00:45:05,790 --> 00:45:10,550 Iżda f'dan il-punt tista 'forsi tara fejn xi problema potenzjali tinqala. 732 00:45:10,550 --> 00:45:13,310 Minħabba li l-biċċiet li jmiss tal-memorja, il-bytes li jmiss li kienu biss ħielsa - 733 00:45:13,310 --> 00:45:18,230 nadif lavanja abjad - fil-memorja tal-kompjuter kienu dritt li jmiss HELLO, 734 00:45:18,230 --> 00:45:23,670 iħoss bħall-sekwenza ewwel I talab għal jistgħu f'daqqa issa bidla 735 00:45:23,670 --> 00:45:26,410 għaliex stajt essenzjalment nbidel għal HELLOBYE 736 00:45:26,410 --> 00:45:31,310 minflok b'xi demarcing-bidu tal BYE u t-tmiem ta 'HELLO. 737 00:45:31,310 --> 00:45:33,920 >> Għalhekk jirriżulta li dak li verament għaddejjin taħt il-barnuża, 738 00:45:33,920 --> 00:45:37,570 li inti jista 'jkollok glimpsed fil referenzi online jew taqsima jew kotba 739 00:45:37,570 --> 00:45:41,780 jew xejn għadha biss hija li hemm attwalment demarkazzjoni intenzjonat 740 00:45:41,780 --> 00:45:45,890 bejn il-kliem fil-memorja tal-kompjuter. 741 00:45:45,890 --> 00:45:52,480 U fil-fatt, f'dan il-każ hawnhekk, aktar milli biss jitqiegħed BYE dritt li jmiss HELLO, 742 00:45:52,480 --> 00:45:58,610 minflok, il-kompjuter tpoġġi karattru speċjali, il-karattru null speċjali, biex ngħidu hekk, 743 00:45:58,610 --> 00:46:03,050 li hija rappreżentata bil-markatur mal backslash 0. 744 00:46:03,050 --> 00:46:06,700 Allura storja twila fil-qosor, tfakkar li l-karattri huma rappreżentati fil ASCII. 745 00:46:06,700 --> 00:46:09,680 ASCII huwa biss immappjar bejn in-numri u ittri, 746 00:46:09,680 --> 00:46:13,870 u l-aktar ta 'dawk l-ittri jibdew madwar 65 għall-kapital A, 747 00:46:13,870 --> 00:46:19,780 iżda jirriżulta li inti tista 'ċertament jirrappreżenta n-numru 0 bħala numru sħiħ jew fil-binarju, 748 00:46:19,780 --> 00:46:22,690 u jirriżulta fid-dinja iddeċieda twil, twil ilu, "Inti taf liema?" 749 00:46:22,690 --> 00:46:27,550 "Ejja numru riżerva 0 meta ma tirrappreżenta xi karattri fuq it-tastiera - 750 00:46:27,550 --> 00:46:30,810 "L-ebda ittri, numri, l-ebda l-ebda punteġġjatura. 0 huwa speċjali." 751 00:46:30,810 --> 00:46:35,830 "Huwa ser tkun il-karattru null speċjali, u aħna qed tmur biex tikteb bħala \ 0." 752 00:46:35,830 --> 00:46:41,170 Id-differenza hija jekk aħna biss kiteb 0, 0 huwa karattru. 753 00:46:41,170 --> 00:46:45,700 Ifakkar li hemm kodiċijiet ASCII għall 0, għal 1, għal 2, għat-3 754 00:46:45,700 --> 00:46:50,570 minħabba li l-karattru 0 hija differenti mill-0 numru. 755 00:46:50,570 --> 00:46:54,270 U inti tista 'tara li jekk inti tħares lura minn ġimgħa 1 meta aħna ewwel tkellem dwar ASCII, 756 00:46:54,270 --> 00:46:59,130 0 u 1 u 2 u 3 it-triq kollha sa 9 kellhom kodiċijiet ASCII tagħhom stess. 757 00:46:59,130 --> 00:47:02,300 Huma mhumiex, inzerta, 0 sa 9. Huma qed differenti ħafna. 758 00:47:02,300 --> 00:47:08,770 Allura 0 sempliċiment ifisser "I am speċjali," u l-\ 0 mezzi, litteralment, "jien ma l-karattru 0." 759 00:47:08,770 --> 00:47:11,360 "Jien dan il-valur speċjali, il-karattru null." 760 00:47:11,360 --> 00:47:16,930 So I attwalment bżonn waħda oħra minn dawn peress li jien ma tistax tagħmel l-istess żball darbtejn. 761 00:47:16,930 --> 00:47:21,550 >> Allura wara l BYE kelma aħna qed wkoll se bżonn ieħor wieħed minn dawn il-karattri nulla. 762 00:47:21,550 --> 00:47:27,090 Let me grab pinna tiegħi hawn u let me malajr tiġbed ieħor \ 0 763 00:47:27,090 --> 00:47:30,480 b'tali mod li wara I talbu lill-sistema operattiva għal 2 kordi 764 00:47:30,480 --> 00:47:33,270 permezz GetString segwita minn sejħa għal GetString, 765 00:47:33,270 --> 00:47:35,640 dan huwa dak attwalment fil-memorja. 766 00:47:35,640 --> 00:47:39,900 Allura meta nasal lura string, jien verament jkollna lura li, 767 00:47:39,900 --> 00:47:43,450 u meta nasal l-sekwenza li jmiss, jien verament jkollna lura dak. 768 00:47:43,450 --> 00:47:47,910 Allura dan iqajjem il-kwistjoni, strlen, l-ewwel nett, liema għandu jirritorna? 769 00:47:47,910 --> 00:47:54,650 Meta I call strlen fuq il-i string u s kien il-kelma HELLO li l-utent ittajpjat fil, 770 00:47:54,650 --> 00:47:57,800 dak li aħna ma ovvjament ngħidu t-tul ta 'HELLO kien ftit minuti ilu? 771 00:47:57,800 --> 00:48:01,290 Kien 5, id-dritt? H-E-L-L-O. U li tassew kif strlen xogħlijiet. 772 00:48:01,290 --> 00:48:05,670 Hija prospetti dak ta 'bniedem normali tistenna t-tul ta' sekwenza li jkun. 773 00:48:05,670 --> 00:48:11,030 Iżda fir-realtà, kemm hu kbir huwa l-firxa ta 'karattri li l-ħażna bonjour? 774 00:48:11,030 --> 00:48:12,770 Huwa fil-fatt 6. 775 00:48:12,770 --> 00:48:15,740 Allura strlen ma ssemmix dan il-fatt lilek. 776 00:48:15,740 --> 00:48:20,300 Iżda taħt il-barnuża tal-kompjuter huwa tabilħaqq jużaw 6 bytes li jaħżen kelma 5-ittra, 777 00:48:20,300 --> 00:48:22,380 u dan huwa minnu l-ebda kwistjoni kemm żmien il-kelma hija. 778 00:48:22,380 --> 00:48:26,470 Hemm dejjem se jkun karattru null speċjali li jispiċċaw fl-aħħar tas-sekwenza 779 00:48:26,470 --> 00:48:28,800 li demarc tul totali tagħha. 780 00:48:28,800 --> 00:48:33,430 >> Mela allura jekk inti issa l-persuna implimentazzjoni strlen 20, 30 sena ilu, 781 00:48:33,430 --> 00:48:35,520 kif taħseb li tmur dwar implimentazzjoni strlen stess? 782 00:48:35,520 --> 00:48:39,980 Aħna jieħdu għal mogħtija li jeżisti, bħad nieħdu għall mogħtija li printf teżisti, 783 00:48:39,980 --> 00:48:42,850 iżda jekk HELLO hija l-kelma in kwistjoni 784 00:48:42,850 --> 00:48:45,220 u dak li nkun fil-memorja hija xi ħaġa li tidher bħal dan, 785 00:48:45,220 --> 00:48:48,130 jekk kellek biex reimplement strlen għaliex inti kienu mitluba 786 00:48:48,130 --> 00:48:50,260 jew għaliex, franchement, inti ma taf strlen jeżistu - 787 00:48:50,260 --> 00:48:54,280 inti kellhom roll dan wieħed fuq tiegħek - kif tista 'inti jimplimentaw strlen 788 00:48:54,280 --> 00:48:57,760 meta mogħti xi ħaġa li tidher bħal dan? 789 00:48:57,760 --> 00:49:02,750 Issa li nafu string huwa firxa, nistgħu jtenni fuq kull wieħed mill-karattri individwali 790 00:49:02,750 --> 00:49:06,320 tuża xi ħaġa simili - Ejja jipprova jagħmel dan fuq il-fly. 791 00:49:06,320 --> 00:49:12,060 >> Let me jmorru fil-appliance. Let me toħloq fajl ġdid, strlen.c. 792 00:49:12,060 --> 00:49:19,260 Let me imorru quddiem issa u ma jinkludu stdio.h sabiex inkunu jkollhom aċċess għall printf. 793 00:49:19,260 --> 00:49:25,820 Let me do int prinċipali (vojt). Oh. I ser biss tagħmel dan fuq tiegħi stess għal issa imbagħad. [Chuckles] 794 00:49:25,820 --> 00:49:28,300 Grazzi. 795 00:49:28,300 --> 00:49:31,000 Dan huwa dak li qed nagħmel. Kull dritt. 796 00:49:31,000 --> 00:49:34,820 Allura qabel I daru fuq l-iskrin, I ittajpjat kollha ta 'dak. 797 00:49:34,820 --> 00:49:37,550 U issa dak li jien ser tagħmel hu dan li ġej: 798 00:49:37,550 --> 00:49:40,360 printf ("Give me a string:") 799 00:49:40,360 --> 00:49:42,700 Li jinsab biss l-istruzzjonijiet fluffy. 800 00:49:42,700 --> 00:49:45,700 Issa let me do string s = GetString. 801 00:49:45,700 --> 00:49:47,260 I diġà jeħtiġilhom li jagħmlu bidla issa. 802 00:49:47,260 --> 00:49:52,740 Jien jużaw il-librerija CS50 f'daqqa, so let me jimxi 'l quddiem u t-tip fil cs50.h. 803 00:49:52,740 --> 00:50:00,720 U issa ejja tagħmel dan: printf ("It-tul huwa:% d, strlen [i] - 804 00:50:00,720 --> 00:50:03,540 u jien ma isir s'issa. X'iktar għandi jżidu dan il-programm? 805 00:50:03,540 --> 00:50:05,740 >> [Student] string.h. >> String.h. 806 00:50:05,740 --> 00:50:10,800 Allura għal issa, aħna qed jużaw strlen, so ejja tagħmel żgur li l-kumpilatur jaf meta dan ikun, 807 00:50:10,800 --> 00:50:12,390 hekk sanità ftit check. 808 00:50:12,390 --> 00:50:16,400 Jien jkollna string fil-linja 8, u f'konformità 9 jien stampar tul tiegħu ma d%. 809 00:50:16,400 --> 00:50:19,400 Mela ejja imorru quddiem u tiftaħ dan up. 810 00:50:19,400 --> 00:50:23,380 Aħna jagħmlu strlen - jikkompila okay - 811 00:50:23,380 --> 00:50:30,120 strlen - let me zoom fi - Ikteb, H-E-L-L-O, Ikteb. It-tul huwa 5. 812 00:50:30,120 --> 00:50:32,730 >> Okay, hekk strlen jidher li jaħdem, iżda fid-dinja kien jaf li. 813 00:50:32,730 --> 00:50:37,310 Mela ejja issa jimplimentaw strlen ruħna kif ġej. 814 00:50:37,310 --> 00:50:39,490 Let me jieħdu din il-librerija bogħod. 815 00:50:39,490 --> 00:50:42,590 Aħna m'għadx għandhom aċċess għal string.h minħabba I lanqas biss jafu eżistiet. 816 00:50:42,590 --> 00:50:45,970 Iżda li okay minħabba I tista 'timplimenta strlen myself 817 00:50:45,970 --> 00:50:50,200 u li hija tieħu string imsejjaħ input, 818 00:50:50,200 --> 00:50:53,830 u issa għandi bżonn biex insemmu l-tul ta 'din is-sekwenza. 819 00:50:53,830 --> 00:50:55,880 Allura kif nista 'nagħmlu dan? 820 00:50:55,880 --> 00:51:00,190 X'jiġri jekk I do - ejja ara kif tagħmel dan - Xi trid tagħmel? 821 00:51:00,190 --> 00:51:04,130 >> [Rispons istudent inaudible] >> Okay. 822 00:51:04,130 --> 00:51:05,970 Allura nistgħu nagħmlu dan fil-mazz ta 'modi. Let me jippruvaw jieħdu dan l-approċċ. 823 00:51:05,970 --> 00:51:10,220 Ħalli nagħtikom nnifsi varjabbli i int, hekk i tibda fi 0. 824 00:51:10,220 --> 00:51:19,380 U ħalluni ngħid dan: filwaqt input [i] mhux ugwali għal dak? \ 0. 825 00:51:19,380 --> 00:51:23,480 Għalhekk jirriżulta, kif ma 'l-każ ma' l-Chars meta tikteb lilhom litteralment fi programm, 826 00:51:23,480 --> 00:51:25,940 inti għandek tuża kwotazzjonijiet uniku, mhux kwotazzjonijiet doppja. 827 00:51:25,940 --> 00:51:29,250 Mela jekk jien kienu bil-miktub l-ittra a, Jien kont nagħmel dan, l-ittra b, Jien kont nagħmel dan. 828 00:51:29,250 --> 00:51:33,440 Dan, b'kuntrast, ikun string, mhux karattru individwali. 829 00:51:33,440 --> 00:51:38,470 >> Allura nixtieq \ 0 litteralment. What do I trid tagħmel f'dan loop? 830 00:51:38,470 --> 00:51:42,650 Actually, I bżonn ieħor varjabbli, u għalhekk it-tul int gets 0. 831 00:51:42,650 --> 00:51:46,190 Anki jekk inti ma kinux ċert għaliex bdejna il-mod aħna ma, 832 00:51:46,190 --> 00:51:50,110 issa li aħna qed tmur f'din it-triq, dak li nixtieq li tagħmel fuq il-linja 9? 833 00:51:50,110 --> 00:51:55,820 tul + + u mbagħad stabbiliti hawn fuq il-linja 10, it-tul tar-ritorn. 834 00:51:55,820 --> 00:51:58,370 Allura kif qed strlen implimentat? 835 00:51:58,370 --> 00:52:00,550 Huwa fil-fatt implimentati probabbilment bħal dan. 836 00:52:00,550 --> 00:52:03,470 Forsi l-persuna uża għall loop, forsi tagħmel filwaqt loop - li jaf? 837 00:52:03,470 --> 00:52:05,940 Aħna tixtieq verament għandek tfittex taħt il-barnuża fil-kodiċi tas-sors attwali 838 00:52:05,940 --> 00:52:08,520 f'xi fajl imsejħa string.c probabbilment. 839 00:52:08,520 --> 00:52:10,480 >> Imma hawn ejja jaħsbu dwar dak li qed nagħmel. 840 00:52:10,480 --> 00:52:13,640 Jien tiddikjara varjabbli imsejjaħ i, dan ikun iffissat ugwali għal 0. 841 00:52:13,640 --> 00:52:17,520 Jien imbagħad jiddikjara ieħor tul varjabbli imsejħa, dan ikun iffissat ugwali għal 0. 842 00:52:17,520 --> 00:52:25,440 Imbagħad jien tgħid waqt li l-karattru ith fil-input ma tkunx daqs il-karattru null speċjali, \ 0, 843 00:52:25,440 --> 00:52:27,070 inkrement-tul. 844 00:52:27,070 --> 00:52:32,550 Iżda hekk kif il-karattru ith huwa dan il-karattru speċjali, dak li jiġri għall-linja? 845 00:52:32,550 --> 00:52:36,540 Hija short circuits. Huwa jwaqqaf, li jfisser li aħna mbagħad istantanjament lura tul. 846 00:52:36,540 --> 00:52:40,740 >> Mela jekk jien ma mess up, ejja imorru quddiem u jmorru lura għall-tieqa terminal tiegħi. 847 00:52:40,740 --> 00:52:43,550 Let me recompile. U jien ma screw up. 848 00:52:43,550 --> 00:52:46,320 Redeclaration inkompatibbli ta 'funzjoni librerija strlen. 849 00:52:46,320 --> 00:52:48,650 So I kienet tipprova tikseb wisq għaqlija għall-ġid tiegħi stess hawn. 850 00:52:48,650 --> 00:52:51,610 Il-kompilatur attwalment jaf li hemm funzjoni msejħa strlen 851 00:52:51,610 --> 00:52:55,290 anke jekk aħna ma inkludewx il-librerija. Li l-multa. Tkun xi tkun. 852 00:52:55,290 --> 00:52:58,230 Aħna biss se jikkooperaw imbagħad. Ejja semmi mill-ġdid dan it-tul. 853 00:52:58,230 --> 00:53:04,110 Let me jibdlu l-użu ta 'dan it-tul hawnhekk, u dan se jagħmel clang kuntenti. 854 00:53:04,110 --> 00:53:08,900 Bħala twarrib, minħabba li xi wħud minn dawn il-funzjonijiet huma tant darn komuni - 855 00:53:08,900 --> 00:53:12,390 strlen, Prinf - dawn għandhom attwalment tip ta 'status speċjali. 856 00:53:12,390 --> 00:53:15,310 U hekk clang biss jaf ftit xi ħaġa speċjali dwarhom. 857 00:53:15,310 --> 00:53:18,760 Li mhux dejjem il-każ ma 'funzjonijiet aktar, b'tali mod li għalhekk sirna għajjat ​​fil. 858 00:53:18,760 --> 00:53:21,350 >> Let me erġa 'pprova. B'xorti tajba, huwa ħadem dak iż-żmien. 859 00:53:21,350 --> 00:53:23,560 Allura issa let me run stess strlen tiegħi program. 860 00:53:23,560 --> 00:53:29,740 Agħti me string: H-E-L-L-O, Ikteb. U jien invitat up. 861 00:53:29,740 --> 00:53:34,750 Għaliex? >> [Rispons istudent inaudible] >> Eżattament. 862 00:53:34,750 --> 00:53:39,180 Allura għandi myself hawn loop infinita sbieħ ħafna li tħares 863 00:53:39,180 --> 00:53:42,270 għaliex anki jekk jien inkrementazzjoni tul fuq kull iterazzjoni, 864 00:53:42,270 --> 00:53:47,860 dak li jien b'mod ċar ma tagħmel? Jien ma inkrementazzjoni i. Okay. Easy jiffissaw. Iva? 865 00:53:47,860 --> 00:53:52,430 Okay. No Issa aħna se run afoul ta 'xi żball komuni ieħor fejn għandi bżonn parentesi. 866 00:53:52,430 --> 00:53:54,430 U franchement, dan il-kodiċi qed tibda tfittex ikrah, 867 00:53:54,430 --> 00:53:56,460 hekk aħna ser tieħu stab fil-tindif dan up fil-mument. 868 00:53:56,460 --> 00:53:58,810 Imma issa jien inkrementazzjoni kemm tul u li. 869 00:53:58,810 --> 00:54:02,630 Franchement, I diġà tara l-opportunità għal titjib hawnhekk, imma aħna ser terga 'lura għal dan. 870 00:54:02,630 --> 00:54:05,270 >> Allura issa ejja biss tagħmel żgur li aħna qed inqas isir progress. 871 00:54:05,270 --> 00:54:08,320 Dan ġara ftit tal inti, u jien traskurat li jsemmi dan bil-quddiem. 872 00:54:08,320 --> 00:54:12,420 Meta inti għandek l-sfortuna ta 'xenarju bħal dan, kif taħseb li jiffissaw dan 873 00:54:12,420 --> 00:54:15,130 qasir ta 'istartjar mill-ġdid l-appliance jew il-kompjuter tiegħek jew l-għeluq l-tieqa? 874 00:54:15,130 --> 00:54:16,860 Huwa fil-fatt faċli. 875 00:54:16,860 --> 00:54:21,680 Kontroll C se tibgħat dan ftit zunnarija simbolu Ċ, u li biss ttemm programmi l-aktar. 876 00:54:21,680 --> 00:54:25,990 Jekk ikollok xi linja infinita tassew ħżiena li l-istampar drabi Jittieħed infinitament ħafna, 877 00:54:25,990 --> 00:54:29,960 kultant inti jista 'jkollok hit Kontroll C elf darba biex jagħmluha attwalment tismagħha. 878 00:54:29,960 --> 00:54:33,910 Hekk biss jirrealizzaw issa għaliex jien ma istampar xejn, li kien pjuttost faċli. 879 00:54:33,910 --> 00:54:37,970 U teknikament, ladarba biżżejjed, imma jien nikseb paċenzja u I normalment hit li ħafna drabi. 880 00:54:37,970 --> 00:54:43,400 >> Allura strlen. Agħti me string: HELLO. Huwa ser jaħdem dan iż-żmien? 881 00:54:44,580 --> 00:54:47,490 Okay. Ieħor komuni żball. Have biex recompile. 882 00:54:47,490 --> 00:54:50,430 Dan kien intenzjonat, li wieħed. Kull dritt. 883 00:54:50,430 --> 00:54:54,260 Allura strlen, H-E-L-L-O, Ikteb. Eċċellenti. 884 00:54:54,260 --> 00:54:55,910 Allura issa għandna strlen sa 5. 885 00:54:55,910 --> 00:54:58,100 Allura aħna għandna litteralment reimplemented dik ir-rota. 886 00:54:58,100 --> 00:55:02,080 Allura issa ejja tnaddaf dan up għaliex dan ma jagħmlu me impressjonat 887 00:55:02,080 --> 00:55:04,080 mad-disinn tal-kodiċi tiegħi. 888 00:55:04,080 --> 00:55:07,200 X'nistgħu ċar jeliminaw f'dan il-programm biex tnaddaf dan up? 889 00:55:07,200 --> 00:55:11,840 [Rispons istudent inaudible] >> Yeah. Litteralment, aħna qed trattament i u t-tul identiku. 890 00:55:11,840 --> 00:55:16,440 Allura għaliex ma aħna biss jiksbu intelliġenti u jgħidu filwaqt tul? 891 00:55:16,440 --> 00:55:20,450 Pjuttost, ejja biss sejħa hija it-tul li tibda bil, initialize dan għal 0 892 00:55:20,450 --> 00:55:23,340 minħabba kontumaċja-sekwenza għandha l-ebda tul sakemm aħna ċifra barra dak li hu. 893 00:55:23,340 --> 00:55:26,160 >> Issa aħna nagħmlu dan, u issa dan huwa programm pretty eleganti. 894 00:55:26,160 --> 00:55:28,660 Wieħed varjabbli. I mnaddfa it up, issikkati it up. 895 00:55:28,660 --> 00:55:31,980 Allura issa ejja mmorru lura għall-tieqa terminal tiegħi. Ejja imorru quddiem u jitmexxa dan. 896 00:55:31,980 --> 00:55:35,670 Għamla strlen. Jidher tajjeb. Mexxi strlen darb'oħra, Ikteb. 897 00:55:35,670 --> 00:55:40,680 Agħti me string: HELLO, Ikteb. U jidher li tkun qed taħdem bħala 5. 898 00:55:40,680 --> 00:55:45,580 Issa, biex ikunu ċari, jekk I ma kinux bil-miktub, per eżempju, HELLO in 1 string 899 00:55:45,580 --> 00:55:48,840 u mbagħad BYE f'ieħor, nistgħu ċertament kliem multipli. 900 00:55:48,840 --> 00:55:53,150 Jekk l-espressjoni I attwalment riedu tip kienx HELLO, iżda, per eżempju, 901 00:55:53,150 --> 00:55:58,920 HELLO WORLD, avviż li dak li aħna ma jkollhomx hija din is-sitwazzjoni hawn, id-dritt? 902 00:55:58,920 --> 00:56:00,580 Dan jissuġġerixxi li dan huwa 2 kordi. 903 00:56:00,580 --> 00:56:06,060 Inti żgur tista 'jkollha karattri bar-ispazju, hekk jekk aħna fil-fatt ittajpjat fil-frażi itwal 904 00:56:06,060 --> 00:56:08,390 bħall WORLD HELLO, dak li aħna verament ikollhom fil-memorja 905 00:56:08,390 --> 00:56:12,730 jistenna ftit xi ħaġa bħal dik hemmhekk. 906 00:56:12,730 --> 00:56:18,910 >> Kull dritt. Kwalunkwe mistoqsijiet allura dwar ir-rappreżentazzjoni hawn 'spag? 907 00:56:18,910 --> 00:56:20,450 Nru? Kull dritt. 908 00:56:20,450 --> 00:56:25,130 So I qal qabel li ssejjaħ strlen ġdid u għal darb'oħra deliberatament bħal dik 909 00:56:25,130 --> 00:56:28,070 probabbilment ma tkunx l-idea aħjar għax int se tkun qed twettaq lott kollu ta 'xogħol 910 00:56:28,070 --> 00:56:30,280 ġdid u għal darb'oħra u għal darb'oħra. 911 00:56:30,280 --> 00:56:36,150 Tabilħaqq, liema tip ta 'xogħol huwa meħtieġ għall jidhru l-tul ta' spag, apparentement? 912 00:56:36,150 --> 00:56:40,720 Int għandek tibda fil-bidu u mbagħad tfittex, tfittex, tfittex, tfittex, tfittex 913 00:56:40,720 --> 00:56:44,930 sakemm inti finalment tara dan il-karattru speċjali, f'liema punt, ah, issa naf it-tul. 914 00:56:44,930 --> 00:56:48,040 Allura qabel meta kellna strlen qed jissejjaħ mill-ġdid u għal darb'oħra u għal darb'oħra, 915 00:56:48,040 --> 00:56:52,080 r-raġuni I propost li kien tip ta 'stupid għaliex mill-ġdid, li string qisu dik. 916 00:56:52,080 --> 00:56:54,880 Huwa mhux se jibdlu kull darba li inti jtenni permezz ta 'xi linja, 917 00:56:54,880 --> 00:56:56,890 hekk qed tagħmel ix-xogħol bla bżonn. 918 00:56:56,890 --> 00:57:00,620 Fl-istess ħin inti għandek tkun taf, bħala twarrib, li kompilaturi bħal clang dawn il-jiem 919 00:57:00,620 --> 00:57:02,530 ġew żviluppati matul bosta snin, 920 00:57:02,530 --> 00:57:05,690 u kittieba kompilatur, programmaturi, huma pjuttost intelliġenti. 921 00:57:05,690 --> 00:57:10,170 U hekk jirriżulta li kompilaturi clang u oħrajn jistgħu attwalment insemmu li, 922 00:57:10,170 --> 00:57:13,650 okay, iva, inti kiteb strlen fil-kundizzjoni tiegħek, 923 00:57:13,650 --> 00:57:17,520 li teknikament ifisser li aħna se sejħa hija għal darb'oħra u għal darb'oħra u għal darb'oħra. 924 00:57:17,520 --> 00:57:21,880 Iżda kompilaturi intelliġenti tista 'attwalment jottimizzaw dawk it-tipi ta' deċiżjonijiet utent foqra 925 00:57:21,880 --> 00:57:23,870 minn kodiċi tiegħek biex jirrimedjaw l-affarijiet. 926 00:57:23,870 --> 00:57:27,360 >> Allura biss jirrealizzaw li xi kultant l-kumpilatur huwa aktar intelliġenti minn magħna 927 00:57:27,360 --> 00:57:29,210 u se tip ta 'jaħbu iżbalji tagħna stess. 928 00:57:29,210 --> 00:57:31,620 Iżda ċertament meta niġu għas-settijiet problema u simili, 929 00:57:31,620 --> 00:57:35,340 do tkun ħsieb dwar dawk id-deċiżjonijiet tad-disinn fundamentalment żbaljata 930 00:57:35,340 --> 00:57:38,110 potenzjalment għar-raġuni sempliċi li aħna'd tkun qiegħda tagħmel xogħol b'mod aktar 931 00:57:38,110 --> 00:57:41,330 minn għandna attwalment ikollhom jagħmlu. Imma kemm aktar xogħol? 932 00:57:41,330 --> 00:57:44,960 Fil-każ ta DINJA HELLO, Nibdew biex tiġġeneralizza l-daqs ta 'din il-problema. 933 00:57:44,960 --> 00:57:48,100 X'hemm-tul tal-problema jew id-daqs tal-problema 934 00:57:48,100 --> 00:57:50,770 meta l-kelma l-utent ittajpjat fil hija HELLO? 935 00:57:50,770 --> 00:57:53,790 Huwa apparentement 5, forsi 6. Plus jew minus 1. Tkun xi tkun. 936 00:57:53,790 --> 00:57:55,680 Huwa tant qrib aħna ser biss sejħa hija 5. 937 00:57:55,680 --> 00:58:00,480 >> Allura x'inhu l-daqs tal-problema hawnhekk meta jippruvaw biex insemmu l-tul ta 'HELLO? 938 00:58:00,480 --> 00:58:06,790 Huwa 1, 2, 3, 4, 5, u forsi 6 għall-karattru aħħar, imma ejja tiġġeneralizza li bħala n. 939 00:58:06,790 --> 00:58:10,300 Allura n, biss il-n varjabbli, huwa dak xjenzati tal-kompjuter se tipikament jużaw 940 00:58:10,300 --> 00:58:13,890 biex jiddeskrivu d-daqs ta 'problema, u l-problema in kwistjoni hija kemm żmien huwa HELLO? 941 00:58:13,890 --> 00:58:17,050 Kif ħafna ħin ma strlen jieħdu? 942 00:58:17,050 --> 00:58:21,010 Huwa jieħu fuq l-ordni ta 'passi n, fejn kull pass ifisser ħarsa lejn karattru, 943 00:58:21,010 --> 00:58:23,350 tħares lejn karattru, tħares lejn karattru. 944 00:58:23,350 --> 00:58:26,850 U kellna din id-diskussjoni ftit lura, jieħu xi ħaġa in-numru ta 'operazzjonijiet. 945 00:58:26,850 --> 00:58:29,910 L-ewwel jum ta 'klassi kellna kulħadd awkwardly stand up, 946 00:58:29,910 --> 00:58:32,060 u allura kulħadd beda tqabbil off ma 'xulxin 947 00:58:32,060 --> 00:58:35,990 sabiex effettivament jgħoddu idealment kif ħafna nies kienu fil-kamra. 948 00:58:35,990 --> 00:58:39,860 U aħna wkoll ma ħaġa oħra biha jekk I minflok ma kien il-mod l-iskola antika 949 00:58:39,860 --> 00:58:44,800 ta 'kemm bdew 1, 2, 3, 4, 5, 6 u oħrajn, 950 00:58:44,800 --> 00:58:49,360 li wisq, id-daqs ta 'dik il-problema kienet ta' n daqs. Kien hemm nies n fil-kamra. 951 00:58:49,360 --> 00:58:52,010 Imma I jistgħu iħaffu dan up, id-dritt? Stil iskola Grad I tista 'tibda jingħaddu 2s. 952 00:58:52,010 --> 00:58:55,560 2, 4, 6, 8, 10, 12. U li tħoss hekk ħafna aktar mgħaġġla, u tabilħaqq huwa. 953 00:58:55,560 --> 00:59:01,720 Huwa litteralment darbtejn aktar malajr, iżda għal darb'oħra, jekk ieħor nies 400 mixi fil din il-kamra 954 00:59:01,720 --> 00:59:08,250 kollha f'daqqa, dawn algoritmi se tieħu ieħor 400 jew forsi 200 passi. 955 00:59:08,250 --> 00:59:13,310 >> Iżda għall-kuntrarju, jekk aħna verament nikseb intelliġenti u għandna minflok kollha ta 'inti għadd infuskom, 956 00:59:13,310 --> 00:59:15,280 jitfakkar kif dan algoritmu maħduma. 957 00:59:15,280 --> 00:59:17,110 You kollha saqajh. Let me malajr jgħaddi għal dan. 958 00:59:17,110 --> 00:59:20,430 You kollha saqajh, inti paired off, allura nofs inti sib stabbiliti, 959 00:59:20,430 --> 00:59:22,510 nofs inti sib stabbiliti, nofs inti sib stabbiliti, 960 00:59:22,510 --> 00:59:27,350 u fuq kull iterazzjoni ta 'dan loop minn ġimgħa 0, aħna bin-nofs il-problema in kwistjoni 961 00:59:27,350 --> 00:59:30,040 u marru n / 2, imbagħad n / 4, allura n / 8. 962 00:59:30,040 --> 00:59:35,350 U l-implikazzjoni ta 'dan huwa li jekk ieħor nies 400 jimxu fil-kamra, no big deal, 963 00:59:35,350 --> 00:59:40,120 dan se jieħu us f'rawnd 1 aktar, mhux 400 rawnds aktar, mhux 200 rawnds aktar. 964 00:59:40,120 --> 00:59:43,640 U hekk l-istorja aħna told ftit lura kellu jagħmel ftit xi ħaġa ma 'dan. 965 00:59:43,640 --> 00:59:47,750 Din il-linja ħamra hawnhekk hija lineari, huwa dritta, u huwa ittikkettjat bħala n 966 00:59:47,750 --> 00:59:50,250 għaliex id-daqs ta 'problema tikber, 967 00:59:50,250 --> 00:59:54,690 jekk algoriżmu tiegħek jew il-programm li magħhom inti qed issolvi dan jieħu passi n, 968 00:59:54,690 --> 00:59:58,620 nistgħu plot bħala linja dritta fejn tieħu aktar żmien l-akbar id-daqs tal-problema. 969 00:59:58,620 --> 01:00:03,280 U l-approċċ twosies, għadd 2, 4, 6, 8, xorta linja dritta, biss ftit aħjar. 970 01:00:03,280 --> 01:00:08,440 Huwa jieħu żmien ftit inqas, sabiex il-linja isfar hija taħt il-punt linja aħmar għall-punt. 971 01:00:08,440 --> 01:00:12,580 >> Iżda anke aħjar kien dan Grail qaddis ta 'dak li aħna imsejjaħ żmien logaritmika 972 01:00:12,580 --> 01:00:14,830 fejn anke jekk għal darb'oħra aħna jirdoppja l-għadd ta 'nies fil-kamra, 973 01:00:14,830 --> 01:00:18,240 aħna doppju tad-daqs ta 'dak il-ktieb tat-telefon mill-ewwel jum ta' klassi, 974 01:00:18,240 --> 01:00:22,310 no big deal, hija tieħu 1 dmugħ paġna aktar, tieħu 1 seduta aktar 'l isfel 975 01:00:22,310 --> 01:00:25,550 sabiex tissolva problema li l darbtejn akbar. 976 01:00:25,550 --> 01:00:27,460 U hekk il-konverżazzjoni aħna issa jiksbu biex tibda jkollhom qed 977 01:00:27,460 --> 01:00:30,380 kif nistgħu attwalment isolvu problemi b'mod effiċjenti 978 01:00:30,380 --> 01:00:32,510 jekk nikkunsidraw l-aktar sempliċi ta 'problemi bħal dan? 979 01:00:32,510 --> 01:00:36,210 Ejja ngħidu għandna 8 bibien li warajhom huma xi numri, 980 01:00:36,210 --> 01:00:39,720 u kull wieħed minn dawn in-numri mhux magħżula bl-ebda mod, 981 01:00:39,720 --> 01:00:42,830 dawn qed interi biss bl-addoċċ wara dawn il-bibien, 982 01:00:42,830 --> 01:00:47,290 u aħna nistaqsu l-mistoqsija kif do you go dwar is-sejba l-għadd - li jaf - 983 01:00:47,290 --> 01:00:50,250 7 wara dawn il-bibien? 984 01:00:50,250 --> 01:00:53,400 What would you, bniedem, tagħmel sabiex issib lili n-numru 7 985 01:00:53,400 --> 01:00:56,810 jekk jerġa 'kull wieħed minn dawn huma bibien u biex tara valur ikollok tiftaħ bieb? 986 01:00:56,810 --> 01:00:59,650 Liema se jkunu l-algoritmu tiegħek tkun forsi? 987 01:00:59,650 --> 01:01:05,310 >> [Rispons istudent inaudible] >> Allura tibda bil-lemin u tiftaħ bieb, tiftaħ bieb, tiftaħ bieb. 988 01:01:05,310 --> 01:01:08,570 U fl-agħar każ, kemm żmien huwa se jieħu magħna biex issib in-numru 7? 989 01:01:08,570 --> 01:01:12,800 U għal darb'oħra, dawn mhux qed magħżula, dan mhuwiex faċli kif, ukoll, jien ser tiftaħ il-bieb 7. 990 01:01:12,800 --> 01:01:15,240 Hija tista 'tieħu magħna, maximally, 8 passi. 991 01:01:15,240 --> 01:01:19,940 Fl-agħar każ, 7 hija saltwarjament fl-aħħar nett tal-linja tal-bibien, 992 01:01:19,940 --> 01:01:22,090 hekk aħna jista 'jkollhom biex jippruvaw l-bibien kollha n. 993 01:01:22,090 --> 01:01:24,440 Għalhekk għal darb'oħra hawn, aħna jidhru li jkollhom algoritmu lineari. 994 01:01:24,440 --> 01:01:27,030 Fil-fatt, għamilna dan biss ftit ta 'snin ilu. 995 01:01:27,030 --> 01:01:29,910 Wieħed mill-predeċessuri tiegħek ġiet ikkontestata ma preċiżament dan 996 01:01:29,910 --> 01:01:32,050 fejn aħna ma jkollhom verżjoni diġitali, aħna minflok kellhom blackboard 997 01:01:32,050 --> 01:01:33,780 ma 'xi biċċiet tal-karti fuqha. 998 01:01:33,780 --> 01:01:36,940 U dak li ħsibt nixtieq tagħmel huwa li tieħu ħarsa lura lejn kif dan marru, 999 01:01:36,940 --> 01:01:40,760 wieħed mill-aħjar opportunitajiet u forsi aktar strambi fuq il-palk 1000 01:01:40,760 --> 01:01:42,530 li jkollhom dimostrazzjoni dritt hawn fuq Sanders. 1001 01:01:42,530 --> 01:01:44,000 Kellna 2 fillieri ta 'numri. 1002 01:01:44,000 --> 01:01:47,280 Aħna biss se tħares lejn dak li jiġri hawn ma 'Sean għall-quċċata ta' dawn ringieli. 1003 01:01:47,280 --> 01:01:49,660 Sakemm l-ebda wieħed qatt darb'oħra voluntiera fil CS50, 1004 01:01:49,660 --> 01:01:52,010 kellna barka Sean li żżomm dan fuq camera, 1005 01:01:52,010 --> 01:01:54,670 hekk hu jaf li mijiet ta 'nies kienu jaraw dan issa għas-snin. 1006 01:01:54,670 --> 01:01:59,500 Iżda Sean għamlet biċċa xogħol aqwa - jew ma hu -? Fil-fatt konstatazzjoni lilna numru partikolari. 1007 01:01:59,500 --> 01:02:04,570 >> Mela ejja ara kemm hu solvuta din algoritmu sabiex aħna ser ikomplu dan konverżazzjoni qabel twil 1008 01:02:04,570 --> 01:02:08,300 ta 'kif insibu affarijiet b'mod effiċjenti. 1009 01:02:08,300 --> 01:02:12,300 [Malan fuq video] Għandi moħbija wara dawn il-bibien n-numru 7, 1010 01:02:12,300 --> 01:02:16,710 iżda tucked bogħod f'xi wħud minn dawn il-bibien kif ukoll huma oħra mhux negattivi numri, 1011 01:02:16,710 --> 01:02:19,980 u mira tiegħek huwa li jaħsbu ta 'dan ringiela ta' fuq ta 'numri biss bħala firxa 1012 01:02:19,980 --> 01:02:22,920 jew biss sekwenza ta 'biċċiet tal-karti bin-numri warajhom, 1013 01:02:22,920 --> 01:02:26,960 u mira tiegħek huwa, biss tuża l-firxa ta 'fuq hawn, issib lili n-numru 7. 1014 01:02:26,960 --> 01:02:30,800 U aħna mbagħad se critique kif inti tmur dwar kif isir dan. >> Kull dritt. 1015 01:02:30,800 --> 01:02:33,880 [Malan] Sib us-numru 7, jekk jogħġbok. 1016 01:02:36,210 --> 01:02:38,350 [Daħk] 1017 01:02:41,610 --> 01:02:44,460 [Malan] No [Rires] 1018 01:02:45,760 --> 01:02:58,080 5, 19, 13, [daħk]. Mhuwiex kwistjoni trick. 1019 01:03:00,560 --> 01:03:02,390 1. 1020 01:03:04,560 --> 01:03:06,910 [Daħk] 1021 01:03:06,910 --> 01:03:10,760 Fuq dan il-punt punteġġ tiegħek ma tantx hu tajjeb, sabiex inti tista 'ukoll jibqgħu għaddejjin. [Daħk] 1022 01:03:12,490 --> 01:03:14,070 3. 1023 01:03:17,340 --> 01:03:23,480 Mur fuq. Franchement, I iżda ma jistax jgħin wonder dak li qed anki jaħsbu dwar. [Daħk] 1024 01:03:25,010 --> 01:03:28,870 Biss il-filliera ta 'fuq, sabiex inti stajt ltqajna 3 xellug. Allura ssib lili 7. 1025 01:03:28,870 --> 01:03:45,360 [Studenti murmuring] 1026 01:03:46,270 --> 01:03:49,870 [Malan] 17. 1027 01:03:49,870 --> 01:03:55,460 [Studenti murmuring] 1028 01:03:56,920 --> 01:04:01,550 [Malan] 7! [Applause] 1029 01:04:01,550 --> 01:04:06,080 >> Allura l-Erbgħa aħna se adsa fis dan u algoritmi aktar sofistikati għall-konstatazzjoni affarijiet. 1030 01:04:06,080 --> 01:04:10,200 Għal issa aħna ser tħallik ma Sean u ara inti nhar l-Erbgħa. 1031 01:04:11,280 --> 01:04:13,000 [CS50.TV]