1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Reviżjoni] [Quiz 0] 2 00:00:03,000 --> 00:00:05,000 >> [Lexi Ross, Tommy MacWilliam, Lucas Freitas, Joseph Ong] [Università ta 'Harvard] 3 00:00:05,000 --> 00:00:08,000 >> [Dan huwa CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Ħej, kulħadd. 5 00:00:10,000 --> 00:00:15,000 Merħba għas-sessjoni ta 'reviżjoni għall-Quiz 0, li qed isir dan l-Erbgħa. 6 00:00:15,000 --> 00:00:19,000 Dak li aħna qed tmur biex tagħmel tonight, jien bi 3 TFS oħra, 7 00:00:19,000 --> 00:00:24,000 u flimkien aħna qed tmur biex jmorru permezz ta 'reviżjoni ta' dak li aħna ghamilt fil-kors s'issa. 8 00:00:24,000 --> 00:00:27,000 Huwa mhux se tkun 100% komprensiva, iżda għandu itik idea aħjar 9 00:00:27,000 --> 00:00:31,000 ta 'dak li diġà għandek isfel u dak li inti xorta jkollok bżonn biex tistudja qabel l-Erbgħa. 10 00:00:31,000 --> 00:00:34,000 U li tħossok liberu li jgħollu naħa tiegħek bil-mistoqsijiet kif aħna qed tmur flimkien, 11 00:00:34,000 --> 00:00:38,000 iżda jżomm f'moħħu li aħna ser wkoll ikollhom ftit ta 'żmien fit-tmiem- 12 00:00:38,000 --> 00:00:41,000 jekk irridu jiksbu permezz ta 'l ftit minuti biex spare-li tagħmel mistoqsijiet ġenerali, 13 00:00:41,000 --> 00:00:47,000 sabiex iżommu dan f'moħħhom, u hekk aħna qed tmur biex tibda fil-bidu ma f'Ġimgħa 0. 14 00:00:47,000 --> 00:00:50,000 >> [Quiz 0 Reviżjoni!] [Parti 0] [Lexi Ross] Iżda qabel ma nagħmlu li ejja nitkellmu dwar 15 00:00:50,000 --> 00:00:53,000 il-loġistika tat-kwizz. 16 00:00:53,000 --> 00:00:55,000 >> [Loġistika] [Quiz sseħħ l-Erbgħa 10/10 minflok lecture] 17 00:00:55,000 --> 00:00:57,000 >> [(Ara http://cdn.cs50.net/2012/fall/quizzes/0/about0.pdf għad-dettalji)] Huwa fuq l-Erbgħa 10 OTTUBRU. 18 00:00:57,000 --> 00:01:00,000 >> Li dan l-Erbgħa, u jekk inti tmur għal dan URL hawn, 19 00:01:00,000 --> 00:01:03,000 li huwa wkoll aċċessibbli minn CS50.net-hemm rabta li it- 20 00:01:03,000 --> 00:01:06,000 tista 'tara l-informazzjoni dwar fejn tmur bbażata fuq 21 00:01:06,000 --> 00:01:10,000 isem aħħar tiegħek jew affiljazzjoni-iskola kif ukoll 22 00:01:10,000 --> 00:01:14,000 jgħidlek dwar eżattament dak li l-kwizz se jkopri u t-tipi ta 'mistoqsijiet li int ser tikseb. 23 00:01:14,000 --> 00:01:19,000 Wieħed iżomm f'moħħu li inti taf ukoll ikollhom iċ-ċans li tirrevedi l-kwizz fit-taqsima, 24 00:01:19,000 --> 00:01:21,000 hekk TFS tiegħek għandu jkun għaddej matul xi problemi prattiċi, 25 00:01:21,000 --> 00:01:29,000 u li l-ieħor ċans tajjeb biex tara fejn inti xorta jkollok bżonn biex jistudjaw għall-kwizz. 26 00:01:29,000 --> 00:01:32,000 Nibdew fil-bidu ma 'Bytes "n" Bits. 27 00:01:32,000 --> 00:01:35,000 Ftakar ftit huwa biss 0 jew 1, 28 00:01:35,000 --> 00:01:38,000 u byte hija ġabra ta '8 ta' dawk bits. 29 00:01:38,000 --> 00:01:42,000 Ejja nħarsu lejn dan il-ġbir ta 'bits dritt hawn. 30 00:01:42,000 --> 00:01:44,000 Għandna nkunu kapaċi biex insemmu kif ħafna bits hemm. 31 00:01:44,000 --> 00:01:48,000 Fejn aħna għadd hemm biss 8 minnhom, 8 0 jew 1 unità. 32 00:01:48,000 --> 00:01:51,000 U peress li hemm 8 bits, dak l 1 byte, 33 00:01:51,000 --> 00:01:53,000 u ejja jaqilbu għall hexadeċimali. 34 00:01:53,000 --> 00:01:58,000 Hexadecimal hija bażi 16, u huwa pjuttost faċli biex jikkonvertu 35 00:01:58,000 --> 00:02:01,000 numru fil-binarju, li huwa dak li hu, għal numru f'hexadecimal. 36 00:02:01,000 --> 00:02:04,000 Kollha għandna nagħmlu huwa irridu nħarsu lejn gruppi ta '4, 37 00:02:04,000 --> 00:02:07,000 u aħna jikkonvertu lill-ċifri hexadeċimali xierqa. 38 00:02:07,000 --> 00:02:11,000 Nibdew bl-grupp dritt aktar ta '4, hekk 0011. 39 00:02:11,000 --> 00:02:16,000 Li għaddej biex tkun waħda 1 u 1 2, sabiex flimkien li jagħmel 3. 40 00:02:16,000 --> 00:02:19,000 U mbagħad ejja nħarsu lejn il-blokk ieħor ta '4. 41 00:02:19,000 --> 00:02:24,000 1101. Li għaddej biex tkun waħda 1, 1 4, u wieħed 8. 42 00:02:24,000 --> 00:02:28,000 Flimkien li għaddej biex tkun 13, li jagħmel D. 43 00:02:28,000 --> 00:02:32,000 U aħna ser niftakru li f'hexadecimal aħna ma jmurx biss 0 sa 9. 44 00:02:32,000 --> 00:02:36,000 Immorru 0 sa F, hekk wara 9, 10 jikkorrispondi għal A, 45 00:02:36,000 --> 00:02:40,000 11 sa B, eċċetera fejn F hija l-15. 46 00:02:40,000 --> 00:02:44,000 Hawnhekk 13 hija D, 47 00:02:44,000 --> 00:02:49,000 hekk li jaqilbu għal punt deċimali kollu li nagħmlu huwa aħna fil-fatt 48 00:02:49,000 --> 00:02:52,000 jittrattaw lil kull pożizzjoni ta 'poter ta' 2. 49 00:02:52,000 --> 00:02:58,000 Din kienet waħda 1, 1 2, zero 4s, żero 8S, wieħed 16, eċċetera, 50 00:02:58,000 --> 00:03:03,000 u huwa ftit diffiċli biex tiġi kkalkulata fir-ras, imma jekk immorru l-slide li jmiss 51 00:03:03,000 --> 00:03:05,000 nistgħu naraw ir-risposta għal din. 52 00:03:05,000 --> 00:03:09,000 >> Essenzjalment aħna qed tmur madwar minn dritt lura għax-xellug, 53 00:03:09,000 --> 00:03:14,000 u aħna qed multiplikazzjoni kull ċifra mill-qawwa korrispondenti ta '2. 54 00:03:14,000 --> 00:03:19,000 U ftakar, għal hexadeċimali aħna tiddenota dawn in-numri ma 0x fil-bidu 55 00:03:19,000 --> 00:03:23,000 hekk aħna ma dan jiġi mħawwad ma 'numru deċimali. 56 00:03:23,000 --> 00:03:29,000 Kontinwa fuq, dan huwa t-Tabella ASCII, 57 00:03:29,000 --> 00:03:35,000 u dak li nużaw ASCII għal huwa li Mappa minn karattri li valuri numeriċi. 58 00:03:35,000 --> 00:03:39,000 Ftakar fil-pset kriptografija għamilna użu estensiv tat-Tabella ASCII 59 00:03:39,000 --> 00:03:43,000 sabiex jużaw metodi differenti ta 'kriptografija, 60 00:03:43,000 --> 00:03:47,000 il Caesar u l-cipher Vigenère, li jikkonvertu ittri differenti 61 00:03:47,000 --> 00:03:52,000 fi string skond il-kjavi mogħtija mill-utent. 62 00:03:52,000 --> 00:03:56,000 Ejja nħarsu lejn xi ftit ta 'matematika ASCII. 63 00:03:56,000 --> 00:04:02,000 Ħarsa lejn "P" + 1, fil-forma karattru li tkun Q, 64 00:04:02,000 --> 00:04:07,000 u ftakar li '5 ≠ 5. 65 00:04:07,000 --> 00:04:10,000 U kif eżattament kieku aħna jikkonvertu bejn dawk il-forom 2? 66 00:04:10,000 --> 00:04:13,000 Mhuwiex fil-fatt iebes wisq. 67 00:04:13,000 --> 00:04:16,000 Sabiex tikseb 5 aħna naqqas '0 ' 68 00:04:16,000 --> 00:04:20,000 għaliex hemm 5 postijiet bejn l-0 "u l '5." 69 00:04:20,000 --> 00:04:23,000 Sabiex tmur il-mod ieħor aħna biss żid il-0, 70 00:04:23,000 --> 00:04:25,000 dan huwa tip ta 'bħal aritmetika regolari. 71 00:04:25,000 --> 00:04:29,000 Just ftakar li meta xi ħaġa tkun kwotazzjonijiet madwaru huwa karattru 72 00:04:29,000 --> 00:04:37,000 u b'hekk jikkorrispondi għal valur fit-tabella ASCII. 73 00:04:37,000 --> 00:04:40,000 Nimxu fis-suġġetti aktar ġenerali xjenza tal-kompjuter. 74 00:04:40,000 --> 00:04:43,000 Aħna tgħallimna dak algoriżmu huwa u kif nużaw l-ipprogrammar 75 00:04:43,000 --> 00:04:45,000 biex jimplimentaw algoritmi. 76 00:04:45,000 --> 00:04:48,000 Xi eżempji ta 'algoritmi huma xi ħaġa verament sempliċi bħal 77 00:04:48,000 --> 00:04:51,000 verifika dwar jekk numru huwa saħansitra jew fard. 78 00:04:51,000 --> 00:04:54,000 Għal dak ftakar aħna Mod in-numru 2 u jivverifika jekk ir-riżultat huwa 0. 79 00:04:54,000 --> 00:04:57,000 Jekk iva, huwa saħansitra. Jekk le, huwa bil-fard. 80 00:04:57,000 --> 00:04:59,000 U dan huwa eżempju ta 'algoritmu verament bażiku. 81 00:04:59,000 --> 00:05:02,000 >> Ftit ftit ta 'waħda aktar involuti huwa tfittxija binarja, 82 00:05:02,000 --> 00:05:05,000 li aħna ser jmorru fuq aktar tard fis-sessjoni reviżjoni. 83 00:05:05,000 --> 00:05:09,000 U l-ipprogrammar huwa t-terminu li nużaw għat-teħid algoritmu 84 00:05:09,000 --> 00:05:15,000 u dan jinbidel għall-kodiċi tal-kompjuter tista 'taqra. 85 00:05:15,000 --> 00:05:20,000 2 eżempji ta 'programmazzjoni huwa Scratch, 86 00:05:20,000 --> 00:05:22,000 li huwa dak li għamilna fil-Ġimgħa 0. 87 00:05:22,000 --> 00:05:25,000 Anki jekk aħna ma attwalment tip l-kodiċi huwa mod ta 'implimentazzjoni 88 00:05:25,000 --> 00:05:29,000 dan algoritmu, li hija l-istampar n-numri 1-10, 89 00:05:29,000 --> 00:05:32,000 u hawn aħna nagħmlu l-istess fil-lingwa ta 'programmar C. 90 00:05:32,000 --> 00:05:41,000 Dawn huma funzjonalment ekwivalenti, biss bil-miktub fil-lingwi differenti jew sintassi. 91 00:05:41,000 --> 00:05:44,000 Aħna mbagħad tgħallmu dwar espressjonijiet Boolean, 92 00:05:44,000 --> 00:05:48,000 u Boolean huwa valur li l-la vera jew falza, 93 00:05:48,000 --> 00:05:51,000 u espressjonijiet hawn oftentimes Boolean 94 00:05:51,000 --> 00:05:55,000 mur ġewwa ta 'kundizzjonijiet, hekk jekk (x ≤ 5), 95 00:05:55,000 --> 00:06:00,000 ukoll, aħna diġà stabbiliti x = 5, sabiex din il-kundizzjoni se tevalwa l-vera. 96 00:06:00,000 --> 00:06:03,000 U jekk huwa veru, tkun xi tkun il-kodiċi huwa taħt il-kundizzjoni 97 00:06:03,000 --> 00:06:08,000 se jiġu evalwati mill-kompjuter, hekk li string se jiġi stampat 98 00:06:08,000 --> 00:06:12,000 għall-produzzjoni standard, u l-kondizzjoni terminu 99 00:06:12,000 --> 00:06:16,000 jirreferi għal dak kollu li huwa ġewwa l-parentesi tal-istqarrija jekk. 100 00:06:16,000 --> 00:06:20,000 Ftakar l-operaturi kollha. 101 00:06:20,000 --> 00:06:26,000 Ftakar && huwa u l | | meta aħna qed jippruvaw biex jgħaqqdu 2 jew aktar kondizzjonijiet, 102 00:06:26,000 --> 00:06:30,000 == Mhux = li tivverifika jekk 2 affarijiet huma ndaqs. 103 00:06:30,000 --> 00:06:36,000 Ftakar li = hija għal assenjazzjoni filwaqt == hija operatur Boolean. 104 00:06:36,000 --> 00:06:41,000 ≤, ≥ u allura l-2 finali jispjegaw lilhom infushom. 105 00:06:41,000 --> 00:06:45,000 A reviżjoni ġenerali tal-loġika Boolean hawn. 106 00:06:45,000 --> 00:06:48,000 U espressjonijiet Boolean huma wkoll importanti fil-linji, 107 00:06:48,000 --> 00:06:50,000 li aħna ser jmorru fuq issa. 108 00:06:50,000 --> 00:06:56,000 Aħna tgħallimna madwar 3 tipi ta 'linji s'issa fil CS50, għal, ftit, u tagħmel waqt. 109 00:06:56,000 --> 00:06:59,000 U huwa importanti li tkun taf li filwaqt li għall-aktar skopijiet 110 00:06:59,000 --> 00:07:02,000 nistgħu attwalment jużaw kull tip ta 'linja ġeneralment 111 00:07:02,000 --> 00:07:06,000 hemm ċerti tipi ta 'għanijiet jew mudelli komuni 112 00:07:06,000 --> 00:07:09,000 fl-ipprogrammar li speċifikament jitolbu għal waħda minn dawn il-linji 113 00:07:09,000 --> 00:07:13,000 li jagħmilha l-. aktar effiċjenti jew eleganti għall-kodiċi li b'dan il-mod 114 00:07:13,000 --> 00:07:18,000 Ejja jmorru fuq liema kull waħda minn dawn il-linji tendenza li jintużaw għal ħafna drabi. 115 00:07:18,000 --> 00:07:21,000 >> Fi għat loop aħna ġeneralment diġà taf kif ħafna drabi aħna rridu jtenni. 116 00:07:21,000 --> 00:07:24,000 Dan huwa dak li nitfgħu fil-kondizzjoni. 117 00:07:24,000 --> 00:07:28,000 Għall, i = 0, i <10, per eżempju. 118 00:07:28,000 --> 00:07:31,000 Aħna diġà jafu li rridu nagħmlu xi ħaġa 10 darbiet. 119 00:07:31,000 --> 00:07:34,000 Issa, għal loop waqt, ġeneralment aħna ma neċessarjament 120 00:07:34,000 --> 00:07:36,000 taf kif ħafna drabi aħna rridu l-linja jiddekorri. 121 00:07:36,000 --> 00:07:39,000 Imma aħna nafu xi tip ta 'kundizzjoni li irridu li 122 00:07:39,000 --> 00:07:41,000 dejjem ikun veru jew dejjem tkun falza. 123 00:07:41,000 --> 00:07:44,000 Per eżempju, filwaqt li huwa stabbilit. 124 00:07:44,000 --> 00:07:46,000 Ejja ngħidu li l-varjabbli Boolean. 125 00:07:46,000 --> 00:07:48,000 Filwaqt li huwa veru li rridu l-kodiċi li tevalwa, 126 00:07:48,000 --> 00:07:52,000 hekk ftit aktar extensible, ftit aktar ġenerali minn għall loop, 127 00:07:52,000 --> 00:07:55,000 iżda kwalunkwe għat loop jistgħu wkoll jiġu konvertiti għal loop waqt. 128 00:07:55,000 --> 00:08:00,000 Fl-aħħarnett, do filwaqt loops, li jistgħu jkunu l-trickiest biex tifhem dritt bogħod, 129 00:08:00,000 --> 00:08:04,000 huma spiss użati meta rridu biex jevalwaw il-kodiċi 1 130 00:08:04,000 --> 00:08:06,000 qabel l-ewwel darba aħna jivverifika l-kundizzjoni. 131 00:08:06,000 --> 00:08:09,000 Każ użu komuni għal tagħmel waqt loop 132 00:08:09,000 --> 00:08:12,000 huwa meta inti tixtieq li tikseb l-input utent, u inti taf li inti tixtieq li tistaqsi lill-utent 133 00:08:12,000 --> 00:08:15,000 għall-input mill-inqas darba, imma jekk dawn ma jagħtuk b'input tajjeb mill-ewwel 134 00:08:15,000 --> 00:08:18,000 inti tixtieq li żżomm tistaqsi lilhom sakemm dawn jagħtuk l-input tajba. 135 00:08:18,000 --> 00:08:21,000 Dik hija l-aktar użu komuni ta 'do filwaqt loop, 136 00:08:21,000 --> 00:08:23,000 u ejja nħarsu lejn l-istruttura attwali ta 'dawn loops. 137 00:08:23,000 --> 00:08:27,000 Huma tipikament dejjem tendenza li jsegwu dawn it-tendenzi. 138 00:08:27,000 --> 00:08:30,000 >> Fuq il-linja għal ġewwa inti għandek 3 komponenti: 139 00:08:30,000 --> 00:08:35,000 inizjalizzazzjoni, tipikament xi ħaġa simili i int = 0 fejn i hija l-counter, 140 00:08:35,000 --> 00:08:40,000 kondizzjoni, fejn irridu ngħidu imexxu dan għal loop sakemm din il-kundizzjoni xorta żżomm, 141 00:08:40,000 --> 00:08:44,000 bħal i <10, u mbagħad finalment, aġġornament, li hija kif aħna inkrement 142 00:08:44,000 --> 00:08:47,000 il-varjabbli counter f'kull punt fil-linja. 143 00:08:47,000 --> 00:08:50,000 A ħaġa komuni biex tara hemm biss i + +, 144 00:08:50,000 --> 00:08:52,000 li jfisser inkrement i sa l-1 kull darba. 145 00:08:52,000 --> 00:08:55,000 Inti tista 'wkoll tagħmel xi ħaġa simili i + = 2, 146 00:08:55,000 --> 00:08:58,000 li jfisser żid 2 sa i kull darba li inti tmur permezz tal-linja. 147 00:08:58,000 --> 00:09:03,000 U allura l-tagħmel dan biss jirreferi għal kwalunkwe kodiċi li attwalment runs bħala parti mill-linja. 148 00:09:03,000 --> 00:09:09,000 U għal loop waqt, dan iż-żmien għandna attwalment ikollhom l-inizjalizzazzjoni ta 'barra tal-linja, 149 00:09:09,000 --> 00:09:12,000 hekk per eżempju, ejja ngħidu aħna qed tipprova tagħmel l-istess tip ta 'linja kif I biss deskritt. 150 00:09:12,000 --> 00:09:16,000 Aħna ngħid i int = 0 qabel il-linja jibda. 151 00:09:16,000 --> 00:09:20,000 Imbagħad nistgħu ngħidu filwaqt i <10 jagħmlu dan, 152 00:09:20,000 --> 00:09:22,000 hekk l-istess blokk ta 'kodiċi bħal qabel, 153 00:09:22,000 --> 00:09:26,000 u din id-darba l-parti aġġornament tal-kodiċi, per eżempju, i + +, 154 00:09:26,000 --> 00:09:29,000 fil-fatt tmur ġewwa tal-linja. 155 00:09:29,000 --> 00:09:33,000 U fl-aħħarnett, għal do waqt, huwa simili għal-linja filwaqt li, 156 00:09:33,000 --> 00:09:36,000 imma għandna niftakru li l-kodiċi se jevalwa darba 157 00:09:36,000 --> 00:09:40,000 qabel il-kondizzjoni hija vverifikata, u għalhekk jagħmel sens ħafna aktar 158 00:09:40,000 --> 00:09:44,000 jekk inti tħares lejn din fl-ordni tal fuq għal isfel. 159 00:09:44,000 --> 00:09:49,000 Fi, tagħmel filwaqt li l-linja kodiċi jevalwa qabel ma inti anki tħares lejn il-kondizzjoni waqt 160 00:09:49,000 --> 00:09:55,000 billi loop waqt, hija għandha tivverifika l-ewwel. 161 00:09:55,000 --> 00:09:59,000 Dikjarazzjonijiet u varjabbli. 162 00:09:59,000 --> 00:10:04,000 Meta aħna rridu li jinħoloq varjabbli ġdid aħna l-ewwel trid initialize dan. 163 00:10:04,000 --> 00:10:07,000 >> Per eżempju, bar int initializes l-bar varjabbli, 164 00:10:07,000 --> 00:10:10,000 iżda ma tagħtiha valur, iva, liema huwa valur bar issa? 165 00:10:10,000 --> 00:10:12,000 Ma nafux. 166 00:10:12,000 --> 00:10:14,000 Dan jista 'jkun xi valur żibel li qabel kienet maħżuna fil-memorja hemm, 167 00:10:14,000 --> 00:10:16,000 u aħna ma jridu jużaw dak il-varjabbli 168 00:10:16,000 --> 00:10:19,000 sakemm aħna fil-fatt tagħtiha valur, 169 00:10:19,000 --> 00:10:21,000 hekk aħna tiddikjara hawnhekk. 170 00:10:21,000 --> 00:10:24,000 Imbagħad aħna initialize din tkun 42 hawn taħt. 171 00:10:24,000 --> 00:10:28,000 Issa, naturalment, nafu dan jista 'jsir fuq linja waħda, int bar = 42. 172 00:10:28,000 --> 00:10:30,000 Iżda biss li jiġu ċar l-passi multipli li huma għaddejjin, 173 00:10:30,000 --> 00:10:34,000 id-dikjarazzjoni u l-inizjalizzazzjoni qed jiġri separatament hawn. 174 00:10:34,000 --> 00:10:38,000 Dan jiġri fuq pass wieħed, u dak li jmiss, int baz = bar + 1, 175 00:10:38,000 --> 00:10:44,000 din id-dikjarazzjoni taħt, li baz żidiet, sabiex fl-aħħar ta 'dan il-blokk kodiċi 176 00:10:44,000 --> 00:10:48,000 jekk konna li jistampaw il-valur ta 'baz ikun 44 177 00:10:48,000 --> 00:10:52,000 għaliex aħna tiddikjara u initialize din tkun bar> 1, 178 00:10:52,000 --> 00:10:58,000 u allura aħna inkrement darba aktar ma 'l-+ +. 179 00:10:58,000 --> 00:11:02,000 Aħna marru fuq dan fil-qosor pretty, iżda huwa tajjeb li jkollha ġenerali 180 00:11:02,000 --> 00:11:04,000 fehim ta 'liema ħjut u avvenimenti huma. 181 00:11:04,000 --> 00:11:06,000 Aħna prinċipalment ma dan fil Scratch, 182 00:11:06,000 --> 00:11:09,000 sabiex inti tista 'taħseb ħjut bħala sekwenzi multipli ta' kodiċi 183 00:11:09,000 --> 00:11:11,000 running fl-istess ħin. 184 00:11:11,000 --> 00:11:14,000 Fil actuality, hija probabbilment ma tkunx qed taħdem fl-istess ħin, 185 00:11:14,000 --> 00:11:17,000 iżda xorta ta astratt nistgħu jaħsbu li b'dan il-mod. 186 00:11:17,000 --> 00:11:20,000 >> Fil Scratch, per eżempju, kellna l-sprites multipli. 187 00:11:20,000 --> 00:11:22,000 Dan jista 'jiġi eżekuzzjoni kodiċi differenti fl-istess ħin. 188 00:11:22,000 --> 00:11:26,000 Wieħed jista 'mixi waqt li l-oħra huwa qal xi ħaġa 189 00:11:26,000 --> 00:11:29,000 fil-parti differenti tal-iskrin. 190 00:11:29,000 --> 00:11:34,000 Avvenimenti huma mod ieħor kif tissepara l-loġika 191 00:11:34,000 --> 00:11:37,000 bejn l-elementi differenti tal-kodiċi tiegħek, 192 00:11:37,000 --> 00:11:40,000 u fl Scratch konna kapaċi jissimulaw avvenimenti bl-użu Broadcast, 193 00:11:40,000 --> 00:11:43,000 u li fil-fatt Meta I jirċievu, mhux Meta I Isma, 194 00:11:43,000 --> 00:11:47,000 iżda essenzjalment huwa mod biex jittrasmettu l-informazzjoni 195 00:11:47,000 --> 00:11:49,000 minn Sprite għall-ieħor. 196 00:11:49,000 --> 00:11:52,000 Per eżempju, inti tista 'tixtieq li jittrasmettu logħba fuq, 197 00:11:52,000 --> 00:11:56,000 u meta ieħor Sprite jirċievi logħba fuq, 198 00:11:56,000 --> 00:11:58,000 din tirrispondi b'ċertu mod. 199 00:11:58,000 --> 00:12:03,000 Huwa ta 'mudell importanti li wieħed jifhem għall-programmazzjoni. 200 00:12:03,000 --> 00:12:07,000 Just jmorru fuq il-Ġimgħa bażiku 0, dak li aħna ħadthom marret fuq s'issa, 201 00:12:07,000 --> 00:12:10,000 ejja nħarsu lejn dan il-programm C sempliċi. 202 00:12:10,000 --> 00:12:14,000 It-test jista 'jkun xi ftit żgħira minn hawn, imma jien ser jmorru fuq huwa verament malajr. 203 00:12:14,000 --> 00:12:20,000 Aħna inklużi 2 fajls header fil-quċċata, cs50.h u stdio.h. 204 00:12:20,000 --> 00:12:23,000 Aħna mbagħad jiddefinixxu limitu kostanti msejħa biex tkun ta '100. 205 00:12:23,000 --> 00:12:26,000 Aħna mbagħad timplementa funzjoni prinċipali tagħna. 206 00:12:26,000 --> 00:12:29,000 Minħabba li aħna ma jużawx argumenti kmand tal-linja hawn neħtieġu npoġġu null 207 00:12:29,000 --> 00:12:32,000 bħala l-argumenti favur prinċipali. 208 00:12:32,000 --> 00:12:38,000 Naraw int hawn prinċipali. Dik hija l-tip ta 'ritorn, għalhekk ritorn 0 fil-qiegħ. 209 00:12:38,000 --> 00:12:41,000 U aħna qed tuża l-funzjoni librerija CS50 tikseb int 210 00:12:41,000 --> 00:12:45,000 li titlob lill-utent għall-input, u aħna jaħżnu f'dan x varjabbli, 211 00:12:45,000 --> 00:12:51,000 hekk aħna tiddikjara x 'hawn fuq, u aħna initialize ma x = GetInt. 212 00:12:51,000 --> 00:12:53,000 >> Aħna mbagħad tiċċekkja biex tara jekk l-utent tana b'input tajjeb. 213 00:12:53,000 --> 00:12:59,000 Jekk huwa LIMITU ≥ irridu li jirritornaw kodiċi ta 'żball ta' 1 u jistampaw messaġġ ta 'żball. 214 00:12:59,000 --> 00:13:02,000 U fl-aħħarnett, jekk l-utent tatna tajba input 215 00:13:02,000 --> 00:13:08,000 aħna qed tmur biex kwadru in-numru u jistampa dan ir-riżultat. 216 00:13:08,000 --> 00:13:11,000 Just biex tiżgura li dawk dar hit kollha 217 00:13:11,000 --> 00:13:17,000 tista 'tara t-tikketti tal-partijiet differenti tal-kodiċi hawn. 218 00:13:17,000 --> 00:13:19,000 Semmejt kostanti, fajls header. 219 00:13:19,000 --> 00:13:21,000 Oh, int x. Kun żgur li wieħed jiftakar li l-varjabbli lokali. 220 00:13:21,000 --> 00:13:24,000 Dan jikkuntrasta minn varjabbli globali, li aħna ser nitkellmu dwar 221 00:13:24,000 --> 00:13:27,000 ftit aktar tard fis-sessjoni reviżjoni, 222 00:13:27,000 --> 00:13:30,000 u aħna qed jitolbu l-funzjoni librerija printf, 223 00:13:30,000 --> 00:13:34,000 hekk jekk aħna ma kinux jinkludu l-fajl tal-header stdio.h 224 00:13:34,000 --> 00:13:37,000 aħna mhux se jkunu jistgħu jsejħu printf. 225 00:13:37,000 --> 00:13:42,000 U jien nemmen li l-vleġġa li ltqajna maqtugħa hawn hija li tipponta lejn il-d%, 226 00:13:42,000 --> 00:13:45,000 li huwa string ifformattjar fil printf. 227 00:13:45,000 --> 00:13:52,000 Hija tgħid jistampa din il-varjabbli bħala numru d%,. 228 00:13:52,000 --> 00:13:58,000 U li huwa għall f'Ġimgħa 0. 229 00:13:58,000 --> 00:14:06,000 Issa Lucas se tkompli. 230 00:14:06,000 --> 00:14:08,000 Ħej, guys. Jisimni Lucas. 231 00:14:08,000 --> 00:14:10,000 Jien sophomore fil-dar aħjar fuq il-kampus, Mather, 232 00:14:10,000 --> 00:14:14,000 u jien ser jitkellmu ftit dwar Ġimgħa 1 u 2.1. 233 00:14:14,000 --> 00:14:16,000 [Ġimgħa 1 u 2.1!] [Lucas Freitas] 234 00:14:16,000 --> 00:14:19,000 Kif Lexi kien qal, meta bdejna traduzzjoni kodiċi tiegħek mill Scratch sa C 235 00:14:19,000 --> 00:14:23,000 waħda mill-affarijiet li aħna ndunat hija li inti ma tistax biss 236 00:14:23,000 --> 00:14:26,000 jikteb il-kodiċi tiegħek u run-użu ta 'bandiera aħdar aktar. 237 00:14:26,000 --> 00:14:30,000 Attwalment, inti għandek tuża xi passi biex jagħmlu program tiegħek C 238 00:14:30,000 --> 00:14:33,000 issir fajl eżekutibbli. 239 00:14:33,000 --> 00:14:36,000 Bażikament dak li għandek tagħmel meta int kitba ta 'programm huwa li 240 00:14:36,000 --> 00:14:40,000 inti tittraduċi l-idea tiegħek f'lingwa li kompilatur jista 'jifhem, 241 00:14:40,000 --> 00:14:44,000 hekk meta int bil-miktub ta 'programm fis-C 242 00:14:44,000 --> 00:14:47,000 dak li qed tagħmel huwa attwalment miktub xi ħaġa li kompilatur tiegħek se jifhmu, 243 00:14:47,000 --> 00:14:50,000 u allura l-kumpilatur se tittraduċi dan il-kodiċi 244 00:14:50,000 --> 00:14:53,000 f'xi ħaġa li l-kompjuter tiegħek ser jifhmu. 245 00:14:53,000 --> 00:14:55,000 >> U l-ħaġa hija, il-kompjuter tiegħek huwa attwalment ħafna dumb. 246 00:14:55,000 --> 00:14:57,000 Kompjuter tiegħek jista 'biss jifhmu 0s u 1s, 247 00:14:57,000 --> 00:15:01,000 hekk fil-fatt fl-ewwel kompjuters nies normalment programmati 248 00:15:01,000 --> 00:15:04,000 użu 0s u 1s, iżda mhux aktar, nirringrazzjaw 'l Alla. 249 00:15:04,000 --> 00:15:07,000 Aħna ma għandekx memorize-sekwenzi ta 0s u 1s 250 00:15:07,000 --> 00:15:10,000 għal għal loop jew għal loop waqt u l-bqija. 251 00:15:10,000 --> 00:15:13,000 C'est pourquoi għandna kompilatur. 252 00:15:13,000 --> 00:15:17,000 What a kompilatur ma huwa bażikament jittraduċi l-kodiċi C, 253 00:15:17,000 --> 00:15:21,000 fil-każ tagħna, għal lingwa li l-kompjuter tiegħek ser jifhmu, 254 00:15:21,000 --> 00:15:25,000 li huwa l-kodiċi oġġett, u l-kumpilatur li aħna qed tuża 255 00:15:25,000 --> 00:15:30,000 huwa msejjaħ clang, għalhekk dan huwa effettivament il-simbolu għall clang. 256 00:15:30,000 --> 00:15:33,000 Meta inti għandek program tiegħek, inti għandek tagħmel 2 affarijiet. 257 00:15:33,000 --> 00:15:37,000 L-ewwel, inti għandek biex jikkompilaw programm tiegħek, u allura inti qed tmur jiddekorri program tiegħek. 258 00:15:37,000 --> 00:15:41,000 Biex jikkompila programm tiegħek ikollok ħafna ta 'għażliet li jagħmlu dan. 259 00:15:41,000 --> 00:15:44,000 L-ewwel waħda hija li jagħmlu program.c clang 260 00:15:44,000 --> 00:15:47,000 li fiha programm huwa l-isem tal-programm tiegħek. 261 00:15:47,000 --> 00:15:51,000 F'dan il-każ tista 'tara dawn qed biss qal "ħej, jikkompilaw programm tiegħi." 262 00:15:51,000 --> 00:15:56,000 Int ma qal "Irrid dan l-isem għall-programm tiegħi" jew xi ħaġa. 263 00:15:56,000 --> 00:15:58,000 >> It-tieni għażla hija li tagħti l-isem lill-programm tiegħek. 264 00:15:58,000 --> 00:16:02,000 Tista 'tgħid clang-o u allura l-isem li trid 265 00:16:02,000 --> 00:16:06,000 il-fajl eżekutibbli li jkun nominat bħala u mbagħad program.c. 266 00:16:06,000 --> 00:16:11,000 U inti tista 'ukoll tagħmel jagħmlu programm, u tara kif fl-ewwel 2 każijiet 267 00:16:11,000 --> 00:16:15,000 Nressaq. C, u fil-tielet wieħed I biss għandhom programmi? 268 00:16:15,000 --> 00:16:18,000 Yeah, inti fil-fatt ma għandhom ipoġġu. C meta tuża tagħmel. 269 00:16:18,000 --> 00:16:22,000 Inkella l-kumpilatur huwa attwalment għaddejjin biex Yell fi inti. 270 00:16:22,000 --> 00:16:24,000 U wkoll, I do not know jekk inti guys ftakar, 271 00:16:24,000 --> 00:16:29,000 iżda ħafna drabi aħna wkoll użat-lcs50 or-lm. 272 00:16:29,000 --> 00:16:31,000 Dan huwa msejjaħ jgħaqqdu. 273 00:16:31,000 --> 00:16:35,000 Hija biss jirrakkonta l-kumpilatur li int ser tuża dawk libreriji hemm dritt, 274 00:16:35,000 --> 00:16:39,000 hekk jekk inti tixtieq li tuża cs50.h inti fil-fatt għandek tip 275 00:16:39,000 --> 00:16:43,000 clang program.c-lcs50. 276 00:16:43,000 --> 00:16:45,000 Jekk inti ma tagħmel dan, l-kumpilatur mhux se tkun taf 277 00:16:45,000 --> 00:16:50,000 li inti qed tuża dawk il-funzjonijiet fl-cs50.h. 278 00:16:50,000 --> 00:16:52,000 U meta inti tixtieq li run program tiegħek għandek 2 għażliet. 279 00:16:52,000 --> 00:16:57,000 Jekk inti ma program.c clang inti ma tagħti l-isem lill-programm tiegħek. 280 00:16:57,000 --> 00:17:01,000 Int għandek run jużaw. / A.out. 281 00:17:01,000 --> 00:17:06,000 A.out huwa isem standard li clang jagħti program tiegħek jekk inti ma tagħtiha isem. 282 00:17:06,000 --> 00:17:11,000 Inkella int se tagħmel. / Programm jekk inti taw l-isem għall-programm tiegħek, 283 00:17:11,000 --> 00:17:15,000 u wkoll jekk inti ma tagħmel l-programm isem li programm hija se tikseb 284 00:17:15,000 --> 00:17:23,000 huwa diġà se jiġu programmati-istess isem bħall-fajl c. 285 00:17:23,000 --> 00:17:26,000 Imbagħad aħna tkellem dwar it-tipi ta 'data u data. 286 00:17:26,000 --> 00:17:31,000 >> Bażikament tipi tad-data huma l-istess ħaġa bħat kaxxi ftit huma jużaw 287 00:17:31,000 --> 00:17:35,000 li żżomm il-valuri, sabiex it-tipi tad-data huma attwalment bħad pokemons. 288 00:17:35,000 --> 00:17:39,000 Huma daħlu fil-daqsijiet kollha u t-tipi. 289 00:17:39,000 --> 00:17:43,000 I do not know jekk dan analoġija jagħmel sens. 290 00:17:43,000 --> 00:17:46,000 Id-daqs tad-data fil-fatt jiddependi fuq l-arkitettura magna. 291 00:17:46,000 --> 00:17:49,000 Il-daqsijiet tad-data li jien ser juru hawn 292 00:17:49,000 --> 00:17:53,000 huma attwalment għal magna 32-bit, li huwa l-każ ta 'apparat tagħna, 293 00:17:53,000 --> 00:17:56,000 imma jekk int attwalment kodifikazzjoni Mac tiegħek jew Windows ukoll 294 00:17:56,000 --> 00:17:59,000 probabbilment int ser jkollhom magna 64-bit, 295 00:17:59,000 --> 00:18:03,000 sabiex tiftakar li l-daqsijiet tad-data li jien ser juru hawn 296 00:18:03,000 --> 00:18:06,000 huma għall-magna 32-bit. 297 00:18:06,000 --> 00:18:08,000 L-ewwel waħda li rajna kienet int, 298 00:18:08,000 --> 00:18:10,000 li huwa pjuttost sempliċi. 299 00:18:10,000 --> 00:18:13,000 Tuża int taħżen numru sħiħ. 300 00:18:13,000 --> 00:18:16,000 Rajna wkoll il-karattru, il-karatteristiċi. 301 00:18:16,000 --> 00:18:20,000 Jekk inti tixtieq li tuża ittra jew simbolu ftit int probabbilment se jużaw char. 302 00:18:20,000 --> 00:18:26,000 A char tkun 1 byte, li jfisser 8 bits, bħal Lexi qal. 303 00:18:26,000 --> 00:18:31,000 Bażikament għandna Tabella ASCII li tkun 256 304 00:18:31,000 --> 00:18:34,000 kombinazzjonijiet possibbli ta '0s u 1s, 305 00:18:34,000 --> 00:18:37,000 u mbagħad meta inti tip ta 'char li għaddej biex tittraduċi 306 00:18:37,000 --> 00:18:44,000 l-karattru li inti inputs numru li għandek fil-tabella ASCII, bħal Lexi qal. 307 00:18:44,000 --> 00:18:48,000 Għandna wkoll il-float, li nużaw biex taħżen numri deċimali. 308 00:18:48,000 --> 00:18:53,000 Jekk inti tixtieq li jagħżlu 3.14, per eżempju, int ser tuża float 309 00:18:53,000 --> 00:18:55,000 jew doppju li għandu aktar preċiżjoni. 310 00:18:55,000 --> 00:18:57,000 A float għandha 4 bytes. 311 00:18:57,000 --> 00:19:01,000 A doppja għandha 8 bytes, hekk l-unika differenza hija l-preċiżjoni. 312 00:19:01,000 --> 00:19:04,000 Għandna wkoll fit-tul li jintuża għall-interi, 313 00:19:04,000 --> 00:19:09,000 u tista 'tara għal magna 32-bit l-int u fit jkollhom l-istess daqs, 314 00:19:09,000 --> 00:19:13,000 għalhekk ma verament jagħmel sens għall-użu fit-tul fil-magna 32-bit. 315 00:19:13,000 --> 00:19:17,000 >> Imma jekk inti qed tuża magna Mac u 64-bit, attwalment twila għandu daqs 8, 316 00:19:17,000 --> 00:19:19,000 hekk huwa verament jiddependi fuq l-arkitettura. 317 00:19:19,000 --> 00:19:22,000 Għall-magni 32-bit ma jagħmilx sens li jużaw twil verament. 318 00:19:22,000 --> 00:19:25,000 U mbagħad twil twil, min-naħa l-oħra, għandha 8 bytes, 319 00:19:25,000 --> 00:19:30,000 għalhekk huwa tajjeb ħafna jekk inti tixtieq li jkollok numru sħiħ itwal. 320 00:19:30,000 --> 00:19:34,000 U fl-aħħarnett, aħna għandna spag, li huwa attwalment * char, 321 00:19:34,000 --> 00:19:37,000 li huwa pointer għal char. 322 00:19:37,000 --> 00:19:40,000 Huwa faċli ħafna li wieħed jaħseb li d-daqs tas-sekwenza se tkun simili 323 00:19:40,000 --> 00:19:42,000 in-numru ta 'karattri li inti għandek hemmhekk, 324 00:19:42,000 --> 00:19:45,000 imma attwalment l-* char innifsu 325 00:19:45,000 --> 00:19:49,000 għandha l-daqs ta 'pointer għal char, li huwa 4 bytes. 326 00:19:49,000 --> 00:19:52,000 Id-daqs ta '* char huwa 4 bytes. 327 00:19:52,000 --> 00:19:56,000 Ma jimpurtax jekk għandek kelma żgħira jew ittra jew xejn. 328 00:19:56,000 --> 00:19:58,000 Huwa ser jkun ta '4 bytes. 329 00:19:58,000 --> 00:20:01,000 Aħna wkoll tgħallmu ftit dwar ikkastjar, 330 00:20:01,000 --> 00:20:04,000 sabiex tistgħu taraw, jekk ikollok, per eżempju, programm li tgħid 331 00:20:04,000 --> 00:20:08,000 int x = 3 u mbagħad printf ("% d", x / 2) 332 00:20:08,000 --> 00:20:12,000 do you guys taf dak li għaddej biex jistampaw fuq l-iskrin? 333 00:20:12,000 --> 00:20:14,000 >> Xi ħadd? >> [Studenti] 2. 334 00:20:14,000 --> 00:20:16,000 1. >> 1, yeah. 335 00:20:16,000 --> 00:20:20,000 Meta tagħmel 3/2 li għaddej biex tikseb 1.5, 336 00:20:20,000 --> 00:20:24,000 iżda peress li aħna qed jużaw numru sħiħ li għaddej biex jinjora l-parti deċimali, 337 00:20:24,000 --> 00:20:26,000 u int se jkollhom 1. 338 00:20:26,000 --> 00:20:29,000 Jekk inti ma tridx li jiġri x'tista 'tagħmel, per eżempju, 339 00:20:29,000 --> 00:20:33,000 huwa jiddikjara float y = x. 340 00:20:33,000 --> 00:20:40,000 Imbagħad x li jintuża biex tkun 3 huwa issa se tkun 3.000 fil-y. 341 00:20:40,000 --> 00:20:44,000 U allura inti tistax tistampa l-y / 2. 342 00:20:44,000 --> 00:20:50,000 Fil-fatt, I għandu jkollhom 2. hemmhekk. 343 00:20:50,000 --> 00:20:55,000 Huwa ser tagħmel 3.00/2.00, 344 00:20:55,000 --> 00:20:58,000 u int ser tikseb 1.5. 345 00:20:58,000 --> 00:21:06,000 U aħna għandna dan f 0.2 biss li jistaqsu għal 2 unitajiet deċimali fil-parti deċimali. 346 00:21:06,000 --> 00:21:12,000 Jekk għandek .3 f li għaddej biex ikollhom attwalment 1.500. 347 00:21:12,000 --> 00:21:16,000 Jekk huwa 2 li għaddej biex tkun 1.50. 348 00:21:16,000 --> 00:21:18,000 Għandna wkoll il-każ hawnhekk. 349 00:21:18,000 --> 00:21:22,000 Jekk inti tagħmel float x = 3.14 u mbagħad inti x printf 350 00:21:22,000 --> 00:21:24,000 int ser tikseb 3.14. 351 00:21:24,000 --> 00:21:29,000 U jekk inti tagħmel x = l-int ta x, 352 00:21:29,000 --> 00:21:34,000 li jfisser jittrattaw x bħala int u inti print x issa 353 00:21:34,000 --> 00:21:36,000 int ser ikollhom 3.00. 354 00:21:36,000 --> 00:21:38,000 Does li jagħmel sens? 355 00:21:38,000 --> 00:21:41,000 Għaliex int l-ewwel trattament x bħala numru sħiħ, hekk int jinjora l-parti deċimali, 356 00:21:41,000 --> 00:21:45,000 u allura int istampar x. 357 00:21:45,000 --> 00:21:47,000 U fl-aħħarnett, inti tista 'ukoll tagħmel dan, 358 00:21:47,000 --> 00:21:52,000 int x = 65, u allura inti tiddikjara char c = x, 359 00:21:52,000 --> 00:21:56,000 u mbagħad jekk inti print-c int fil-fatt se tikseb 360 00:21:56,000 --> 00:21:59,000 A, sabiex bażikament dak li qed isir hawn 361 00:21:59,000 --> 00:22:02,000 huwa traduzzjoni tal-eqreb numru sħiħ fil-karattru, 362 00:22:02,000 --> 00:22:05,000 bħad-Tabella ASCII ma. 363 00:22:05,000 --> 00:22:08,000 Aħna wkoll tkellem dwar l-operaturi matematika. 364 00:22:08,000 --> 00:22:14,000 Ħafna minnhom huma pjuttost sempliċi, hekk +, -, *, /, 365 00:22:14,000 --> 00:22:20,000 u wkoll tkellimna dwar mod, li huwa l-bqija ta 'diviżjoni ta' 2 numri. 366 00:22:20,000 --> 00:22:23,000 Jekk għandek 10% 3, per eżempju, 367 00:22:23,000 --> 00:22:27,000 dan ifisser jaqsam 10 sat-3, u dak li huwa l-bqija? 368 00:22:27,000 --> 00:22:30,000 Huwa ser tkun l-1, dan huwa attwalment utli ħafna għal ħafna tal-programmi. 369 00:22:30,000 --> 00:22:38,000 Għal Vigenère u Caesar jien pretty żgur li kollha inti guys użat mod. 370 00:22:38,000 --> 00:22:43,000 Dwar operaturi matematika, ikunu attenti ħafna meta tgħaqqad * u /. 371 00:22:43,000 --> 00:22:48,000 >> Per eżempju, jekk inti tagħmel (3/2) * 2 dak li huma inti se tikseb? 372 00:22:48,000 --> 00:22:50,000 [Studenti] 2. 373 00:22:50,000 --> 00:22:54,000 Yeah, 2, minħabba li 3/2 se tkun 1.5, 374 00:22:54,000 --> 00:22:57,000 imma peress li inti qed tagħmel l-operazzjonijiet bejn 2 interi 375 00:22:57,000 --> 00:22:59,000 int fil-fatt biss ser tikkunsidra 1, 376 00:22:59,000 --> 00:23:03,000 u mbagħad 1 * 2 se tkun 2, sabiex ikun ferm, ferm attent 377 00:23:03,000 --> 00:23:07,000 meta tagħmel aritmetika ma interi minħabba 378 00:23:07,000 --> 00:23:12,000 inti tista 'tikseb li 2 = 3, f'dak il-każ. 379 00:23:12,000 --> 00:23:14,000 U wkoll ikunu attenti ħafna dwar preċedenza. 380 00:23:14,000 --> 00:23:21,000 Għandek normalment juża parentesi biex tkun żgur li int taf dak li qed isir. 381 00:23:21,000 --> 00:23:27,000 Xi shortcuts utli, naturalment, wieħed huwa i + + jew + i = 1 382 00:23:27,000 --> 00:23:30,000 jew bl-użu + =. 383 00:23:30,000 --> 00:23:34,000 Dan huwa l-istess ħaġa bħat tagħmel i = i + 1. 384 00:23:34,000 --> 00:23:39,000 Tista 'wkoll tagħmel i - jew i - = 1, 385 00:23:39,000 --> 00:23:42,000 li huwa l-istess ħaġa kif i = i -1, 386 00:23:42,000 --> 00:23:46,000 inti guys xi ħaġa jużaw ħafna fl għal linji, mill-inqas. 387 00:23:46,000 --> 00:23:52,000 Ukoll, għal *, jekk tuża * = u jekk inti tagħmel, per eżempju, 388 00:23:52,000 --> 00:23:57,000 i * = 2 hija l-istess ħaġa kif qal i = i * 2, 389 00:23:57,000 --> 00:23:59,000 u l-istess ħaġa għall-diviżjoni. 390 00:23:59,000 --> 00:24:08,000 Jekk inti do i / = 2 huwa l-istess ħaġa bħat i = i / 2. 391 00:24:08,000 --> 00:24:10,000 >> Issa dwar il-funzjonijiet. 392 00:24:10,000 --> 00:24:13,000 You guys tgħallmu li l-funzjonijiet huma strateġija tajba ħafna biex jiffranka l-kodiċi 393 00:24:13,000 --> 00:24:16,000 filwaqt li qed programmazzjoni, hekk jekk inti tixtieq li twettaq il-kompitu istess 394 00:24:16,000 --> 00:24:20,000 fil-kodiċi ġdid u għal darb'oħra, probabbilment inti tixtieq li tuża l-funzjoni 395 00:24:20,000 --> 00:24:25,000 biss sabiex inti ma għandekx kopja u paste tal-kodiċi fuq u aktar mill-ġdid. 396 00:24:25,000 --> 00:24:28,000 Attwalment, prinċipali hija funzjoni, u meta I nuruk l-format ta 'funzjoni 397 00:24:28,000 --> 00:24:32,000 int ser tara li dan huwa pjuttost ovvju. 398 00:24:32,000 --> 00:24:35,000 Aħna nużaw ukoll il-funzjonijiet minn xi libreriji, 399 00:24:35,000 --> 00:24:39,000 per eżempju, printf, GetIn, li hija mill-bibljoteka CS50, 400 00:24:39,000 --> 00:24:43,000 u funzjonijiet oħra bħall toupper. 401 00:24:43,000 --> 00:24:46,000 Kollha ta 'dawn il-funzjonijiet huma attwalment implimentati fil-libreriji oħra, 402 00:24:46,000 --> 00:24:49,000 u meta inti tpoġġi dawk il-fajls irbit fil-bidu tal-programm tiegħek 403 00:24:49,000 --> 00:24:53,000 int tgħid tista 'jekk jogħġbok agħtini l-kodiċi għal dawk il-funzjonijiet 404 00:24:53,000 --> 00:24:57,000 so I ma jkollhom jimplimentawhom mill myself? 405 00:24:57,000 --> 00:25:00,000 U inti tista 'wkoll tikteb funzjonijiet tiegħek, hekk meta tibda programmazzjoni 406 00:25:00,000 --> 00:25:04,000 inti tirrealizza li l-libreriji ma jkollhomx l-funzjonijiet kollha li għandek bżonn. 407 00:25:04,000 --> 00:25:10,000 Għall-pset aħħar, per eżempju, aħna kiteb tiġbed, ġirja, u Lookup, 408 00:25:10,000 --> 00:25:13,000 u huwa ħafna, importanti ħafna li tkun tista 'tikteb funzjonijiet 409 00:25:13,000 --> 00:25:17,000 għaliex huma utli, u nużaw il-ħin kollu fl-ipprogrammar, 410 00:25:17,000 --> 00:25:19,000 u dan jiffranka ħafna ta 'kodiċi. 411 00:25:19,000 --> 00:25:21,000 Il-format ta 'funzjoni huwa dan wieħed. 412 00:25:21,000 --> 00:25:24,000 Għandna tip ritorn fil-bidu. X'inhu t-tip ritorn? 413 00:25:24,000 --> 00:25:27,000 Huwa biss meta l-funzjoni tiegħek se terġa 'lura. 414 00:25:27,000 --> 00:25:29,000 Jekk għandek funzjoni, per eżempju, fatturi, 415 00:25:29,000 --> 00:25:31,000 li ser jikkalkula fattorjali ta 'numru sħiħ, 416 00:25:31,000 --> 00:25:34,000 probabbilment li għaddej biex jirritorna numru sħiħ ukoll. 417 00:25:34,000 --> 00:25:37,000 Imbagħad it-tip ritorn se tkun int. 418 00:25:37,000 --> 00:25:41,000 Printf attwalment għandha vojt tip ritorn 419 00:25:41,000 --> 00:25:43,000 għax int ma jirritornaw xejn. 420 00:25:43,000 --> 00:25:45,000 Inti sempliċiment istampar affarijiet li l-iskrin 421 00:25:45,000 --> 00:25:48,000 u jaqtagħhom l-funzjoni wara. 422 00:25:48,000 --> 00:25:51,000 Imbagħad għandek l-isem tal-funzjoni li inti tista 'tagħżel. 423 00:25:51,000 --> 00:25:55,000 Inti għandek tkun ftit raġonevoli, bħal ma jagħżlu isem bħall xyz 424 00:25:55,000 --> 00:25:58,000 jew simili x2f. 425 00:25:58,000 --> 00:26:02,000 Ipprova biex tpatti isem li jagħmel sens. 426 00:26:02,000 --> 00:26:04,000 >> Per eżempju, jekk huwa fatturi, jgħidu fattorjali. 427 00:26:04,000 --> 00:26:08,000 Jekk huwa funzjoni li ser jiġbed xi ħaġa, isem li bih tiġbed. 428 00:26:08,000 --> 00:26:11,000 U allura aħna għandna l-parametri, li jissejjħu wkoll argumenti, 429 00:26:11,000 --> 00:26:14,000 li huma bħall-riżorsi dik il-funzjoni tiegħek jeħtieġ 430 00:26:14,000 --> 00:26:17,000 mill-kodiċi tiegħek biex twettaq ix-xogħol tagħha. 431 00:26:17,000 --> 00:26:20,000 Jekk inti tixtieq li tikkalkula l-fattorjali ta 'numru 432 00:26:20,000 --> 00:26:23,000 probabbilment għandek bżonn li jkollhom numru biex tikkalkola fattorjali. 433 00:26:23,000 --> 00:26:27,000 Wieħed mill-argumenti li int ser jkollhom huwa n-numru innifsu. 434 00:26:27,000 --> 00:26:31,000 U allura li għaddej biex jagħmlu xi ħaġa u jirritorna l-valur fl-aħħar 435 00:26:31,000 --> 00:26:35,000 sakemm huwa funzjoni null. 436 00:26:35,000 --> 00:26:37,000 Ejja naraw eżempju. 437 00:26:37,000 --> 00:26:40,000 Jekk irrid li jiktbu funzjoni li tiġbor il-numri fil-firxa tan-numri interi, 438 00:26:40,000 --> 00:26:43,000 ewwel nett, it-tip ritorn se tkun int 439 00:26:43,000 --> 00:26:46,000 minħabba I jkollhom firxa ta 'numri interi. 440 00:26:46,000 --> 00:26:51,000 U mbagħad jien ser ikollhom l-isem funzjoni simili sumArray, 441 00:26:51,000 --> 00:26:54,000 u mbagħad li għaddej biex tieħu l-array innifsu, li nums int, 442 00:26:54,000 --> 00:26:58,000 u mbagħad it-tul tal-firxa so I know kif ħafna numri għandi qosor. 443 00:26:58,000 --> 00:27:02,000 Imbagħad I għandhom initialize somma varjabbli msejħa, per eżempju, għal 0, 444 00:27:02,000 --> 00:27:08,000 u kull darba nara element fil-firxa I għandha żżid li somma, so I ma 'għall-loop. 445 00:27:08,000 --> 00:27:15,000 Eżatt bħal Lexi qal, inti i int = 0, i 00:27:20,000 U għal kull element fil-firxa għamilt somma + = nums [i], 447 00:27:20,000 --> 00:27:24,000 u mbagħad I lura s-somma, dan huwa sempliċi ħafna, u dan jiffranka ħafna ta 'kodiċi 448 00:27:24,000 --> 00:27:28,000 jekk inti qed tuża din il-funzjoni ta 'lott ta' drabi. 449 00:27:28,000 --> 00:27:32,000 Imbagħad ħadna ħarsa lejn kundizzjonijiet. 450 00:27:32,000 --> 00:27:38,000 Aħna jekk, inkella, u jekk inkella. 451 00:27:38,000 --> 00:27:42,000 Ejja naraw dak li huwa d-differenza bejn dawk. 452 00:27:42,000 --> 00:27:45,000 Agħti ħarsa lejn dawn il-kodiċijiet 2. X'inhi d-differenza bejniethom? 453 00:27:45,000 --> 00:27:49,000 L-ewwel waħda kienet bażikament 'l-kodiċijiet li inti tgħid 454 00:27:49,000 --> 00:27:51,000 jekk numru huwa +, -, jew 0. 455 00:27:51,000 --> 00:27:55,000 L-ewwel wieħed jgħid jekk huwa> 0 allura huwa pożittiv. 456 00:27:55,000 --> 00:28:00,000 Jekk huwa = għal 0 allura huwa 0, u jekk huwa <0 allura huwa negattiv. 457 00:28:00,000 --> 00:28:04,000 >> U l-ieħor qed tagħmel jekk, inkella jekk, inkella. 458 00:28:04,000 --> 00:28:07,000 Id-differenza bejn it-tnejn hija li dan huwa wieħed attwalment se 459 00:28:07,000 --> 00:28:13,000 jiċċekkjaw jekk> 0, <0 jew 0 = tliet darbiet, 460 00:28:13,000 --> 00:28:17,000 hekk jekk ikollok in-numru 2, per eżempju, li għaddej biex jiġu hawn u jgħidu 461 00:28:17,000 --> 00:28:21,000 jekk (x> 0), u li għaddej biex ngħid iva, so I jistampaw pożittiv. 462 00:28:21,000 --> 00:28:25,000 Iżda anke jekk naf li huwa> 0 u mhuwiex ser ikun 0 jew <0 463 00:28:25,000 --> 00:28:29,000 Jien xorta se tagħmel huwa 0, huwa <0, 464 00:28:29,000 --> 00:28:33,000 hekk jien attwalment għaddejjin ġewwa ta 'IFs li jien ma kellhomx 465 00:28:33,000 --> 00:28:38,000 minħabba I diġà jafu li huwa mhux ser tissodisfa xi wieħed minn dawn il-kundizzjonijiet. 466 00:28:38,000 --> 00:28:41,000 I jistgħu jużaw il-jekk, inkella jekk, inkella dikjarazzjoni. 467 00:28:41,000 --> 00:28:45,000 Bażikament tgħid jekk x = 0 I jistampaw il-pożittiv. 468 00:28:45,000 --> 00:28:48,000 Jekk mhuwiex, jien ser wkoll tittestja dan. 469 00:28:48,000 --> 00:28:51,000 Jekk huwa 2 ma jien ser tagħmel dan. 470 00:28:51,000 --> 00:28:54,000 Bażikament jekk kelli x = 2 inti ngħid 471 00:28:54,000 --> 00:28:57,000 jekk (x> 0), iva, hekk jistampa dan. 472 00:28:57,000 --> 00:29:00,000 Issa li naf li huwa> 0 u li hija ssodisfat l-ewwel jekk 473 00:29:00,000 --> 00:29:02,000 Jien lanqas se run dan il-kodiċi. 474 00:29:02,000 --> 00:29:09,000 Il-kodiċi tmur aktar malajr, fil-fatt, 3 darbiet aktar mgħaġġla jekk tuża dan. 475 00:29:09,000 --> 00:29:11,000 Aħna wkoll tgħallmu dwar u u jew. 476 00:29:11,000 --> 00:29:15,000 Jien mhux ser jgħaddu dan għaliex Lexi diġà tkellem dwar minnhom. 477 00:29:15,000 --> 00:29:17,000 Huwa biss il-&& u | | operatur. 478 00:29:17,000 --> 00:29:21,000 >> L-unika ħaġa I ser ngħid huwa jkun attent meta inti għandek 3 kundizzjonijiet. 479 00:29:21,000 --> 00:29:24,000 Uża parentesi għaliex dan huwa ħafna konfużjoni meta għandek kundizzjoni 480 00:29:24,000 --> 00:29:27,000 u ieħor waħda jew ieħor. 481 00:29:27,000 --> 00:29:30,000 Uża parentesi biss biex tkun ċert li l-kondizzjonijiet tiegħek jagħmel sens 482 00:29:30,000 --> 00:29:34,000 għaliex f'dak il-każ, per eżempju, tista 'timmaġina li 483 00:29:34,000 --> 00:29:38,000 jista 'jkun l-ewwel kundizzjoni u waħda jew l-oħra 484 00:29:38,000 --> 00:29:41,000 jew il-kondizzjonijiet 2 magħquda fi u 485 00:29:41,000 --> 00:29:45,000 jew t-tielet wieħed, hekk biss ikunu attenti. 486 00:29:45,000 --> 00:29:48,000 U fl-aħħarnett, aħna tkellem dwar switches. 487 00:29:48,000 --> 00:29:53,000 A swiċċ huwa utli ħafna meta jkollok varjabbli. 488 00:29:53,000 --> 00:29:55,000 Ejja ngħidu li għandek varjabbli bħall n 489 00:29:55,000 --> 00:29:59,000 li jista 'jkun 0, 1, jew 2, u għal kull wieħed minn dawk każijiet 490 00:29:59,000 --> 00:30:01,000 int ser twettaq xogħol. 491 00:30:01,000 --> 00:30:04,000 Tista 'tgħid jaqilbu l-varjabbli, u dan jindika li l- 492 00:30:04,000 --> 00:30:08,000 il-valur allura huwa simili value1 jien ser tagħmel dan, 493 00:30:08,000 --> 00:30:12,000 u mbagħad I break, li jfisser jien mhux ser tħares lejn kwalunkwe mill-każijiet l-oħra 494 00:30:12,000 --> 00:30:15,000 għaliex aħna diġà sodisfatti f'dak il-każ 495 00:30:15,000 --> 00:30:20,000 u mbagħad value2 u fuq hekk, u jien ukoll jista 'jkollhom bidla default. 496 00:30:20,000 --> 00:30:24,000 Dan ifisser li jekk ma tissodisfax xi waħda mill-każijiet li kelli 497 00:30:24,000 --> 00:30:29,000 li jien se jagħmlu xi ħaġa oħra, iżda li mhux obbligatorju. 498 00:30:29,000 --> 00:30:36,000 Li kollox għalija. Issa ejja jkollhom Tommy. 499 00:30:36,000 --> 00:30:41,000 Kull dritt, din se tkun Ġimgħa 3-ish. 500 00:30:41,000 --> 00:30:45,000 Dawn huma xi wħud mis-suġġetti aħna ser tkun li jkopru, kripto, l-ambitu, arrays, eċċetera. 501 00:30:45,000 --> 00:30:49,000 Just kelma malajr dwar kripto. Aħna mhux se martell din id-dar. 502 00:30:49,000 --> 00:30:52,000 >> Għamilna dan fil pset 2, iżda għall-kwizz tagħmel żgur li int taf id-differenza 503 00:30:52,000 --> 00:30:54,000 bejn il-cipher Caesar u l-cipher Vigenère, 504 00:30:54,000 --> 00:30:57,000 kif kemm ta 'dawk tax-xogħol ciphers u dak li huwa simili għall-kriptaġġ 505 00:30:57,000 --> 00:30:59,000 u t-test decrypt juża dawk ciphers 2. 506 00:30:59,000 --> 00:31:03,000 Ftakar, il-cipher Caesar sempliċiment tiġi assenjata b'rotazzjoni kull karattru bl-istess ammont, 507 00:31:03,000 --> 00:31:06,000 tagħmel żgur li int mod bin-numru ta 'ittri fl-alfabett. 508 00:31:06,000 --> 00:31:09,000 U l-cipher Vigenère, min-naħa l-oħra, tiġi assenjata b'rotazzjoni kull karattru 509 00:31:09,000 --> 00:31:12,000 b'ammont differenti, sabiex minflok qal 510 00:31:12,000 --> 00:31:15,000 kull mdawwar karattru minn 3 Vigenère se jduru kull karattru 511 00:31:15,000 --> 00:31:17,000 b'ammont differenti skond xi keyword 512 00:31:17,000 --> 00:31:20,000 fejn kull ittra fil-keyword jirrappreżenta xi ammont differenti 513 00:31:20,000 --> 00:31:26,000 biex idawwar il-test ċar minn. 514 00:31:26,000 --> 00:31:28,000 Ejja ewwel tkellem dwar firxa varjabbli. 515 00:31:28,000 --> 00:31:30,000 Hemm 2 tipi differenti ta 'varjabbli. 516 00:31:30,000 --> 00:31:33,000 Aħna varjabbli lokali, u dawn ser jiġu definiti 517 00:31:33,000 --> 00:31:36,000 barra ta 'prinċipali jew barra minn kwalunkwe funzjoni jew blokka, 518 00:31:36,000 --> 00:31:39,000 u dawn se jkunu aċċessibbli kullimkien fil-programm tiegħek. 519 00:31:39,000 --> 00:31:41,000 Jekk għandek funzjoni u f'dik il-funzjoni hija loop filwaqt 520 00:31:41,000 --> 00:31:44,000 il-varjabbli globali kbira hija aċċessibbli kullimkien. 521 00:31:44,000 --> 00:31:48,000 A varjabbli lokali, min-naħa l-oħra, huwa scoped għall-post fejn hija definita. 522 00:31:48,000 --> 00:31:53,000 >> Jekk għandek funzjoni hawn, per eżempju, aħna għandna dan g funzjoni, 523 00:31:53,000 --> 00:31:56,000 u ġewwa ta 'g hemm varjabbli hawnhekk imsejjaħ y, 524 00:31:56,000 --> 00:31:58,000 u dan ifisser li din hija varjabbli lokali. 525 00:31:58,000 --> 00:32:00,000 Anki jekk din il-varjabbli huwa msejjaħ y 526 00:32:00,000 --> 00:32:03,000 u din il-varjabbli huwa msejjaħ y dawn il-funzjonijiet 2 527 00:32:03,000 --> 00:32:06,000 m'għandhom l-ebda idea dak varjazzjonijiet lokali ta 'xulxin huma. 528 00:32:06,000 --> 00:32:10,000 Min-naħa l-oħra, sa hawn ngħidu int x = 5, 529 00:32:10,000 --> 00:32:12,000 u dan huwa barra mill-ambitu ta 'xi funzjoni. 530 00:32:12,000 --> 00:32:16,000 Hu l barra mill-ambitu ta 'prinċipali, għalhekk din hija varjabbli globali. 531 00:32:16,000 --> 00:32:20,000 Dan ifisser li ġewwa ta 'dawn il-funzjonijiet 2 meta ngħid x - jew x + + 532 00:32:20,000 --> 00:32:26,000 Jien aċċess għall-x istess biha din y u dan y huma varjabbli differenti. 533 00:32:26,000 --> 00:32:30,000 Dik hija d-differenza bejn varjabbli globali u varjabbli lokali. 534 00:32:30,000 --> 00:32:33,000 Safejn huwa kkonċernat id-disinn, xi kultant huwa probabbilment idea aħjar 535 00:32:33,000 --> 00:32:37,000 li jżomm varjabbli lokali kull meta inti tista 'possibilment 536 00:32:37,000 --> 00:32:39,000 peress li jkollhom mazz ta 'varjabbli globali jistgħu jiksbu verament konfużjoni. 537 00:32:39,000 --> 00:32:42,000 Jekk għandek mazz ta 'funzjonijiet kollha li jimmodifika l-istess ħaġa 538 00:32:42,000 --> 00:32:45,000 inti tista tinsa dak li jekk din il-funzjoni aċċidentalment timmodifika dan globali, 539 00:32:45,000 --> 00:32:47,000 u din il-funzjoni l-oħra ma tkunx taf dwar dan, 540 00:32:47,000 --> 00:32:50,000 u dan ma jiksbu pjuttost konfuża kif ikollok il-kodiċi aktar. 541 00:32:50,000 --> 00:32:53,000 Żamma varjabbli lokali kull meta inti tista 'possibilment 542 00:32:53,000 --> 00:32:56,000 hu d-disinn biss tajjeb. 543 00:32:56,000 --> 00:33:00,000 Arrays, ftakar, huma sempliċiment listi ta 'elementi tal-istess tip. 544 00:33:00,000 --> 00:33:04,000 Ġewwa tal-IK ma tistax jkollhom lista bħal 1, 2.0, bonjour. 545 00:33:04,000 --> 00:33:06,000 Aħna biss ma tistax tagħmel dan. 546 00:33:06,000 --> 00:33:11,000 >> Meta aħna jiddikjara firxa fis-C l-elementi kollha għandhom ikunu tal-istess tip. 547 00:33:11,000 --> 00:33:14,000 Hawnhekk I jkollhom firxa ta '3 numri interi. 548 00:33:14,000 --> 00:33:18,000 Hawn irrid niċċara-tul tal-firxa, imma jekk jien biss li tiddikjara li f'dan sintassi 549 00:33:18,000 --> 00:33:21,000 fejn I jispeċifikaw x'hemm l-elementi kollha huma I m'għandhomx bżonn din teknikament 3. 550 00:33:21,000 --> 00:33:25,000 Il-kompilatur huwa intelliġenti biżżejjed biex insemmu kemm hu kbir il-firxa għandu jkun. 551 00:33:25,000 --> 00:33:28,000 Issa meta I rridu nġibu jew sett il-valur ta 'firxa 552 00:33:28,000 --> 00:33:30,000 dan huwa l-sintassi li tagħmel dan. 553 00:33:30,000 --> 00:33:33,000 Dan fil-fatt se timmodifika l-tieni element tal-firxa għaliex, ftakar, 554 00:33:33,000 --> 00:33:36,000 numerazzjoni jibda b'0, mhux fl-1. 555 00:33:36,000 --> 00:33:42,000 Jekk irrid jaqra dak il-valur nista 'ngħid xi ħaġa simili int x = array [1]. 556 00:33:42,000 --> 00:33:44,000 Jew jekk irrid li jistabbilixxu dan il-valur, bħal jien tagħmel hawn, 557 00:33:44,000 --> 00:33:47,000 Nista 'ngħid firxa [1] = 4. 558 00:33:47,000 --> 00:33:50,000 Dak iż-żmien aċċess elementi mill-indiċi tagħhom 559 00:33:50,000 --> 00:33:52,000 jew il-pożizzjoni tagħhom jew meta jkunu fil-firxa, 560 00:33:52,000 --> 00:33:57,000 u li elenkar jibda fil 0. 561 00:33:57,000 --> 00:34:00,000 Nistgħu wkoll arrays ta 'arrays, 562 00:34:00,000 --> 00:34:03,000 u dan jissejjaħ firxa multi-dimensjonali. 563 00:34:03,000 --> 00:34:05,000 Meta aħna għandna firxa multi-dimensjonali 564 00:34:05,000 --> 00:34:07,000 dan ifisser li jista 'jkollna xi ħaġa bħal ringieli u kolonni, 565 00:34:07,000 --> 00:34:11,000 u dan huwa biss mod wieħed ta 'viżwalizzazzjoni dan jew taħseb dwar dan. 566 00:34:11,000 --> 00:34:14,000 Meta I jkollhom firxa multi-dimensjonali li jfisser jien ser tibda jeħtieġu 567 00:34:14,000 --> 00:34:17,000 aktar minn 1 indiċi għaliex jekk ikolli grid 568 00:34:17,000 --> 00:34:19,000 biss qal dak ringiela int fil ma tagħtina numru. 569 00:34:19,000 --> 00:34:22,000 Li verament biss se tagħtina lista ta 'numri. 570 00:34:22,000 --> 00:34:25,000 Ejja ngħidu għandi din array hawn. 571 00:34:25,000 --> 00:34:30,000 I jkollhom firxa imsejħa grid, u jien qal huwa s 2 ringieli u kolonni 3, 572 00:34:30,000 --> 00:34:32,000 u għalhekk dan huwa mod wieħed ta 'viżwalizzazzjoni dan. 573 00:34:32,000 --> 00:34:37,000 Meta I say I rridu nġibu l-element fi [1] [2] 574 00:34:37,000 --> 00:34:41,000 dan ifisser li minħabba li dawn huma ringieli ewwel u mbagħad kolonni 575 00:34:41,000 --> 00:34:44,000 Jien ser jaqbżu l-ringiela 1 peress li jien qal 1. 576 00:34:44,000 --> 00:34:49,000 >> Imbagħad Jien ser jiġi maż hawn għall-kolonna 2, u jien ser jiksbu l-valur 6. 577 00:34:49,000 --> 00:34:51,000 Jagħmel sens? 578 00:34:51,000 --> 00:34:55,000 Multi-dimensjonali arrays, ftakar, huma teknikament biss firxa ta 'arrays. 579 00:34:55,000 --> 00:34:57,000 Jista 'jkollna arrays ta' arrays ta 'arrays. 580 00:34:57,000 --> 00:35:00,000 Nistgħu jibqgħu għaddejjin, imma verament mod wieħed biex jaħsbu dwar 581 00:35:00,000 --> 00:35:03,000 kif din qed stabbiliti u x'inhu għaddej huwa li Ħares 582 00:35:03,000 --> 00:35:09,000 fil-grid bħal dan. 583 00:35:09,000 --> 00:35:12,000 Meta aħna jgħaddu matriċi għall-funzjonijiet, dawn qed tmur biex jaġixxu 584 00:35:12,000 --> 00:35:16,000 ftit differenti minn meta aħna jgħaddu varjabbli regolari għall-funzjonijiet 585 00:35:16,000 --> 00:35:18,000 bħal jgħaddu int jew float. 586 00:35:18,000 --> 00:35:21,000 Meta aħna jgħaddu tipproċessa tipi int jew char jew xi waħda minn dawn id-data l-oħra 587 00:35:21,000 --> 00:35:24,000 aħna biss ħa ħarsa lejn jekk il-funzjoni jimmodifika 588 00:35:24,000 --> 00:35:28,000 il-valur ta 'dak il-varjabbli li l-bidla mhux se jitkabbru up 589 00:35:28,000 --> 00:35:32,000 għall-funzjoni sejħa. 590 00:35:32,000 --> 00:35:35,000 Ma 'firxa, min-naħa l-oħra, li se jiġri. 591 00:35:35,000 --> 00:35:39,000 Jekk I jgħaddu fil-firxa għal xi funzjoni u li l-funzjoni bidliet wħud mill-elementi, 592 00:35:39,000 --> 00:35:43,000 meta nasal lura sa l-funzjoni li hija imsejħa 593 00:35:43,000 --> 00:35:47,000 firxa tiegħi issa hija se tkun differenti, u l-vokabularju għal dak 594 00:35:47,000 --> 00:35:50,000 arrays huwa huma mgħoddija permezz ta 'referenza, kif Ser naraw aktar tard. 595 00:35:50,000 --> 00:35:53,000 Dan huwa relatat ma 'kif pointers xogħol, fejn dawn it-tipi ta' data bażika, 596 00:35:53,000 --> 00:35:55,000 min-naħa l-oħra, huma mgħoddija minn valur. 597 00:35:55,000 --> 00:35:59,000 >> Aħna jistgħu jaħsbu li bħala li tagħmel kopja ta 'xi varjabbli u mbagħad tgħaddi fil-kopja. 598 00:35:59,000 --> 00:36:01,000 Ma jimpurtax dak li nagħmlu ma 'dak varjabbli. 599 00:36:01,000 --> 00:36:06,000 Il-funzjoni sejħa mhux se jkun jaf li kien inbidel. 600 00:36:06,000 --> 00:36:10,000 Arrays huma biss ftit differenti f'dan ir-rigward. 601 00:36:10,000 --> 00:36:13,000 Per eżempju, kif aħna biss raw, prinċipali hija sempliċement funzjoni 602 00:36:13,000 --> 00:36:15,000 li tista 'tieħu fi 2 argumenti. 603 00:36:15,000 --> 00:36:20,000 L-ewwel argument li l-funzjoni ewlenija hija argc, jew in-numru ta 'argumenti, 604 00:36:20,000 --> 00:36:23,000 u t-tieni argument huwa msejjaħ ARGV, 605 00:36:23,000 --> 00:36:27,000 u dawk li huma l-valuri reali ta 'dawn l-argumenti. 606 00:36:27,000 --> 00:36:30,000 Ejja ngħidu għandi programm imsejjaħ this.c, 607 00:36:30,000 --> 00:36:34,000 u jien ngħid jagħmlu dan, u jien ser imexxu dan fil-linja tal-kmand. 608 00:36:34,000 --> 00:36:38,000 Issa li jgħaddu f'xi argumenti għall-programm tiegħi imsejħa 'dan, 609 00:36:38,000 --> 00:36:42,000 Nista 'ngħid xi ħaġa simili. / Dan huwa cs 50. 610 00:36:42,000 --> 00:36:45,000 Dan huwa dak li aħna nimmaġinaw David tagħmel kull jum fit-terminal. 611 00:36:45,000 --> 00:36:48,000 Imma issa l-ġewwa funzjoni prinċipali ta 'dak il-programm 612 00:36:48,000 --> 00:36:52,000 għandha dawn il-valuri, sabiex argc hija 4. 613 00:36:52,000 --> 00:36:56,000 Jista 'jkun ftit konfuża għaliex verament aħna qed biss tgħaddi fil hija cs 50. 614 00:36:56,000 --> 00:36:58,000 Dak biss 3. 615 00:36:58,000 --> 00:37:02,000 Imma ftakar li l-ewwel element tal ARGV jew l-ewwel argument 616 00:37:02,000 --> 00:37:05,000 huwa l-isem tal-funzjoni stess. 617 00:37:05,000 --> 00:37:07,190 Allura dan ifisser li għandna 4 affarijiet hawn, 618 00:37:07,190 --> 00:37:10,530 u l-ewwel element se tkun. / dan. 619 00:37:10,530 --> 00:37:12,970 U dan se jkun rappreżentati kif string. 620 00:37:12,970 --> 00:37:18,590 Imbagħad l-elementi li fadal huma dak li aħna ittajpjat fil wara l-isem tal-programm. 621 00:37:18,590 --> 00:37:22,720 Hekk biss bħala twarrib, kif aħna probabbilment raw fil pset 2, 622 00:37:22,720 --> 00:37:28,780 ftakar li l-sekwenza 50 hija ≠-50 numru sħiħ. 623 00:37:28,780 --> 00:37:32,520 Allura aħna ma tista 'tgħid xi ħaġa simili, "int x = ARGV 3." 624 00:37:32,520 --> 00:37:36,470 >> Li jinsab biss mhux ser jagħmel sens, għax din hija sekwenza, u dan huwa numru sħiħ. 625 00:37:36,470 --> 00:37:38,510 Mela jekk inti tixtieq li jikkonvertu bejn il-2, ftakar, aħna qed tmur biex 626 00:37:38,510 --> 00:37:40,810 jkollhom din il-funzjoni magic imsejħa atoi. 627 00:37:40,810 --> 00:37:46,270 Li jieħu string u jirritorna l-eqreb numru sħiħ rappreżentati ġewwa ta 'dak sekwenza. 628 00:37:46,270 --> 00:37:48,360 Allura dak żball faċli li tagħmel fuq il-kwizz, 629 00:37:48,360 --> 00:37:51,590 biss ħsieb li dan awtomatikament se jkun it-tip korrett. 630 00:37:51,590 --> 00:37:53,860 Iżda biss jafu li dawn dejjem se jkun kordi 631 00:37:53,860 --> 00:38:00,920 anke jekk l-sekwenza fih biss numru sħiħ jew karattru jew float. 632 00:38:00,920 --> 00:38:03,380 Allura issa ejja nitkellmu dwar running time. 633 00:38:03,380 --> 00:38:06,700 Meta aħna għandna kollha dawn algoritmi li jagħmlu dawn l-affarijiet crazy, 634 00:38:06,700 --> 00:38:11,580 isir verament utli li tistaqsi l-mistoqsija, "Kemm indumu dawn jieħdu?" 635 00:38:11,580 --> 00:38:15,500 Aħna jirrappreżentaw dak ma 'xi ħaġa imsejħa notazzjoni asintotiku. 636 00:38:15,500 --> 00:38:18,430 Allura dan ifisser li - ukoll, ejja ngħidu li nagħtu algoritmu tagħna 637 00:38:18,430 --> 00:38:20,840 xi tassew, tassew, tassew kbar input. 638 00:38:20,840 --> 00:38:23,840 Aħna tixtieq li tistaqsi l-mistoqsija, "Kemm idum huwa se jieħu? 639 00:38:23,840 --> 00:38:26,370 Kemm passi se tieħu algoritmu tagħna biex imexxu 640 00:38:26,370 --> 00:38:29,980 bħala funzjoni tad-daqs tal-input? " 641 00:38:29,980 --> 00:38:33,080 Allura l-ewwel mod aħna jistgħu jiddeskrivu ħin taħdem huwa ma big O. 642 00:38:33,080 --> 00:38:35,380 U dan huwa żmien tagħna running-agħar każ. 643 00:38:35,380 --> 00:38:38,590 Mela jekk irridu li sort firxa, u nagħtu algoritmu tagħna firxa 644 00:38:38,590 --> 00:38:41,000 li l f'ordni dixxendenti meta dan għandu jkun sabiex axxendenti, 645 00:38:41,000 --> 00:38:43,130 li għaddej biex tkun l-agħar każ. 646 00:38:43,130 --> 00:38:49,800 Dan huwa ta 'fuq tagħna marbut fit-tul ta' żmien massimu algoritmu tagħna se tieħu. 647 00:38:49,800 --> 00:38:54,740 Min-naħa l-oħra, din Ω se tiddeskrivi aħjar każ running time. 648 00:38:54,740 --> 00:38:58,210 Allura jekk aħna nagħtu firxa diġà magħżula għal algoritmu issortjar, 649 00:38:58,210 --> 00:39:00,940 kemm se jdum dan jieħu biex sort dan? 650 00:39:00,940 --> 00:39:06,610 U dan, imbagħad, jiddeskrivi aktar baxx bound fuq running time. 651 00:39:06,610 --> 00:39:10,980 Allura hawn huma biss ftit kliem li jiddeskrivu xi drabi komuni running. 652 00:39:10,980 --> 00:39:13,120 Dawn huma f'ordni axxendenti. 653 00:39:13,120 --> 00:39:16,060 Il-ħin l-aktar mgħaġġla running għandna huwa msejjaħ kostanti. 654 00:39:16,060 --> 00:39:19,800 >> Dan ifisser l-ebda kwistjoni kif ħafna elementi li nagħtu algoritmu tagħna, 655 00:39:19,800 --> 00:39:22,280 ebda kwistjoni kemm hu kbir firxa tagħna hija, issortjar hija 656 00:39:22,280 --> 00:39:26,510 jew tagħmel kwalunkwe aħna qed tagħmel l-firxa dejjem se tieħu l-istess ammont ta 'ħin. 657 00:39:26,510 --> 00:39:30,270 Allura aħna jistgħu jirrappreżentaw biss li ma '1, li hija kostanti. 658 00:39:30,270 --> 00:39:32,410 Aħna wkoll ħares lejn run time logaritmika. 659 00:39:32,410 --> 00:39:34,800 Allura xi ħaġa bħal tfittxija binarja hija logaritmika, 660 00:39:34,800 --> 00:39:37,140 fejn aħna maqtugħin il-problema fil nofs kull darba 661 00:39:37,140 --> 00:39:40,970 u mbagħad l-affarijiet biss jiksbu ogħla minn hemm. 662 00:39:40,970 --> 00:39:43,580 U jekk int qatt tikteb O ta 'kwalunkwe algoritmu fatturi, 663 00:39:43,580 --> 00:39:47,850 inti probabilment ma għandhom jikkunsidraw dan bħala ġurnata tax-xogħol tiegħek. 664 00:39:47,850 --> 00:39:53,910 Meta nqabblu drabi running huwa importanti li wieħed iżomm f'moħħu dawn l-affarijiet. 665 00:39:53,910 --> 00:39:57,760 Mela jekk ikolli algoritmu li l-O (n), u xi ħadd ieħor 666 00:39:57,760 --> 00:40:03,590 għandha algoritmu ta 'O (2n) dawn huma attwalment asimptotikalment ekwivalenti. 667 00:40:03,590 --> 00:40:06,590 Allura jekk aħna jimmaġina n li hemm numru kbir bħal eleventy biljun: 668 00:40:06,590 --> 00:40:13,090 hekk meta aħna qed jitqabblu eleventy biljun għal xi ħaġa bħal eleventy biljun + 3, 669 00:40:13,090 --> 00:40:17,640 f'daqqa waħda li 3 ma verament tagħmel differenza kbira jibqgħalu. 670 00:40:17,640 --> 00:40:20,980 C'est pourquoi aħna qed tmur biex jibdew jikkunsidraw dawn l-affarijiet li huma ekwivalenti. 671 00:40:20,980 --> 00:40:24,220 Allura affarijiet bħal dawn il-kostanti hawn, hemm 2 x dan, jew li żżid 3, 672 00:40:24,220 --> 00:40:27,180 dawn huma biss kostanti, u dawn ser qatra up. 673 00:40:27,180 --> 00:40:32,480 Allura hu għalhekk li kollha 3 ta 'dawn il-ħinijiet run huma l-istess kif qal li qed O (n). 674 00:40:32,480 --> 00:40:37,490 Bl-istess mod, jekk ikollna 2 darbiet run oħra, ejja ngħidu O (n ³ + 2n ²), nistgħu żid 675 00:40:37,490 --> 00:40:42,070 + N, + 7, u mbagħad għandna ieħor run time li jinsab biss O (³ n). 676 00:40:42,070 --> 00:40:46,290 għal darb'oħra, dawn huma l-istess ħaġa għaliex dawn - dawn mhumiex l-istess. 677 00:40:46,290 --> 00:40:49,840 Dawn huma l-istess affarijiet, sorry. Allura dawn huma l-istess għaliex 678 00:40:49,840 --> 00:40:53,090 dan ³ n hija se jiddominaw din ² 2n. 679 00:40:53,090 --> 00:40:59,130 >> Dak li mhux l-istess ħaġa hija jekk aħna run żminijiet bħal O (³ n) u O (n ²) 680 00:40:59,130 --> 00:41:02,820 għaliex dan ³ n hija ħafna akbar minn dan ² n. 681 00:41:02,820 --> 00:41:05,470 Mela jekk ikollna esponenti, f'daqqa waħda dan jibda jimpurtax, 682 00:41:05,470 --> 00:41:08,280 iżda meta aħna qed biss jittrattaw ma 'fatturi kif aħna up hawn, 683 00:41:08,280 --> 00:41:12,810 allura huwa mhuwiex ser jimpurtax għaliex huma biss se jitilqu. 684 00:41:12,810 --> 00:41:16,760 Ejja tagħti ħarsa lejn uħud mill-algoritmi Rajna s'issa 685 00:41:16,760 --> 00:41:19,260 u jitkellmu dwar run time tagħhom. 686 00:41:19,260 --> 00:41:23,850 L-ewwel mod ta 'tiftix għal numru f'lista, li rajna, kien tfittxija lineari. 687 00:41:23,850 --> 00:41:26,950 U l-implimentazzjoni ta 'tfittxija lineari huwa super faċli. 688 00:41:26,950 --> 00:41:30,490 Aħna biss jkollhom lista, u aħna qed tmur biex tħares lejn kull element uniku fil-lista 689 00:41:30,490 --> 00:41:34,260 sakemm insibu l-għadd aħna qed infittxu. 690 00:41:34,260 --> 00:41:38,370 Allura dan ifisser li fl-agħar każ, dan O (n). 691 00:41:38,370 --> 00:41:40,860 U l-agħar każ hawnhekk jista 'jkun jekk l-element huwa 692 00:41:40,860 --> 00:41:45,710 l-aħħar element, imbagħad bl-użu tfittxija lineari irridu nħarsu lejn kull element wieħed 693 00:41:45,710 --> 00:41:50,180 sakemm aħna jiksbu l-aħħar wieħed sabiex tkun taf li hija kienet effettivament fil-lista. 694 00:41:50,180 --> 00:41:52,910 Ma nistgħux biss jagħtu up fin-nofs u jgħidu, "Huwa probabbilment ma jkunx hemm." 695 00:41:52,910 --> 00:41:55,980 Bil tfittxija lineari irridu nħarsu lejn il-ħaġa sħiħa. 696 00:41:55,980 --> 00:41:59,090 Il-ħin tmexxija aħjar każ, min-naħa l-oħra, huwa kostanti 697 00:41:59,090 --> 00:42:04,200 għaliex fil-każ aħjar l-element aħna qed tfittex huwa biss l-ewwel wieħed fil-lista. 698 00:42:04,200 --> 00:42:08,930 Allura huwa għaddej li jqarrbuna eżattament 1 pass, ebda kwistjoni kemm hu kbir il-lista hija 699 00:42:08,930 --> 00:42:12,140 jekk aħna qed ifittxu l-ewwel element kull darba. 700 00:42:12,140 --> 00:42:15,390 >> Allura meta inti tfittex, ftakar, dan ma jeħtieġx li lista tagħna jiġu magħżula. 701 00:42:15,390 --> 00:42:19,430 Għaliex aħna qed sempliċiment se tħares fuq kull element wieħed, u ma verament kwistjoni 702 00:42:19,430 --> 00:42:23,560 f'liema ordni dawk l-elementi huma pulzieri 703 00:42:23,560 --> 00:42:28,110 A algoritmu tfittxija aktar intelliġenti hija xi ħaġa simili tiftix binarju. 704 00:42:28,110 --> 00:42:31,500 Ftakar, l-implimentazzjoni ta 'tfittxija binarja huwa meta inti qed tmur biex 705 00:42:31,500 --> 00:42:34,320 iżommu tħares lejn l-nofs tal-lista. 706 00:42:34,320 --> 00:42:38,000 U għaliex aħna qed tħares lejn l-nofs, aħna jeħtieġu li l-lista magħżula 707 00:42:38,000 --> 00:42:40,580 jew inkella ma nafux fejn l-nofs huwa, u għandna li tħares fuq 708 00:42:40,580 --> 00:42:44,480 il-lista sħiħa li jsibuha, u mbagħad f'dak il-punt aħna qed biss ħela ta 'ħin. 709 00:42:44,480 --> 00:42:48,480 Mela jekk għandna lista magħżula u insibu l-nofs, aħna qed tmur biex iqabblu l-nofs 710 00:42:48,480 --> 00:42:51,590 għall-element aħna qed infittxu. 711 00:42:51,590 --> 00:42:54,640 Jekk huwa għoli wisq, allura nistgħu ninsew il-nofs tal-lemin 712 00:42:54,640 --> 00:42:57,810 għaliex aħna nafu li jekk element tagħna huwa diġà għoli wisq 713 00:42:57,810 --> 00:43:01,080 u kollox għad-dritt ta 'dan l-element huwa saħansitra ogħla, 714 00:43:01,080 --> 00:43:02,760 allura ma kellniex bżonn li wieħed iħares hemm aktar. 715 00:43:02,760 --> 00:43:05,430 Fejn min-naħa l-oħra, jekk l-element tagħna huwa baxx wisq, 716 00:43:05,430 --> 00:43:08,700 nafu kollox ix-xellug ta 'dan l-element huwa wkoll ftit wisq, 717 00:43:08,700 --> 00:43:11,390 għalhekk ma verament jagħmel sens li wieħed iħares hemm, lanqas. 718 00:43:11,390 --> 00:43:15,760 Dan il-mod, ma 'kull pass u kull darba li aħna nħarsu lejn il-punt tan-nofs tal-lista, 719 00:43:15,760 --> 00:43:19,060 aħna qed tmur biex tnaqqas il-problema tagħna fil nofs minħabba f'daqqa nafu 720 00:43:19,060 --> 00:43:23,040 mazz sħiħ ta 'numri li ma jistgħux ikunu l-waħda aħna qed tfittex. 721 00:43:23,040 --> 00:43:26,950 >> F'dan pseudocode dan se tfittex xi ħaġa bħal din, 722 00:43:26,950 --> 00:43:30,990 u għaliex aħna qed qtugħ il-lista fil nofs kull wieħed ħin, 723 00:43:30,990 --> 00:43:34,920 run jumps tagħna agħar każ time minn lineari sa logaritmika. 724 00:43:34,920 --> 00:43:39,260 Hekk f'daqqa għandna log-in passi sabiex isibu element fil-lista. 725 00:43:39,260 --> 00:43:42,460 Il-ħin tmexxija aħjar każ, għalkemm, għadu kostanti 726 00:43:42,460 --> 00:43:45,180 għaliex issa, ejja biss jgħidu li l-element aħna qed infittxu huwa 727 00:43:45,180 --> 00:43:48,380 dejjem l-nofs eżatt tal-lista oriġinali. 728 00:43:48,380 --> 00:43:52,080 Allura nistgħu jikbru lista tagħna kemm kbar kif irridu, imma jekk l-element aħna qed tfittex huwa fil-nofs, 729 00:43:52,080 --> 00:43:54,910 allura huwa biss se jqarrbuna 1 pass. 730 00:43:54,910 --> 00:44:00,920 Allura hu għalhekk li aħna qed O (log n) u Ω (1) jew kostanti. 731 00:44:00,920 --> 00:44:04,510 Ejja tmexxi effettivament tfittxija binarja fuq din il-lista. 732 00:44:04,510 --> 00:44:08,020 Mela ejja ngħidu li aħna qed ifittxu għall-element 164. 733 00:44:08,020 --> 00:44:11,650 L-ewwel ħaġa aħna se tagħmel hu li ssib l-punt fokali ta 'din lista. 734 00:44:11,650 --> 00:44:15,060 Huwa biss hekk jiġri li l-punt fokali se jaqgħu bejn dawn in-numri 2, 735 00:44:15,060 --> 00:44:18,960 hekk ejja biss jgħidu b'mod arbitrarju, kull darba li l-punt fokali taqa 'bejn 2 numri, 736 00:44:18,960 --> 00:44:21,150 ejja biss tondi sa. 737 00:44:21,150 --> 00:44:24,330 Aħna biss bżonn tagħmel ċert li nagħmlu dan kull pass tar-rotta. 738 00:44:24,330 --> 00:44:29,040 Allura aħna qed tmur biex round up, u aħna qed tmur biex jgħidu li 161 huwa l-nofs tal-lista tagħna. 739 00:44:29,040 --> 00:44:34,640 Allura 161 <164, u kull element għall-xellug tal 161 740 00:44:34,640 --> 00:44:39,120 huwa wkoll <164, hekk aħna nafu li huwa mhux ser tgħinna fil-livelli kollha 741 00:44:39,120 --> 00:44:42,690 biex tibda 'tfittex hawn fuq minħabba li l-element aħna qed tfittex ma jistax ikun hemm. 742 00:44:42,690 --> 00:44:47,060 Allura dak li nistgħu nagħmlu huwa li nistgħu tinsieh li nofs tax-xellug sħiħ tal-lista, 743 00:44:47,060 --> 00:44:51,700 u issa tikkunsidra biss mid-dritt ta 'l-onward 161. 744 00:44:51,700 --> 00:44:54,050 >> Għalhekk għal darb'oħra, dan huwa l-punt fokali; ejja biss tondi sa. 745 00:44:54,050 --> 00:44:56,260 Issa 175 hija kbira wisq. 746 00:44:56,260 --> 00:44:59,180 Allura aħna nafu mhuwiex ser tgħinna tfittex hawn jew hawn, 747 00:44:59,180 --> 00:45:06,610 sabiex inkunu nistgħu biss tarmi dan bogħod, u eventwalment aħna ser tolqot l-164. 748 00:45:06,610 --> 00:45:10,560 Kwalunkwe mistoqsijiet dwar tfittxija binarja? 749 00:45:10,560 --> 00:45:14,180 Ejja jimxu fuq minn tiftix permezz lista diġà magħżula 750 00:45:14,180 --> 00:45:17,660 li fil-fatt tieħu lista ta 'numri fi kwalunkwe ordni 751 00:45:17,660 --> 00:45:20,960 u jagħmlu dik il-lista f'ordni axxendenti. 752 00:45:20,960 --> 00:45:24,060 L-algoritmu 1 ħarisna lejn kienet imsejħa tip bużżieqa. 753 00:45:24,060 --> 00:45:27,300 U dan ikun aktar sempliċi ta 'l-algoritmi rajna. 754 00:45:27,300 --> 00:45:32,970 Sort Bubble jgħid li meta xi elementi 2 ġewwa l-lista huma barra mill-post, 755 00:45:32,970 --> 00:45:36,500 li jfisser li hemm numru akbar lejn ix-xellug ta 'numru iktar baxx, 756 00:45:36,500 --> 00:45:40,190 allura aħna qed tmur biex tpartit lilhom, minħabba li tfisser li l-lista tkun 757 00:45:40,190 --> 00:45:42,860 "Aktar magħżula" milli kienet qabel. 758 00:45:42,860 --> 00:45:45,180 U aħna qed biss jmorru biex ikomplu dan il-proċess ġdid u għal darb'oħra u għal darb'oħra 759 00:45:45,180 --> 00:45:52,100 sakemm eventwalment it-tip elementi ta 'bużżieqa li post korretta tagħhom u għandna lista magħżula. 760 00:45:52,100 --> 00:45:57,230 >> Il-ħin run ta 'dan se tkun O (n ²). Għaliex? 761 00:45:57,230 --> 00:46:00,370 Ukoll, minħabba li fl-agħar każ, aħna qed tmur biex tieħu kull element, u 762 00:46:00,370 --> 00:46:04,570 aħna qed tmur biex jispiċċaw tqabbilha għal kull element ieħor fil-lista. 763 00:46:04,570 --> 00:46:08,030 Iżda fil-każ aħjar, għandna lista diġà magħżula, l-sort bubble 764 00:46:08,030 --> 00:46:12,230 biss se jmorru permezz darba, jgħidu "Nope. I ma tagħmel l-ebda swaps, hekk jien jsir." 765 00:46:12,230 --> 00:46:17,410 Allura aħna għandna ħin aħjar każ tmexxija ta Ω (n). 766 00:46:17,410 --> 00:46:20,680 Ejja run tip bużżieqa fuq lista. 767 00:46:20,680 --> 00:46:23,560 Jew l-ewwel, ejja biss ħarsa lejn uħud pseudocode verament malajr. 768 00:46:23,560 --> 00:46:28,160 Aħna rridu li ngħidu li rridu li jżommu rekord ta ', f'kull iterazzjoni tal-linja, 769 00:46:28,160 --> 00:46:32,190 jżommu rekord ta 'jekk jew le aħna mibdula xi elementi. 770 00:46:32,190 --> 00:46:37,610 Allura l-raġuni għal dan hija, aħna qed tmur biex tieqaf meta aħna ma biddlu xi elementi. 771 00:46:37,610 --> 00:46:41,980 Allura fil-bidu ta 'linja tagħna aħna ma biddlu xejn, hekk aħna ser ngħidu li l-foloz. 772 00:46:41,980 --> 00:46:47,170 Issa, aħna qed tmur biex jgħaddu l-lista u jqabblu l-element i f'dak l-element i + 1 773 00:46:47,170 --> 00:46:50,310 u jekk huwa l-każ li jkun hemm numru akbar lejn ix-xellug ta 'numru iżgħar, 774 00:46:50,310 --> 00:46:52,310 allura aħna qed biss jmorru li tpartit lilhom. 775 00:46:52,310 --> 00:46:54,490 >> U allura aħna qed tmur biex niftakru li aħna biddlu element. 776 00:46:54,490 --> 00:46:58,900 Dan ifisser li għandna bżonn li jgħaddu l-lista mill-inqas 1 aktar ħin 777 00:46:58,900 --> 00:47:02,160 minħabba li l-kundizzjoni li aħna waqaf huwa meta l-lista kollha hija diġà magħżula, 778 00:47:02,160 --> 00:47:04,890 jiġifieri aħna ma saru ebda tpartit. 779 00:47:04,890 --> 00:47:09,960 Allura hu għalhekk li kundizzjoni tagħna stabbiliti hawn huwa "filwaqt li ċerti elementi jkunu ġew skambjati." 780 00:47:09,960 --> 00:47:13,720 Allura issa ejja biss ħarsa lejn din taħdem fuq lista. 781 00:47:13,720 --> 00:47:16,640 Għandi l-lista 5,0,1,6,4. 782 00:47:16,640 --> 00:47:19,850 Sort Bubble se tibda fit-triq kollha lejn ix-xellug, u li għaddej biex iqabblu 783 00:47:19,850 --> 00:47:24,700 l-elementi i, so 0 sa i + 1, li hija l-element 1. 784 00:47:24,700 --> 00:47:29,020 Huwa ser ngħid, sew 5> 0, iżda issa dritt 5 huwa lejn ix-xellug, 785 00:47:29,020 --> 00:47:32,500 hekk għandi bżonn biex tpartit l-5 u l-0. 786 00:47:32,500 --> 00:47:35,470 Meta I tpartit lilhom, f'daqqa waħda niġi din il-lista differenti. 787 00:47:35,470 --> 00:47:38,260 Issa 5> 1, hekk aħna qed tmur biex tpartit lilhom. 788 00:47:38,260 --> 00:47:42,160 5 ma tkunx> 6, hekk aħna ma bżonn li tagħmel xejn hawn. 789 00:47:42,160 --> 00:47:46,690 Iżda 6> 4, għalhekk għandna bżonn li tpartit. 790 00:47:46,690 --> 00:47:49,740 Għal darb'oħra, għandna bżonn li jgħaddi mill-lista kollha biex eventwalment jiskopru 791 00:47:49,740 --> 00:47:52,330 li dawn huma out of order; aħna tpartit minnhom, 792 00:47:52,330 --> 00:47:57,120 u f'dan il-punt għandna bżonn li tgħaddi minn ġos-lista ħin 1 aktar 793 00:47:57,120 --> 00:48:05,390 biex tiżgura li kollox huwa fl-ordni tagħha, u fuq din it-tip bużżieqa punt tkun spiċċat. 794 00:48:05,390 --> 00:48:10,720 A algoritmu differenti għat-teħid xi elementi u l-għażla tagħhom huwa tip ta 'għażla. 795 00:48:10,720 --> 00:48:15,740 L-idea wara tip għażla hija li aħna qed tmur biex jibnu porzjon magħżula tal-lista 796 00:48:15,740 --> 00:48:18,150 1 element fi żmien. 797 00:48:18,150 --> 00:48:23,170 >> U l-mod kif aħna qed tmur biex tagħmel dan huwa billi tibni l-segment tax-xellug tal-lista. 798 00:48:23,170 --> 00:48:27,510 U bażikament, kull - fuq kull pass, aħna qed tmur biex tieħu l-element iżgħar fadlilna 799 00:48:27,510 --> 00:48:32,310 li għadha ma ġietx magħżula għadhom, u aħna qed tmur biex jimxu fis dak is-segment magħżula. 800 00:48:32,310 --> 00:48:35,850 Dan ifisser li għandna bżonn li kontinwament issib l-element mhux magħżul minimu 801 00:48:35,850 --> 00:48:40,720 u imbagħad ħu l-element minimu u tpartit ma 'kwalunkwe 802 00:48:40,720 --> 00:48:45,090 xellug-aktar element li ma jkunx magħżula. 803 00:48:45,090 --> 00:48:50,890 Il-ħin run ta 'dan se tkun O (n ²) minħabba fl-agħar każ 804 00:48:50,890 --> 00:48:55,070 għandna bżonn biex iqabblu kull element uniku għal kull element ieħor. 805 00:48:55,070 --> 00:48:59,250 Għaliex aħna qed tgħid li jekk aħna tibda fil-nofs tax-xellug tal-lista, għandna bżonn 806 00:48:59,250 --> 00:49:02,970 jgħaddu mill-segment dritt kollu li ssib l-element iżgħar. 807 00:49:02,970 --> 00:49:05,430 U mbagħad, għal darb'oħra, għandna bżonn li jmorru fuq il-segment dritt kollu u 808 00:49:05,430 --> 00:49:08,210 iżommu għaddejjin fuq li aktar u aktar u aktar mill-ġdid. 809 00:49:08,210 --> 00:49:11,350 Li għaddej biex tkun ² n. Aħna ser bżonn għal ġewwa linja ta 'ieħor għall-loop 810 00:49:11,350 --> 00:49:13,350 li jissuġġerixxi ² n. 811 00:49:13,350 --> 00:49:16,530 Fil-ħsieb aħjar każ, ejja ngħidu aħna jagħtih lista diġà magħżula; 812 00:49:16,530 --> 00:49:19,270 aħna fil-fatt ma tagħmel ebda aħjar minn ² n. 813 00:49:19,270 --> 00:49:21,730 Minħabba sort għażla m'għandha l-ebda mod sabiex tkun taf dak 814 00:49:21,730 --> 00:49:25,540 l-element minimu huwa biss il-wieħed I jiġri li tkun tħares lejn. 815 00:49:25,540 --> 00:49:28,970 Hija xorta teħtieġ li tagħmel ċert li dan huwa effettivament il-minimu. 816 00:49:28,970 --> 00:49:31,670 >> U l-unika mod biex ikun żgurat li huwa l-minimu, jużaw dan algoritmu, 817 00:49:31,670 --> 00:49:34,640 hi li tħares lejn kull element wieħed ġdid. 818 00:49:34,640 --> 00:49:38,420 Allura verament, jekk inti tagħti dan - jekk inti tagħti sort għażla lista diġà magħżula, 819 00:49:38,420 --> 00:49:42,720 huwa mhux se jagħmlu xi aħjar minn jtuha lista li ma jintgħażlux s'issa. 820 00:49:42,720 --> 00:49:46,320 Mill-mod, jekk jiġri li jkun il-każ li xi ħaġa O (xi ħaġa) 821 00:49:46,320 --> 00:49:50,640 u l-omega 'xi ħaġa, nistgħu biss jgħidu aktar konċiż li huwa θ' xi ħaġa. 822 00:49:50,640 --> 00:49:52,760 Mela jekk inti tara li toħroġ kullimkien, dan huwa dak li biss mezzi. 823 00:49:52,760 --> 00:49:57,580 >> Jekk xi ħaġa hija theta 'n ², huwa kemm O kbir (n ²) u Ω (n ²). 824 00:49:57,580 --> 00:49:59,790 So każ aħjar u l-agħar każ, ma tagħmel differenza, 825 00:49:59,790 --> 00:50:04,400 l-algoritmu se tagħmel l-istess ħaġa kull darba. 826 00:50:04,400 --> 00:50:06,610 Allura dan huwa dak pseudocode għall tip għażla tista 'look like. 827 00:50:06,610 --> 00:50:10,630 Aħna bażikament se ngħid li nixtieq li ttenni fuq il-lista 828 00:50:10,630 --> 00:50:15,180 mix-xellug għal-lemin, u fuq kull iterazzjoni tal-linja, jien ser jimxu 829 00:50:15,180 --> 00:50:19,780 l-element minimu fis dan il-porzjon magħżula tal-lista. 830 00:50:19,780 --> 00:50:23,260 U ladarba I jiċċaqalqu xi ħaġa hemmhekk, jien qatt bżonn tħares lejn dan l-element ġdid. 831 00:50:23,260 --> 00:50:28,600 Minħabba malli I swap element fil lill-segment tax-xellug tal-lista, huwa magħżula 832 00:50:28,600 --> 00:50:32,600 għaliex aħna qed tagħmel dak kollu f'ordni axxendenti bl-użu minimums. 833 00:50:32,600 --> 00:50:38,740 Allura aħna qal, okay, aħna qed fil-pożizzjoni i, u għandna bżonn li nħarsu lejn l-elementi kollha 834 00:50:38,740 --> 00:50:42,260 għad-dritt ta 'i sabiex isibu l-minimu. 835 00:50:42,260 --> 00:50:46,150 Allura dan ifisser li rridu nħarsu mill i + 1 sat-tmiem tal-lista. 836 00:50:46,150 --> 00:50:51,610 U issa, jekk l-element li aħna qed attwalment tħares lejn huwa inqas minn minimu tagħna s'issa, 837 00:50:51,610 --> 00:50:54,190 li, ftakar, aħna qed jibdew l-off minimu li jkun biss 838 00:50:54,190 --> 00:50:57,020 kwalunkwe element aħna qed bħalissa; jien ser jassumi li hija l-minimu. 839 00:50:57,020 --> 00:51:00,270 Jekk I isibu element li huwa iżgħar minn dak, allura jien se ngħid, okay, 840 00:51:00,270 --> 00:51:02,700 ukoll, I sabu minimu ġdid. 841 00:51:02,700 --> 00:51:06,080 Jien ser tiftakar fejn dak il-minimu kien. 842 00:51:06,080 --> 00:51:09,560 >> Allura issa, ladarba stajt marret permezz ta 'dak is-segment mhux magħżul id-dritt, 843 00:51:09,560 --> 00:51:16,690 Nista 'ngħid jien ser tpartit l-element minimu bl-element li huwa fil-pożizzjoni i. 844 00:51:16,690 --> 00:51:21,100 Li għaddej biex jibnu lista tiegħi, porzjon magħżula tiegħi tal-lista mix-xellug għal-lemin, 845 00:51:21,100 --> 00:51:25,190 u aħna qatt ma bżonn li nħarsu lejn element ġdid ladarba huwa f'dak il-porzjon. 846 00:51:25,190 --> 00:51:27,930 Ladarba konna biddlu dan. 847 00:51:27,930 --> 00:51:30,260 Mela ejja jimxu tip għażla fuq din il-lista. 848 00:51:30,260 --> 00:51:38,220 L-element blu hawn se tkun l-i, u l-element aħmar se tkun l-element minimu. 849 00:51:38,220 --> 00:51:41,570 So i tibda fit-triq kollha lejn ix-xellug tal-lista, hekk fil-5. 850 00:51:41,570 --> 00:51:44,610 Issa għandna bżonn issib l-element mhux magħżul minimu. 851 00:51:44,610 --> 00:51:49,480 Allura aħna ngħidu 0 <5, 0 ikun minimu ġdid tiegħi. 852 00:51:49,480 --> 00:51:53,820 >> Imma ma nistax tieqaf hemm, għaliex anki jekk nistgħu jirrikonoxxu li 0 hija l-iżgħar, 853 00:51:53,820 --> 00:51:59,390 għandna bżonn biex imexxu permezz ta 'kull element ieħor tal-lista biex jiġi żgurat. 854 00:51:59,390 --> 00:52:01,760 Allura 1 hija akbar, 6 hija akbar, 4 huwa akbar. 855 00:52:01,760 --> 00:52:05,850 Dan ifisser li wara li tħares lejn kollha ta 'dawn l-elementi, stajt determinat 0 hija l-iżgħar. 856 00:52:05,850 --> 00:52:09,800 Allura jien ser tpartit l-5 u l-0. 857 00:52:09,800 --> 00:52:15,480 Ladarba I tpartit li, jien ser tikseb lista ġdida, u naf li jien qatt ma jeħtieġ li tħares lejn dak 0 ġdid 858 00:52:15,480 --> 00:52:19,380 minħabba li ladarba stajt biddlu dan, stajt magħżula hija u aħna qed isir. 859 00:52:19,380 --> 00:52:22,730 Issa huwa biss hekk jiġri li l-element blu hija għal darb'oħra l-5, 860 00:52:22,730 --> 00:52:26,030 u għandna bżonn li nħarsu lejn il-1, is-6 u l-4 ta 'jiddetermina li 1 861 00:52:26,030 --> 00:52:31,520 huwa l-element minimu iżgħar, hekk aħna ser tpartit l-1 u l-5. 862 00:52:31,520 --> 00:52:36,890 Għal darb'oħra, għandna bżonn li nħarsu lejn - jikkomparaw il-5 għall-6 u l-4, 863 00:52:36,890 --> 00:52:39,830 u aħna qed tmur biex tpartit l-4 u l-5, u finalment, iqabblu 864 00:52:39,830 --> 00:52:45,740 dawn in-numri 2 u tpartit lilhom sakemm aħna nikseb lista magħżula tagħna. 865 00:52:45,740 --> 00:52:49,730 Kwalunkwe mistoqsijiet dwar it-tip ta 'għażla? 866 00:52:49,730 --> 00:52:56,420 Okay. Ejja jimxu għas-suġġett aħħar hawnhekk, u li hija recursion. 867 00:52:56,420 --> 00:52:59,810 >> Recursion, ftakar, huwa dan il-ħaġa meta verament fejn funzjoni 868 00:52:59,810 --> 00:53:02,740 ripetutament jitlob huwa stess. 869 00:53:02,740 --> 00:53:05,620 Allura fil f'xi punt, filwaqt li fuction tagħna huwa ripetutament ssejjaħ lilha nnifisha, 870 00:53:05,620 --> 00:53:10,100 jeħtieġ li jkun hemm xi punt li fih aħna niefqu milli nsejħulha nfusna. 871 00:53:10,100 --> 00:53:13,670 Għaliex jekk aħna ma tagħmel dan, allura aħna qed biss se jkomplu jagħmlu dan għal dejjem, 872 00:53:13,670 --> 00:53:16,660 u l-programm tagħna huwa biss mhux se tintemm. 873 00:53:16,660 --> 00:53:19,200 Aħna nsejħu din il-kundizzjoni tal-każ bażi. 874 00:53:19,200 --> 00:53:22,570 U l-każ bażiku jgħid, aktar milli ssejjaħ funzjoni mill-ġdid, 875 00:53:22,570 --> 00:53:25,330 Jien biss ser jirritorna xi valur. 876 00:53:25,330 --> 00:53:28,080 Allura ladarba aħna ve lura valur, konna waqfet ssejjaħ lilna nfusna, 877 00:53:28,080 --> 00:53:32,550 u l-bqija tas-sejħiet li ħadna s'issa jistgħu wkoll jirritornaw. 878 00:53:32,550 --> 00:53:36,050 L-oppost tax-xenarju bażi huwa l-każ rikursivi. 879 00:53:36,050 --> 00:53:39,050 U dan huwa meta irridu li jagħmlu sejħa oħra għall-funzjoni li aħna qed attwalment pulzieri 880 00:53:39,050 --> 00:53:44,690 U aħna probabbilment, għalkemm mhux dejjem, tkun trid tuża argumenti differenti. 881 00:53:44,690 --> 00:53:48,940 >> Allura jekk aħna għandhom funzjoni msejħa f, uf biss imsejħa tieħu 1 argument, 882 00:53:48,940 --> 00:53:52,010 u aħna biss iżommu ssejjaħ f (1), f (1), f (1), u huwa biss hekk jiġri li 883 00:53:52,010 --> 00:53:56,510 l-argument 1 taqa 'fil-każ rikursivi, aħna qed għadhom qatt ma ser tieqaf. 884 00:53:56,510 --> 00:54:01,620 Anki jekk aħna għandna każ ta 'bażi, għandna bżonn li jiġi żgurat li eventwalment aħna qed tmur biex hit li każ bażi. 885 00:54:01,620 --> 00:54:04,250 Aħna ma biss iżommu joqogħdu f'dan il-każ rikursivi. 886 00:54:04,250 --> 00:54:09,870 Ġeneralment, meta aħna sejħa lilna nfusna, aħna qed probabbilment se jkollhom argument differenti kull darba. 887 00:54:09,870 --> 00:54:12,700 Hawnhekk huwa funzjoni rikursivi verament sempliċi. 888 00:54:12,700 --> 00:54:15,090 Allura dan se kkalkulata l-fattorjali ta 'numru. 889 00:54:15,090 --> 00:54:17,790 Up top hawnhekk għandna każ bażi tagħna. 890 00:54:17,790 --> 00:54:22,330 Fil-każ li n ≤ 1, aħna mhux se sejħa fattorjali mill-ġdid. 891 00:54:22,330 --> 00:54:26,490 Aħna ser tieqaf; aħna qed biss jmorru lura xi valur. 892 00:54:26,490 --> 00:54:30,170 Jekk dan mhux veru, allura aħna qed tmur biex jolqtu każ rikursivi tagħna. 893 00:54:30,170 --> 00:54:33,550 Avviż hawnhekk li aħna qed mhux biss ssejjaħ fattorjali (n), minħabba li ma tkunx utli ħafna. 894 00:54:33,550 --> 00:54:36,810 Aħna ser sejħa fattorjali 'xi ħaġa oħra. 895 00:54:36,810 --> 00:54:40,850 >> U għalhekk tistgħu taraw, eventwalment jekk aħna jgħaddu xi ħaġa fattorjali (5) jew, 896 00:54:40,850 --> 00:54:45,900 aħna qed tmur biex sejħa fattorjali (4) u l-bqija, u eventwalment aħna qed tmur biex jolqtu din il-bażi. 897 00:54:45,900 --> 00:54:51,730 Allura dan jidher tajjeb. Ejja naraw x'jiġri meta aħna tmexxi effettivament dan. 898 00:54:51,730 --> 00:54:57,840 Dan huwa l-munzell, u ejja ngħidu li ewlieni huwa ser sejħa din il-funzjoni ma 'l-argument (4). 899 00:54:57,840 --> 00:55:02,200 Allura ladarba fattorjali jara u = 4, fattorjali se sejħa nnifisha. 900 00:55:02,200 --> 00:55:05,010 Issa, f'daqqa waħda, aħna għandna fattorjali (3). 901 00:55:05,010 --> 00:55:10,780 Allura dawn il-funzjonijiet huma ser jibqgħu jikbru sakemm eventwalment aħna hit każ bażi tagħna. 902 00:55:10,780 --> 00:55:17,830 Fuq dan il-punt, il-valur tar-ritorn ta 'dan huwa r-ritorn (nx il-valur tar-ritorn ta' dan), 903 00:55:17,830 --> 00:55:21,290 il-valur tar-ritorn ta 'dan huwa nx il-valur tar-ritorn ta' dan. 904 00:55:21,290 --> 00:55:23,290 Eventwalment għandna bżonn li taħbat xi numru. 905 00:55:23,290 --> 00:55:26,560 Fil-quċċata hawn, ngħidu ritorn 1. 906 00:55:26,560 --> 00:55:30,650 Dan ifisser li ladarba nerġgħu lura dak in-numru, nistgħu pop dan off-munzell. 907 00:55:30,650 --> 00:55:36,570 Allura dan fattorjali (1) isir. 908 00:55:36,570 --> 00:55:41,190 Meta 1 prospetti, dan fattorjali (1) prospetti, dan ritorn għal 1. 909 00:55:41,190 --> 00:55:46,910 Il-valur tar-ritorn ta 'dan, ftakar, kien nx il-valur tar-ritorn ta' dan. 910 00:55:46,910 --> 00:55:50,720 Allura f'daqqa waħda, dan Guy jaf li nixtieq li jirritornaw 2. 911 00:55:50,720 --> 00:55:55,910 >> Mela ftakar, jirritorna valur ta 'dan huwa biss nx il-valur tar-ritorn up here. 912 00:55:55,910 --> 00:56:01,160 Allura issa nistgħu ngħidu 3 x 2, u fl-aħħarnett, hawnhekk nistgħu ngħidu 913 00:56:01,160 --> 00:56:04,010 dan huwa biss se jkun ta '4 x 3 x 2. 914 00:56:04,010 --> 00:56:09,570 U ladarba dan prospetti, irridu jiksbu stabbiliti għal ġewwa numru sħiħ wieħed ta 'prinċipali. 915 00:56:09,570 --> 00:56:15,460 Kwalunkwe mistoqsijiet dwar recursion? 916 00:56:15,460 --> 00:56:17,090 Kull dritt. Allura hemm aktar ħin għall-mistoqsijiet fit-tmiem, 917 00:56:17,090 --> 00:56:23,360 iżda issa Joseph se tkopri s-suġġetti li jifdal. 918 00:56:23,360 --> 00:56:25,590 >> [Joseph Ong] Kull dritt. Allura issa li aħna ve tkellem dwar recursions, 919 00:56:25,590 --> 00:56:27,840 ejja nitkellmu ftit dwar dak li jingħaqdu tip huwa. 920 00:56:27,840 --> 00:56:31,740 Jingħaqdu tip huwa bażikament mod ieħor ta 'għażla lista ta' numri. 921 00:56:31,740 --> 00:56:36,430 U kif jaħdem huwa, ma sort jingħaqdu ikollok lista, u dak li nagħmlu huwa 922 00:56:36,430 --> 00:56:39,120 ngħidu, ejja maqsuma dan fis-2 nofsijiet. 923 00:56:39,120 --> 00:56:42,750 Aħna ser imexxu 1 jingħaqdu tip ġdid fuq in-nofs tax-xellug, 924 00:56:42,750 --> 00:56:45,040 allura aħna ser jimxu jingħaqdu tip fuq il-nofs tal-lemin, 925 00:56:45,040 --> 00:56:50,240 u li jagħtina issa 2 nofsijiet li huma magħżula, u issa aħna qed tmur biex jgħaqqdu dawk nofsijiet flimkien. 926 00:56:50,240 --> 00:56:55,010 Huwa daqsxejn diffiċli li wieħed jara mingħajr eżempju, hekk aħna ser jgħaddu l-movimenti u tara x'jiġri. 927 00:56:55,010 --> 00:56:59,590 Allura inti tibda bil din il-lista, aħna qasmitha fis-2 nofsijiet. 928 00:56:59,590 --> 00:57:02,300 We run jingħaqdu sort fuq in-nofs tax-xellug l-ewwel. 929 00:57:02,300 --> 00:57:06,660 Allura dak l-nofs tax-xellug, u issa aħna imexxuhom permezz din il-lista mill-ġdid 930 00:57:06,660 --> 00:57:09,800 li gets mgħoddija fis sort jingħaqdu, u allura aħna nħarsu, għal darb'oħra, 931 00:57:09,800 --> 00:57:13,270 fuq in-naħa tax-xellug tal-lista u aħna run jingħaqdu tip fuqha. 932 00:57:13,270 --> 00:57:15,880 Issa, aħna għonqna għal lista ta '2 numri, 933 00:57:15,880 --> 00:57:19,010 u issa l-nofs tax-xellug hija biss 1 element twil, u ma nistgħux 934 00:57:19,010 --> 00:57:23,380 maqsuma lista li biss 1 element fis-nofs, hekk aħna biss jgħidu, ladarba għandna 50, 935 00:57:23,380 --> 00:57:26,400 li huwa biss 1 element, huwa diġà magħżula. 936 00:57:26,400 --> 00:57:29,860 >> Ladarba aħna qed isir ma 'dan, nistgħu naraw li nistgħu 937 00:57:29,860 --> 00:57:32,230 jimxu fuq il-nofs tal-lemin ta 'din il-lista, 938 00:57:32,230 --> 00:57:36,480 u 3 huwa wkoll magħżula, u hekk issa li ż-żewġ nofsijiet tas din il-lista huma magħżula 939 00:57:36,480 --> 00:57:39,080 nistgħu jingħaqdu dawn in-numri lura flimkien. 940 00:57:39,080 --> 00:57:45,320 Allura aħna nħarsu lejn 50 u 3; 3 huwa iżgħar minn 50, għalhekk tmur fl-ewwel u mbagħad 50 taqa pulzieri 941 00:57:45,320 --> 00:57:49,340 Issa, dan isir; immorru lura sa dik il-lista u sort huwa nofs tal-lemin. 942 00:57:49,340 --> 00:57:52,440 42 huwa numru huwa stess, dan huwa diġà magħżula. 943 00:57:52,440 --> 00:57:57,850 Allura issa nqabblu dawn 2 u 3 huwa iżgħar minn 42, b'tali mod li gets mqiegħda fl-ewwel, 944 00:57:57,850 --> 00:58:02,340 issa 42 gets mqiegħda fi, u 50 gets tpoġġi pulzieri 945 00:58:02,340 --> 00:58:07,220 Issa, li s magħżula, aħna tmur it-triq lura lejn il-wiċċ, 1337 u 15. 946 00:58:07,220 --> 00:58:14,560 Ukoll, aħna issa nħarsu lejn in-nofs tax-xellug ta din il-lista; 1337 hija fiha nfisha hekk huwa magħżula u l-istess ma '15. 947 00:58:14,560 --> 00:58:19,020 Allura issa aħna ngħaqqdu dawn in-numri 2 sa sort dik il-lista oriġinali, 15 <1337, 948 00:58:19,020 --> 00:58:23,060 għalhekk tmur fl-ewwel, imbagħad tmur pulzieri 1337 949 00:58:23,060 --> 00:58:26,640 U issa aħna magħżula żewġ nofsijiet tas-lista oriġinali top up. 950 00:58:26,640 --> 00:58:30,440 U kollha għandna nagħmlu huwa jikkombinaw dawn. 951 00:58:30,440 --> 00:58:36,890 Aħna nħarsu lejn l-ewwel 2 numri ta 'din il-lista, 3 <15, u għalhekk tmur fil-firxa tip 1. 952 00:58:36,890 --> 00:58:44,460 15 <42, għalhekk tmur pulzieri Issa, 42 <1337, li tmur pulzieri 953 00:58:44,460 --> 00:58:51,010 50 <1337, għalhekk tmur pulzieri U tinduna li aħna biss ħa 2 numri off ta 'din il-lista. 954 00:58:51,010 --> 00:58:53,640 Allura aħna qed mhux biss jalterna bejn il-listi 2. 955 00:58:53,640 --> 00:58:56,050 Aħna qed tfittex biss fil-bidu, u aħna qed tieħu l-element 956 00:58:56,050 --> 00:59:00,270 li l-iżgħar u mbagħad it-tqegħid fis firxa tagħna. 957 00:59:00,270 --> 00:59:04,080 Issa konna magħquda l-nofsijiet u aħna qed isir. 958 00:59:04,080 --> 00:59:07,780 >> Kwalunkwe mistoqsijiet dwar jingħaqdu tip? Iva? 959 00:59:07,780 --> 00:59:14,190 [Student] Jekk huwa qsim fi gruppi differenti, għaliex ma huma biss maqsuma darba 960 00:59:14,190 --> 00:59:19,970 u inti għandek 3 u 2 fi grupp? [Bqija tad mhux intelliġibbli kwistjoni] 961 00:59:19,970 --> 00:59:24,940 Ir-raġuni - sabiex il-kwistjoni hija, għaliex ma nistgħu biss jingħaqdu f'dak l-ewwel pass wara għandna minnhom? 962 00:59:24,940 --> 00:59:29,530 Ir-raġuni li nistgħu nagħmlu dan, tibda fil-elementi tax-biċċa l-kbira taż-żewġ naħat, 963 00:59:29,530 --> 00:59:33,040 u mbagħad ħu l-iżgħar waħda u poġġih fil, huwa li aħna nafu li dawn 964 00:59:33,040 --> 00:59:35,290 listi individwali huma fl-ordnijiet magħżula. 965 00:59:35,290 --> 00:59:37,290 Mela jekk jien tħares lejn l-elementi tax-biċċa l-kbira taż-żewġ nofsijiet, 966 00:59:37,290 --> 00:59:40,490 Naf li qed tmur biex ikunu l-elementi iżgħar ta 'dawk il-listi. 967 00:59:40,490 --> 00:59:43,930 So I tista 'tpoġġihom fil-tikek element iżgħar ta' din il-lista kbir. 968 00:59:43,930 --> 00:59:47,810 Min-naħa l-oħra, jekk I ħarsa lejn dawn il-listi 2 fit-tieni livell hemmhekk, 969 00:59:47,810 --> 00:59:51,640 50, 3, 42, 1337 u 15, dawn ma jkunux magħżula. 970 00:59:51,640 --> 00:59:55,770 Mela jekk jien tħares lejn 50 u 1337, jien ser jitqiegħdu fis 50-lista tiegħi ewwel. 971 00:59:55,770 --> 01:00:00,130 Iżda dan ma verament jagħmel sens, għax 3 hija l-element iżgħar minn dawk kollha. 972 01:00:00,130 --> 01:00:04,390 Allura l-unika raġuni li nistgħu nagħmlu dan il-pass li jgħaqqad huwa minħabba listi tagħna huma diġà magħżula. 973 01:00:04,390 --> 01:00:07,010 Liema hu għaliex għandna biex tikseb l isfel it-triq kollha lejn il-qiegħ 974 01:00:07,010 --> 01:00:09,800 għaliex meta aħna għandna biss numru wieħed, inti taf li numru uniku 975 01:00:09,800 --> 01:00:14,120 u fih innifsu huwa diġà lista magħżula. 976 01:00:14,120 --> 01:00:19,360 >> Kwalunkwe mistoqsijiet? Nru? 977 01:00:19,360 --> 01:00:24,260 Kumplessità? Ukoll, inti tista 'tara li f'kull pass hemm numri finali, 978 01:00:24,260 --> 01:00:27,590 u nistgħu jaqsmu f'lista log 1/2 n darbiet, 979 01:00:27,590 --> 01:00:31,700 li huwa fejn irridu jiksbu dan il-log x n n kumplessità. 980 01:00:31,700 --> 01:00:34,940 U tkun taf ara l-każ aħjar għall tip jingħaqdu huwa n log n, u huwa biss hekk jiġri 981 01:00:34,940 --> 01:00:39,340 li l-agħar każ, jew il Ω hemmhekk, huwa wkoll n log n. 982 01:00:39,340 --> 01:00:42,480 Xi ħaġa li wieħed iżomm f'moħħu. 983 01:00:42,480 --> 01:00:45,750 Nimxu fuq, ejja mur fuq xi fajl bażiku super I / O. 984 01:00:45,750 --> 01:00:48,830 Jekk inti ħares lejn ġirja, inti ser ikollok avviż kellna xi tip ta 'sistema 985 01:00:48,830 --> 01:00:51,270 fejn inti tista 'tikteb lil fajl log jekk inti taqra permezz tal-kodiċi. 986 01:00:51,270 --> 01:00:53,730 Ejja naraw kif inti tista 'tagħmel dan. 987 01:00:53,730 --> 01:00:57,450 Well, aħna għandna fprintf, li inti tista 'taħseb biss bħala printf, 988 01:00:57,450 --> 01:01:01,720 iżda biss l-istampar għall-fajl minflok, u għalhekk il-f fil-bidu. 989 01:01:01,720 --> 01:01:07,570 Din it-tip ta 'kodiċi up hawn, dak li tagħmel huwa, kif inti tista raw fil ġirja, 990 01:01:07,570 --> 01:01:12,310 din tmur permezz ta 'stampar tiegħek firxa 2-dimensjonali out ringiela minn ringiela liema in-numri huma. 991 01:01:12,310 --> 01:01:17,850 F'dan il-każ, printf prints lil terminal tiegħek jew nsejħu l-output standard ta 'taqsima. 992 01:01:17,850 --> 01:01:22,170 >> U issa, f'dan il-każ, kollha għandna nagħmlu huwa tissostitwixxi printf ma fprintf, 993 01:01:22,170 --> 01:01:26,770 għid liema fajl li inti tixtieq li jistampaw għal, u f'dan il-każ hija biss prints out biex dan il-fajl 994 01:01:26,770 --> 01:01:32,230 minflok ta 'stampar dan jitwettaq għall-terminal tiegħek. 995 01:01:32,230 --> 01:01:36,500 Ukoll, allura dak iqajjem il-mistoqsija: Fejn se nilħqu dan it-tip ta 'fajl minn, id-dritt? 996 01:01:36,500 --> 01:01:39,840 Aħna għadda log fl għal dan fuction fprintf imma kellna l-ebda idea fejn ġew minn. 997 01:01:39,840 --> 01:01:43,980 Ukoll, kmieni fil-kodiċi, dak li kellna kienet din blokki tal-kodiċi hawn fuq, 998 01:01:43,980 --> 01:01:48,340 li bażikament tgħid li tiftaħ il-fajl sejħiet log.txt. 999 01:01:48,340 --> 01:01:53,220 Dak li nagħmlu wara li għandna biex jagħmlu ċert li l-fajl huwa attwalment jinfetaħ b'suċċess. 1000 01:01:53,220 --> 01:01:57,070 Allura jista 'tfalli għal raġunijiet multipli, inti ma jkollhomx spazju biżżejjed fuq il-kompjuter tiegħek, per eżempju. 1001 01:01:57,070 --> 01:01:59,790 Allura huwa dejjem importanti qabel ma tagħmel xi ħidmiet mal-fajl 1002 01:01:59,790 --> 01:02:03,300 li aħna tiċċekkja jekk dan il-fajl nfetħet b'suċċess. 1003 01:02:03,300 --> 01:02:09,330 Allura dak li, li l-argument li fopen, ukoll, nistgħu tiftaħ fajl f'ħafna modi. 1004 01:02:09,330 --> 01:02:13,510 Dak li nistgħu nagħmlu huwa, nistgħu tgħaddiha w, li jfisser jwarrab il-fajl jekk meta toħroġ diġà, 1005 01:02:13,510 --> 01:02:18,070 Nistgħu jgħaddu minn a, li huma tehmeż l-aħħar tal-fajl minflok prevalenti dan, 1006 01:02:18,070 --> 01:02:22,730 jew nistgħu jispeċifikaw r, li jfisser, ejja tiftaħ il-fajl bħala read-only. 1007 01:02:22,730 --> 01:02:24,890 Allura jekk il-programm jipprova jagħmel xi bidliet għall-fajl, 1008 01:02:24,890 --> 01:02:30,140 Yell fil minnhom u ma ħallihom jagħmlu dan. 1009 01:02:30,140 --> 01:02:33,320 Fl-aħħarnett, ladarba aħna qed isir mal-fajl, magħmul tagħmel operazzjonijiet fuqu, 1010 01:02:33,320 --> 01:02:35,860 għandna bżonn li niżguraw li tagħlaq il-fajl. 1011 01:02:35,860 --> 01:02:38,830 U hekk fl-aħħar tal-programm tiegħek, inti ser jgħaddu lilhom mill-ġdid 1012 01:02:38,830 --> 01:02:42,120 dan il-fajl li inti miftuħa, u biss mill-qrib magħha. 1013 01:02:42,120 --> 01:02:44,650 Allura dan huwa xi ħaġa importanti li inti għandek tagħmel ċert li inti tagħmel. 1014 01:02:44,650 --> 01:02:47,180 So ftakar li inti tista 'tiftaħ fajl, allura inti tista' tikteb lill-fajl, 1015 01:02:47,180 --> 01:02:51,270 jagħmlu l-operazzjonijiet fil-fajl, iżda imbagħad inti għandek li tagħlaq il-fajl fl-aħħar. 1016 01:02:51,270 --> 01:02:53,270 >> Kwalunkwe mistoqsijiet dwar fajl bażiku I / O? Iva? 1017 01:02:53,270 --> 01:02:58,050 [Kwistjoni Student, mhux intelliġibbli] 1018 01:02:58,050 --> 01:03:02,480 Dritt hawn. Il-kwistjoni hija, fejn ma dan il-fajl log.txt jidhru? 1019 01:03:02,480 --> 01:03:07,890 Ukoll, jekk inti biss tagħtiha log.txt, toħloq fil-direttorju istess bħall-eżekutibbli. 1020 01:03:07,890 --> 01:03:10,500 Mela jekk you're - >> [domanda Student, mhux intelliġibbli] 1021 01:03:10,500 --> 01:03:18,830 Iva. Fl-istess folder, jew fl-istess direttorju, kif inti sejħa hija. 1022 01:03:18,830 --> 01:03:21,400 Issa, memorja munzell, u borġ. 1023 01:03:21,400 --> 01:03:23,400 Allura kif huwa memorja stipulati fil-kompjuter? 1024 01:03:23,400 --> 01:03:26,270 Ukoll, inti tista 'timmaġina memorja bħala tip ta' din il-blokka hawn. 1025 01:03:26,270 --> 01:03:30,260 U fil-memorja aħna għandna dak li jissejjaħ il-borġ staġnati hemmhekk, u l-munzell li l stabbiliti hemmhekk. 1026 01:03:30,260 --> 01:03:34,480 U l-borġ tikber isfel u l-munzell tikber fuq. 1027 01:03:34,480 --> 01:03:38,620 Allura kif Tommy imsemmi - oh, ukoll, u għandna dawn is-segmenti l-oħra 4 li jiena ser tingħata fit-tieni - 1028 01:03:38,620 --> 01:03:42,890 Kif Tommy qal qabel, inti taf kif il-funzjonijiet tiegħu jsejħu lilhom infushom u sejħa lil xulxin? 1029 01:03:42,890 --> 01:03:44,930 Huma jibnu dan it-tip ta 'qafas munzell. 1030 01:03:44,930 --> 01:03:47,360 Ukoll, jekk sejħiet ewlenin foo, foo gets mqiegħda fis-munzell. 1031 01:03:47,360 --> 01:03:52,430 Foo jitlob bar, bar jiksbu s tpoġġi fuq il-munzell, u li gets mqiegħda fis-munzell wara. 1032 01:03:52,430 --> 01:03:57,040 U kif huma jirritornaw, huma kull nikseb jittieħdu barra l-munzell. 1033 01:03:57,040 --> 01:04:00,140 What do kull wieħed minn dawn il-lokalitajiet u l-memorja istiva? 1034 01:04:00,140 --> 01:04:03,110 Ukoll, il-quċċata, li hija l-segment test, fih il-programm innifsu. 1035 01:04:03,110 --> 01:04:06,390 Allura l-kodiċi tal-magna, li hemm, ladarba inti tiġbor program tiegħek. 1036 01:04:06,390 --> 01:04:08,520 Sussegwentement, kull initialized varjabbli globali. 1037 01:04:08,520 --> 01:04:12,660 >> Allura għandek varjabbli globali fil-programm tiegħek, u inti tgħidli simili, a 5 =, 1038 01:04:12,660 --> 01:04:15,260 li gets mqiegħda f'dak is-segment, u d-dritt taħt li, 1039 01:04:15,260 --> 01:04:18,990 Għandek xi data globali uninitialized, li huwa biss int a, 1040 01:04:18,990 --> 01:04:20,990 imma inti ma jgħidu huwa ugwali għal xejn. 1041 01:04:20,990 --> 01:04:23,870 Jirrealizzaw li dawn huma varjabbli globali, allura jkunu barra ta 'prinċipali. 1042 01:04:23,870 --> 01:04:28,560 Allura dan ifisser kwalunkwe varjabbli globali li huma ddikjarati iżda mhumiex initialized. 1043 01:04:28,560 --> 01:04:32,310 Allura x'hemm fil-borġ? Memorja allokati permezz malloc, li aħna ser tingħata fil-ftit. 1044 01:04:32,310 --> 01:04:35,990 U fl-aħħarnett, bil-munzell għandek xi varjazzjonijiet lokali 1045 01:04:35,990 --> 01:04:39,950 u kull funzjonijiet inti tista 'sejħa fi kwalunkwe ta' parametri tagħhom. 1046 01:04:39,950 --> 01:04:43,720 L-aħħar ħaġa, inti ma verament għandek tkun taf liema l-varjabbli ambjent jagħmlu, 1047 01:04:43,720 --> 01:04:46,700 imma kull darba li inti tmexxi programm, hemm xi ħaġa assoċjata, bħal 1048 01:04:46,700 --> 01:04:49,550 dan huwa l-username tal-persuna li mexxa l-programm. 1049 01:04:49,550 --> 01:04:51,550 U li għaddej biex tkun tip ta 'fil-qiegħ. 1050 01:04:51,550 --> 01:04:54,540 F'termini ta 'indirizzi tal-memorja, li huma valuri hexadeċimali, 1051 01:04:54,540 --> 01:04:58,170 il-valuri fil-bidu ta 'fuq ta' 0, u dawn imorru-triq kollha sal-qiegħ. 1052 01:04:58,170 --> 01:05:00,440 F'dan il-każ, jekk int fuq is-sistema 32-bit, 1053 01:05:00,440 --> 01:05:05,390 l-indirizz fil-qiegħ se tkun 0x, segwit minn af, għaliex dan huwa 32 bits, 1054 01:05:05,390 --> 01:05:10,890 li huwa 8 bytes, u f'dan il-każ 8 bytes jikkorrispondi għal numri hexadecimal 8. 1055 01:05:10,890 --> 01:05:20,110 Allura stabbiliti hawn int se jkollhom, bħal, 0xffffff, u up hemm int ser ikollhom 0. 1056 01:05:20,110 --> 01:05:23,660 Allura x'inhuma pointers? Xi wħud minnkom jista 'ma jkollhomx koperti dan fis-sezzjoni qabel. 1057 01:05:23,660 --> 01:05:26,660 imma aħna ma jmorru fuq fil lecture, so a pointer huwa biss tip ta 'data 1058 01:05:26,660 --> 01:05:34,030 li ħwienet, minflok ta 'xi tip ta' valur simili 50, huwa jaħżen l-indirizz ta 'xi post fil-memorja. 1059 01:05:34,030 --> 01:05:36,020 Bħal li l-memorja [mhux intelliġibbli]. 1060 01:05:36,020 --> 01:05:41,120 Allura f'dan il-każ, dak li għandna hija, għandna pointer għal integer jew * int, 1061 01:05:41,120 --> 01:05:46,210 u fiha dan l-indirizz hexadeċimali ta 0xDEADBEEF. 1062 01:05:46,210 --> 01:05:50,880 >> Allura dak li għandna huwa, issa, dan il-punti pointer f'xi post fil-memorja, 1063 01:05:50,880 --> 01:05:56,020 u li jinsab biss, il-valur 50 huwa f'dan il-post tal-memorja. 1064 01:05:56,020 --> 01:06:01,810 Fuq xi sistemi 32-bit, fuq is-sistemi kollha 32-bit, pointers jieħdu bits 32 jew 4 bytes. 1065 01:06:01,810 --> 01:06:06,020 Iżda, per eżempju, fuq sistema 64-bit, pointers huma 64 bits. 1066 01:06:06,020 --> 01:06:08,040 Allura li xi ħaġa tkun taf tixtieq li wieħed iżomm f'moħħu. 1067 01:06:08,040 --> 01:06:12,310 Allura fuq sistema end-bit, pointer huwa bits tmiem twil. 1068 01:06:12,310 --> 01:06:17,320 Pointers huma tip ta 'diffiċli li jiddiġerixxu mingħajr affarijiet żejda, 1069 01:06:17,320 --> 01:06:20,300 hekk ejja jmorru permezz ta 'eżempju ta' allokazzjoni memorja dinamika. 1070 01:06:20,300 --> 01:06:25,130 Liema allokazzjoni memorja dinamika ma għalik, jew dak li nsejħu malloc, 1071 01:06:25,130 --> 01:06:29,280 ihallik talloka xi tip ta 'data barra tas-sett. 1072 01:06:29,280 --> 01:06:31,830 Allura dan huwa tip ta 'data aktar permanenti għat-tul tal-programm. 1073 01:06:31,830 --> 01:06:36,430 Għaliex kif inti taf, jekk inti tiddikjara x ġewwa ta 'funzjoni, u li prospetti funzjoni, 1074 01:06:36,430 --> 01:06:40,910 inti m'għadx għandhom aċċess għad-data li kienet maħżuna x. 1075 01:06:40,910 --> 01:06:44,420 Liema indikaturi ejjew nagħmlu huwa li jgħidilna żżomm il-valuri tal-memorja jew maħżen 1076 01:06:44,420 --> 01:06:46,840 f'segment differenti ta 'memorja, jiġifieri l-borġ. 1077 01:06:46,840 --> 01:06:49,340 Issa ladarba nerġgħu lura mill-funzjoni, sakemm għandna pointer 1078 01:06:49,340 --> 01:06:54,960 li dak il-post fil-memorja, allura dak li nistgħu nagħmlu huwa li nistgħu biss ħarsa lejn il-valuri hemmhekk. 1079 01:06:54,960 --> 01:06:58,020 Ejja nħarsu lejn eżempju: Dan huwa tqassim memorja tagħna mill-ġdid. 1080 01:06:58,020 --> 01:07:00,050 U aħna għandna din il-funzjoni, prinċipali. 1081 01:07:00,050 --> 01:07:06,870 Dak li dan huwa - okay, tant sempliċi, id-dritt -? Int x = 5, li jinsab biss varjabbli fuq il-munzell fl prinċipali. 1082 01:07:06,870 --> 01:07:12,450 >> Min-naħa l-oħra, issa aħna tiddikjara pointer li jitlob l-giveMeThreeInts funzjoni. 1083 01:07:12,450 --> 01:07:16,800 U hekk issa immorru fis din il-funzjoni u noħolqu qafas munzell ġdid għaliha. 1084 01:07:16,800 --> 01:07:20,440 Madankollu, f'dan il-qafas munzell, aħna niddikjaraw int * temperatura, 1085 01:07:20,440 --> 01:07:23,210 li mallocs 3 interi għalina. 1086 01:07:23,210 --> 01:07:25,880 Allura daqs ta 'int se tagħtina kemm bytes dan int huwa, 1087 01:07:25,880 --> 01:07:29,620 u malloc tagħtina dak bytes ħafna ta 'spazju fuq il-borġ. 1088 01:07:29,620 --> 01:07:32,890 Allura f'dan il-każ, ħloqna spazju biżżejjed għal 3 interi, 1089 01:07:32,890 --> 01:07:36,830 u l-borġ huwa mod up hemm, u huwa għalhekk li stajt magħmula lilha ogħla sa. 1090 01:07:36,830 --> 01:07:42,900 Ladarba aħna qed isir, aħna terga 'lura up hawn, inti għandek bżonn biss 3 ints lura, 1091 01:07:42,900 --> 01:07:47,000 u huwa u jirritorna l-indirizz, f'dan il-każ aktar minn fejn dik memorja huwa. 1092 01:07:47,000 --> 01:07:51,250 U aħna waqqafna pointer = swiċċ, u up hemm aħna għandna biss ieħor pointer. 1093 01:07:51,250 --> 01:07:54,550 Imma dak li prospetti funzjoni hija f'munzelli hawn u tisparixxi. 1094 01:07:54,550 --> 01:07:59,250 Allura temperatura tisparixxi, iżda aħna xorta jżomm l-indirizz ta 'fejn 1095 01:07:59,250 --> 01:08:01,850 dawk interi 3 huma ġewwa tal mains. 1096 01:08:01,850 --> 01:08:06,180 Allura f'dan is-sett, il-pointers huma scoped lokalment għall-qafas f'munzelli, 1097 01:08:06,180 --> 01:08:09,860 iżda l-memorja li għaliha jirreferu hija fil-borġ. 1098 01:08:09,860 --> 01:08:12,190 >> Does li jagħmel sens? 1099 01:08:12,190 --> 01:08:14,960 [Student] Tista 'tirrepeti dak? >> [Joseph] Iva. 1100 01:08:14,960 --> 01:08:20,270 Mela jekk immur lura ftit ftit, tara allokat temperatura li 1101 01:08:20,270 --> 01:08:23,500 xi memorja fuq il-borġ up hemm. 1102 01:08:23,500 --> 01:08:28,680 Allura meta din il-funzjoni, giveMeThreeInts prospetti, dan munzell hawn se jisparixxu. 1103 01:08:28,680 --> 01:08:35,819 U magħha xi waħda mill-varjabbli, f'dan il-każ, dan il-werrej li kien allokat fil-qafas f'munzelli. 1104 01:08:35,819 --> 01:08:39,649 Li ser jisparixxu, iżda peress li aħna lura temperatura 1105 01:08:39,649 --> 01:08:46,330 u aħna waqqafna pointer = temperatura, pointer s issa se punt l-memorja istess post bħala temperatura kienet. 1106 01:08:46,330 --> 01:08:50,370 Allura issa, anke jekk aħna jitilfu temperatura, li pointer lokali, 1107 01:08:50,370 --> 01:08:59,109 aħna xorta jżommu l-indirizz tal-memorja ta 'dak li kien li tipponta lejn ġewwa ta' dak werrej varjabbli. 1108 01:08:59,109 --> 01:09:03,740 Mistoqsijiet? Dan jista 'jkun it-tip ta' suġġett konfuża jekk int ma marret fuqha fit-taqsima. 1109 01:09:03,740 --> 01:09:09,240 Nistgħu, TF tiegħek definittivament se jmorru fuqha u ta 'kors nistgħu twieġeb mistoqsijiet 1110 01:09:09,240 --> 01:09:11,500 fl-aħħar tas-sessjoni ta 'reviżjoni għal dan. 1111 01:09:11,500 --> 01:09:14,220 Iżda dan huwa tip ta 'suġġett kumpless, u jien aktar eżempji li ser juru up 1112 01:09:14,220 --> 01:09:18,790 li se jgħinu biex jiċċaraw liema indikaturi fil-fatt huma. 1113 01:09:18,790 --> 01:09:22,500 >> F'dan il-każ, pointers huma ekwivalenti għal arrays, 1114 01:09:22,500 --> 01:09:25,229 hekk nista 'biss użu dan il-werrej bħala l-istess ħaġa bħat firxa int. 1115 01:09:25,229 --> 01:09:29,840 Allura jien indiċjar fis 0, u jinbidlu l-ewwel numru sħiħ għall-1, 1116 01:09:29,840 --> 01:09:39,689 jinbidlu l-eqreb numru sħiħ 2 għal 2, u l-eqreb numru sħiħ 3 sa 3. 1117 01:09:39,689 --> 01:09:44,210 Allura aktar fuq pointers. Ukoll, recall Binky. 1118 01:09:44,210 --> 01:09:48,319 F'dan il-każ konna allokati pointer, jew aħna iddikjarat pointer, 1119 01:09:48,319 --> 01:09:52,760 iżda inizjalment, meta I biss iddikjarat pointer, mhuwiex tipponta lejn kullimkien fil-memorja. 1120 01:09:52,760 --> 01:09:54,930 Huwa biss il-valuri taż-żibel ġewwa ta 'dan. 1121 01:09:54,930 --> 01:09:56,470 Allura għandi l-ebda idea fejn dan il-werrej hija li tipponta lejn. 1122 01:09:56,470 --> 01:10:01,630 Hija għandha l-indirizz li huwa biss mimlija bl '0 u għal 1 fejn kien inizjalment iddikjarat. 1123 01:10:01,630 --> 01:10:04,810 I ma tistax tagħmel xejn ma 'dan sal I call malloc fuqha 1124 01:10:04,810 --> 01:10:08,390 u mbagħad tagħti me ftit spazju fuq il-borġ fejn I tista 'tpoġġi valuri ġewwa. 1125 01:10:08,390 --> 01:10:11,980 Imbagħad għal darb'oħra, I do not know x'hemm ġewwa ta 'dan il-memorja. 1126 01:10:11,980 --> 01:10:16,780 Allura l-ewwel ħaġa li nagħmel huwa li jiċċekkja jekk is-sistema kellha memorja biżżejjed 1127 01:10:16,780 --> 01:10:20,850 li tagħti me lura 1 numru sħiħ fl-ewwel post, u huwa għalhekk li jien tagħmel dan check. 1128 01:10:20,850 --> 01:10:25,020 Jekk pointer huwa null, li jfisser li ma kellhiex biżżejjed spazju jew xi żball ieħor seħħet, 1129 01:10:25,020 --> 01:10:26,320 so I għandhom ħruġ minn programm tiegħi. 1130 01:10:26,320 --> 01:10:29,400  Iżda jekk hija għamlet tirnexxi, issa nista 'nuża li werrej 1131 01:10:29,400 --> 01:10:35,020 u liema pointer * ma huwa isegwi fejn l-indirizz ikun 1132 01:10:35,020 --> 01:10:38,480 ta 'fejn dan il-valur hu, u dan jagħtih ugwali għal 1. 1133 01:10:38,480 --> 01:10:41,850 Allura hawn fuq, aħna qed iċċekkjar jekk din memorja jeżistu. 1134 01:10:41,850 --> 01:10:45,380 >> Ladarba inti taf li jeżisti, inti tista 'tpoġġi fis dan 1135 01:10:45,380 --> 01:10:50,460 liema valur inti tixtieq li jitqiegħed fis dan, f'dan il-każ 1. 1136 01:10:50,460 --> 01:10:53,060 Ladarba aħna qed isir ma 'dan, inti għandek bżonn biex ħielsa li werrej 1137 01:10:53,060 --> 01:10:57,160 għaliex għandna bżonn li terġa 'lura għas-sistema li l-memorja li inti mitlub fl-ewwel post. 1138 01:10:57,160 --> 01:10:59,690 Minħabba li l-kompjuter ma jkunx jaf meta aħna qed isir magħha. 1139 01:10:59,690 --> 01:11:02,510 F'dan il-każ aħna qed espliċitament javżak dan, okay, aħna qed isir ma 'dak tal-memorja. 1140 01:11:02,510 --> 01:11:10,780 Jekk xi proċess ieħor jeħtieġ dan, xi programm ieħor jeħtieġ dan, tħossok liberu li jimxi 'l quddiem u teħodha. 1141 01:11:10,780 --> 01:11:15,110 Dak li nistgħu wkoll nagħmlu huwa li nistgħu biss jiksbu l-indirizz ta 'varjabbli lokali fuq is-sett. 1142 01:11:15,110 --> 01:11:19,080 X Allura int tkun ġewwa l-qafas f'munzelli ta prinċipali. 1143 01:11:19,080 --> 01:11:23,060 U meta nużaw din ampersand, dan u l-operatur, dak li tagħmel huwa 1144 01:11:23,060 --> 01:11:27,310 hija tieħu x, u x huwa biss xi data fil-memorja, iżda għandha l-indirizz. 1145 01:11:27,310 --> 01:11:33,790 Huwa jinsab x'imkien. Allura billi ssejjaħ & x, dak li dan ma huwa jagħtina l-indirizz ta 'x. 1146 01:11:33,790 --> 01:11:38,430 Billi tagħmel dan, aħna qed jagħmlu punt pointer lejn fejn x hija fil-memorja. 1147 01:11:38,430 --> 01:11:41,710 Issa aħna biss ma xi ħaġa simili * x, aħna qed tmur biex tikseb 5 lura. 1148 01:11:41,710 --> 01:11:43,820 L-istilla huwa msejjaħ dereferencing dan. 1149 01:11:43,820 --> 01:11:46,640 Inti ssegwi l-indirizz u jkollok l-valur ta 'dan maħżun hemmhekk. 1150 01:11:51,000 --> 01:11:53,310 >> Kwalunkwe mistoqsijiet? Iva? 1151 01:11:53,310 --> 01:11:56,500 [Student] Jekk inti ma tagħmel il-ħaġa 3-ponta, ma xorta tiġbor? 1152 01:11:56,500 --> 01:11:59,490 Iva. Jekk inti ma tagħmel il-ħaġa 3-pointer, huwa għadu għaddej biex jikkompila, 1153 01:11:59,490 --> 01:12:02,720 imma jien ser jurik dak li jiġri fit-tieni, u mingħajr ma jsir dan, 1154 01:12:02,720 --> 01:12:04,860 dan huwa dak li nsejħu nixxija memorja. Int mhux li tagħti s-sistema 1155 01:12:04,860 --> 01:12:07,850 back-memorja tiegħu, dan wara filwaqt li l-programm se jakkumulaw 1156 01:12:07,850 --> 01:12:10,940 memorja li mhuwiex bl-użu, u xejn jista 'jużah. 1157 01:12:10,940 --> 01:12:15,750 Jekk inti stajt qatt rat Firefox ma 1,500,000 kilobytes fuq il-kompjuter tiegħek, 1158 01:12:15,750 --> 01:12:17,840 fil-maniġer tal-kompiti, dan huwa dak li għaddej. 1159 01:12:17,840 --> 01:12:20,760 Inti għandek nixxija memorja fil-programm li dawn mhux qed tqandil. 1160 01:12:23,080 --> 01:12:26,240 Allura kif ma pointer xogħol aritmetika? 1161 01:12:26,240 --> 01:12:29,480 Ukoll, aritmetika pointer huwa tip ta 'indiċjar simili fil-firxa. 1162 01:12:29,480 --> 01:12:36,370 F'dan il-każ, għandi pointer, u dak li nagħmel huwa nagħmel punt pointer għall-ewwel element 1163 01:12:36,370 --> 01:12:42,100 ta 'dan l-firxa ta' numri interi 3 li stajt allokati. 1164 01:12:42,100 --> 01:12:46,670 Allura issa dak I do, pointer istilla ftit bidliet l-ewwel element fil-lista. 1165 01:12:46,670 --> 01:12:49,140 Star pointer 1 punti minn hawn. 1166 01:12:49,140 --> 01:12:53,140 Allura pointer huwa fuq hawn, pointer +1 huwa minn hawn, pointer 2 huwa fuq hawn. 1167 01:12:53,140 --> 01:12:56,610 >> Hekk biss żżid 1 huwa l-istess ħaġa bħat jimxu tul dan array. 1168 01:12:56,610 --> 01:12:59,880 Dak li nagħmlu huwa, meta nagħmlu pointer 1 ikollok l-indirizz hawn fuq, 1169 01:12:59,880 --> 01:13:04,180 u sabiex jiksbu il-valur fil hawn, inti tpoġġi stilla fil mill-espressjoni sħiħa 1170 01:13:04,180 --> 01:13:05,990 li dereference dan. 1171 01:13:05,990 --> 01:13:09,940 Għalhekk, f'dan il-każ, jien iffissar tal-post ewwel f'dan array għal 1, 1172 01:13:09,940 --> 01:13:13,970 lokazzjoni 2 għal 2, u l-post 3 sa 3. 1173 01:13:13,970 --> 01:13:18,180 Imbagħad dak li qed nagħmel hawn fuq huwa jien istampar pointer tagħna +1, 1174 01:13:18,180 --> 01:13:19,970 li biss tagħti me 2. 1175 01:13:19,970 --> 01:13:23,650 Issa jien inkrementazzjoni pointer, hekk pointer ugwali pointer +1, 1176 01:13:23,650 --> 01:13:26,780 li timxi 'l quddiem. 1177 01:13:26,780 --> 01:13:30,810 U għalhekk issa jekk I jistampa pointer 1, pointer 1 issa hija 3, 1178 01:13:30,810 --> 01:13:33,990 li f'dan il-każ tistampa 3. 1179 01:13:33,990 --> 01:13:36,560 U sabiex xi ħaġa ħielsa, il-pointer li I tagħtiha 1180 01:13:36,560 --> 01:13:40,540 għandha tkun tipponta fil-bidu ta 'l-array li jiena marret lura mill malloc. 1181 01:13:40,540 --> 01:13:43,430 Għalhekk, f'dan il-każ, jekk kienu I li sejħa 3 dritt hawn, dan ma jkunx id-dritt, 1182 01:13:43,430 --> 01:13:45,070 għaliex dan huwa fin-nofs tal-firxa. 1183 01:13:45,070 --> 01:13:48,820 Għandi biex naqqas biex jiksbu l-post oriġinali 1184 01:13:48,820 --> 01:13:50,420 il-post 1 inizjali qabel I jista 'b'xejn dan. 1185 01:13:56,300 --> 01:13:58,450 Allura, hawn huwa eżempju aktar involuti. 1186 01:13:58,450 --> 01:14:03,360 F'dan il-każ, aħna qed jalloka 7 karattri firxa karattru. 1187 01:14:03,360 --> 01:14:06,480 >> U f'dan il-każ dak li aħna qed tagħmel huwa li aħna qed looping fuq l-ewwel 6 minnhom, 1188 01:14:06,480 --> 01:14:09,900 u aħna qed jistabbilixxu lilhom sa Z. 1189 01:14:09,900 --> 01:14:13,350 Għalhekk, għal INT i = 0, i> 6, i + +, 1190 01:14:13,350 --> 01:14:16,220 Allura, pointer + i se biss tagħtina, f'dan il-każ, 1191 01:14:16,220 --> 01:14:20,860 pointer, pointer 1, pointer 2, 3 pointer, u hekk u ibqa 'sejjer hekk fil-linja. 1192 01:14:20,860 --> 01:14:24,040 Dak li għaddej biex tagħmel huwa jiġrilha dak l-indirizz, dereferences huwa li jiksbu l-valur, 1193 01:14:24,040 --> 01:14:27,440 u l-bidliet li valur lil Z. 1194 01:14:27,440 --> 01:14:30,350 Imbagħad fl-aħħar ftakar li dan huwa string, id-dritt? 1195 01:14:30,350 --> 01:14:33,560 Kollha kordi għandhom jintemmu mad-karattru null jtemm. 1196 01:14:33,560 --> 01:14:38,620 Allura, dak li nagħmel huwa pointer 6 nressaq il-karattru terminatur null pulzieri 1197 01:14:38,620 --> 01:14:43,980 U issa dak li jien bażikament jagħmlu minn hawn qed timplimenta printf għal string, id-dritt? 1198 01:14:43,980 --> 01:14:46,190 >> Allura, meta ma printf issa meta huwa laħaq it-tmiem ta 'sekwenza? 1199 01:14:46,190 --> 01:14:48,230 Meta hits-karattru null jtemm. 1200 01:14:48,230 --> 01:14:52,030 Għalhekk, f'dan il-każ, il-punti oriġinali tiegħi pointer għall-bidu ta 'din array. 1201 01:14:52,030 --> 01:14:56,410 I jistampaw l-ewwel karattru barra. I jġorrhom aktar minn. 1202 01:14:56,410 --> 01:14:58,420 I jistampa dan il-karattru barra. I jġorrhom fuq. 1203 01:14:58,420 --> 01:15:02,180 U jien iżommu tagħmel dan sal I jilħqu t-tmiem. 1204 01:15:02,180 --> 01:15:07,750 U issa l-pointer * tmiem se dereference dan u jiksbu l-karattru null jtemm lura. 1205 01:15:07,750 --> 01:15:11,780 U hekk loop filwaqt tiegħi runs biss meta dak il-valur ma jkunx il-karattru null jtemm. 1206 01:15:11,780 --> 01:15:13,770 Allura, issa I ħruġ minn din il-linja. 1207 01:15:18,780 --> 01:15:21,180 U hekk jekk I naqqas 6 minn dan il-werrej, 1208 01:15:21,180 --> 01:15:22,860 Mmur lura-triq kollha lejn il-bidu. 1209 01:15:22,860 --> 01:15:27,880 Ftakar, jien tagħmel dan minħabba I ikollhom imorru għall-bidu sabiex ħielsa minnha. 1210 01:15:27,880 --> 01:15:30,270 >> Allura, naf li kien ħafna. Hemm xi mistoqsijiet? 1211 01:15:30,270 --> 01:15:31,870 Jekk jogħġbok, iva? 1212 01:15:31,870 --> 01:15:36,610 [Mhux intelliġibbli kwistjoni Student] 1213 01:15:36,610 --> 01:15:38,190 Tista 'tgħid li l-louder? Jiddispjacini. 1214 01:15:38,190 --> 01:15:44,140 [Student] Fuq il-pjastra aħħar dritt qabel ma jinħelsu l-pointer, 1215 01:15:44,140 --> 01:15:47,300 fejn kienu inti fil-fatt jinbidlu l-valur tal-pointer? 1216 01:15:47,300 --> 01:15:50,370 [Joseph] Allura, dritt hawn. >> [Student] Oh, okay. 1217 01:15:50,370 --> 01:15:51,890 [Joseph] So, I jkollhom pointer minus minus, id-dritt, 1218 01:15:51,890 --> 01:15:54,140 li timxi il-ħaġa lura waħda, u mbagħad I ħielsa it- 1219 01:15:54,140 --> 01:15:57,000 minħabba dan il-werrej għandu jiġi nnutat li l-bidu ta 'l-array. 1220 01:15:57,000 --> 01:16:00,420 [Student] Iżda dan ma jkunx meħtieġ kien waqaft wara dik il-linja. 1221 01:16:00,420 --> 01:16:03,130 [Joseph] Mela, jekk I kienet waqfet wara dan, din tkun ikkunsidrata bħala telf tal-memorja, 1222 01:16:03,130 --> 01:16:04,810 minħabba I ma run-ħielsa. 1223 01:16:04,810 --> 01:16:11,290 [Student] I [mhux intelliġibbli] wara l-ewwel tliet linji fejn kellek pointer 1 [mhux intelliġibbli]. 1224 01:16:11,290 --> 01:16:13,140 [Joseph] Uh-huh. Allura, x'inhu l-kwistjoni hemmhekk? 1225 01:16:13,140 --> 01:16:14,780 Jiddispjacini. No, no. Mur, mur, jekk jogħġbok. 1226 01:16:14,780 --> 01:16:16,870 [Student] Għalhekk, int ma jinbidlu l-valur tal-pointers. 1227 01:16:16,870 --> 01:16:19,130 Inti ma kienx ikollha tagħmel pointer minus minus. 1228 01:16:19,130 --> 01:16:19,730 [Joseph] Iva, eżattament. 1229 01:16:19,730 --> 01:16:21,890 Allura, meta I do pointer 1 u 2 pointer, 1230 01:16:21,890 --> 01:16:24,410 Jien ma nagħmilx pointer ugwali pointer +1. 1231 01:16:24,410 --> 01:16:27,260 Għalhekk, il-pointer biss jibqa tipponta fil-bidu ta 'l-array. 1232 01:16:27,260 --> 01:16:31,460 Huwa biss meta I do plus plus li tistabbilixxi l-valur lura ġewwa l-pointer, 1233 01:16:31,460 --> 01:16:33,550 li hija effettivament jiċċaqlaq dan flimkien. 1234 01:16:36,860 --> 01:16:37,780 Kull dritt. 1235 01:16:40,550 --> 01:16:42,030 Mistoqsijiet Aktar? 1236 01:16:44,680 --> 01:16:47,790 >> Għal darb'oħra, jekk dan huwa tip ta 'kbira, dan se jkun kopert f'sessjoni. 1237 01:16:47,790 --> 01:16:50,710 Staqsi sħabi tagħlim tiegħek dwar dan, u aħna tista 'twieġeb mistoqsijiet fl-aħħar. 1238 01:16:53,510 --> 01:16:56,600 U normalment aħna ma tixtieq tagħmel dan ħaġa nieqes. 1239 01:16:56,600 --> 01:16:59,760 Dan għandu jirrikjedi lili iżżomm rekord ta 'kemm stajt kkumpensati fil-firxa. 1240 01:16:59,760 --> 01:17:04,520 Għalhekk, b'mod ġenerali, dan huwa biss biex jispjegaw kif jaħdem aritmetika pointer. 1241 01:17:04,520 --> 01:17:07,970 Imma dak li aħna normalment tixtieq tagħmel hu li aħna nixtiequ li joħolqu kopja ta 'l-werrej, 1242 01:17:07,970 --> 01:17:11,640 u mbagħad aħna ser tuża dik il-kopja meta aħna qed jiċċaqalqu madwar fil-sekwenza. 1243 01:17:11,640 --> 01:17:14,660 Għalhekk, f'dawn il-każijiet li tuża l-kopja li jistampaw il-sekwenza sħiħa, 1244 01:17:14,660 --> 01:17:19,040 iżda aħna ma jkollhom jagħmlu bħal pointer minus 6 jew iżżomm rekord ta 'kemm aħna mċaqalqa f'dan, 1245 01:17:19,040 --> 01:17:22,700 biss għaliex aħna nafu li l-punt oriġinali tagħna għadu indikat il-bidu tal-lista 1246 01:17:22,700 --> 01:17:25,340 u dak kollu li aħna mibdula kienet din il-kopja. 1247 01:17:25,340 --> 01:17:28,250 Għalhekk, b'mod ġenerali, tbiddel kopji ta 'pointer oriġinali tiegħek. 1248 01:17:28,250 --> 01:17:32,350 Tippruvax sort ta 'prodotti simili - don' t tbiddel kopji oriġinali. 1249 01:17:32,350 --> 01:17:35,290 Jippruvaw jibdlu kopji biss tad oriġinali tiegħek. 1250 01:17:41,540 --> 01:17:44,870 Allura, tinnota meta aħna jgħaddu l-sekwenza fis printf 1251 01:17:44,870 --> 01:17:48,990 inti ma għandekx li jitqiegħed stilla quddiem ta 'dan bħal għamilna ma' l-dereferences-oħra, id-dritt? 1252 01:17:48,990 --> 01:17:54,180 Għalhekk, jekk inti jistampa l-i kollu% sekwenza jistenna huwa indirizz, 1253 01:17:54,180 --> 01:17:57,610 u f'dan il-każ pointer jew f'dan il-każ bħal firxa ta 'karattri. 1254 01:17:57,610 --> 01:18:00,330 >> Karattri, char * i, u arrays huma l-istess ħaġa. 1255 01:18:00,330 --> 01:18:03,690 Pointer hija li karattri, u arrays karattru huma l-istess ħaġa. 1256 01:18:03,690 --> 01:18:05,720 U għalhekk, kollha għandna nagħmlu hu jgħaddu pointer. 1257 01:18:05,720 --> 01:18:08,150 Aħna ma jkollhom jgħaddu bl-istess pointer * jew xi ħaġa bħal dik. 1258 01:18:13,110 --> 01:18:14,930 Allura, arrays u indikaturi huma l-istess ħaġa. 1259 01:18:14,930 --> 01:18:19,160 Meta inti qed tagħmel xi ħaġa bħal x [y] minn hawn għal firxa, 1260 01:18:19,160 --> 01:18:21,960 dak li qed jagħmel taħt il-barnuża huwa huwa qal, okay, huwa firxa karattru, 1261 01:18:21,960 --> 01:18:23,690 hekk huwa pointer. 1262 01:18:23,690 --> 01:18:26,510 U hekk x huma l-istess ħaġa, 1263 01:18:26,510 --> 01:18:28,650 u għalhekk dak li ma hu li żżid y għal x, 1264 01:18:28,650 --> 01:18:31,820 li huwa l-istess ħaġa bħat timxi 'l quddiem fil-memorja li ħafna. 1265 01:18:31,820 --> 01:18:34,930 U issa x + y tagħtina xi tip ta 'indirizz, 1266 01:18:34,930 --> 01:18:37,570 u aħna dereference-indirizz jew isegwu l-vleġġa 1267 01:18:37,570 --> 01:18:41,640 sa fejn dak il-post fil-memorja huwa u aħna jiksbu l-valur minn dak il-post fil-memorja. 1268 01:18:41,640 --> 01:18:43,720 Għalhekk, hekk dawn iż-żewġ huma eżattament l-istess ħaġa. 1269 01:18:43,720 --> 01:18:45,840 Huwa biss zokkor sintattiku. 1270 01:18:45,840 --> 01:18:48,090 Huma jagħmlu l-istess ħaġa. Huma qed biss syntactics differenti għal xulxin. 1271 01:18:51,500 --> 01:18:57,590 >> Allura, dak li tista 'tmur ħażin ma pointers? Bħal, ħafna. Okay. Allura, affarijiet ħżiena. 1272 01:18:57,590 --> 01:19:02,410 Xi affarijiet ħżiena li tista 'tagħmel ma iċċekkjar jekk is-sejħa malloc tiegħek prospetti nulli, id-dritt? 1273 01:19:02,410 --> 01:19:06,560 F'dan il-każ, jien tistaqsi s-sistema li tagħti me - x'inhu dak in-numru? 1274 01:19:06,560 --> 01:19:11,200 Bħal 2000000000 darbiet 4, minħabba d-daqs ta 'numru sħiħ huwa ta' 4 bytes. 1275 01:19:11,200 --> 01:19:13,810 Jien tistaqsi lilha għall like 8000000000 bytes. 1276 01:19:13,810 --> 01:19:17,270 Of course kompjuter tiegħi mhux se tkun tista 'tagħti me li lura memorja ħafna. 1277 01:19:17,270 --> 01:19:20,960 U aħna ma tivverifika jekk dan huwa null, hekk meta aħna tipprova dereference dan matul hemm - 1278 01:19:20,960 --> 01:19:24,270 isegwu l-vleġġa sa fejn għaddej biex - aħna ma jkollhomx dak memorja. 1279 01:19:24,270 --> 01:19:27,150 Dan hu dak li nsejħu dereferencing pointer null. 1280 01:19:27,150 --> 01:19:29,710 U dan essenzjalment kawżi li inti segfault. 1281 01:19:29,710 --> 01:19:31,790 Dan huwa wieħed mill-modi kif inti tista segfault. 1282 01:19:34,090 --> 01:19:38,090 Affarijiet ħżiena oħra li tista 'tagħmel - oh ukoll. 1283 01:19:38,090 --> 01:19:40,650 Dan kien dereferencing pointer null. Okay. 1284 01:19:40,650 --> 01:19:45,160 Affarijiet ħżiena oħra - ukoll, li jiffissaw li inti biss jitqiegħed verifika fil hemm 1285 01:19:45,160 --> 01:19:46,980 li l-kontrolli dwar jekk l-pointer huwa null 1286 01:19:46,980 --> 01:19:51,000 u l-ħruġ mill-programm jekk dan jiġri li malloc jirritorna pointer null. 1287 01:19:55,110 --> 01:19:59,850 Dik hija l-komiks xkcd. Nies jifhmu issa. Sort ta '. 1288 01:20:06,120 --> 01:20:09,350 >> Allura, memorja. U jien marru fuq dan. 1289 01:20:09,350 --> 01:20:12,000 Aħna qed titlob malloc fil-linja, imma kull darba li nsejħu malloc 1290 01:20:12,000 --> 01:20:14,370 aħna qed jitilfu rekord ta 'fejn dan il-werrej hija li tipponta lejn, 1291 01:20:14,370 --> 01:20:15,750 għaliex aħna qed clobbering dan. 1292 01:20:15,750 --> 01:20:18,410 Allura, is-sejħa inizjali għall malloc tagħti me memorja hawn fuq. 1293 01:20:18,410 --> 01:20:19,990 Pointer pointers tiegħi għal dan. 1294 01:20:19,990 --> 01:20:23,020 Issa, jien ma ħielsa hija, hekk issa I call malloc mill-ġdid. 1295 01:20:23,020 --> 01:20:26,070 Issa punti hawn fuq. Issa memorja tiegħi hija li tipponta hawn fuq. 1296 01:20:26,070 --> 01:20:27,640 Identifikazzjoni hawn fuq. Identifikazzjoni hawn fuq. 1297 01:20:27,640 --> 01:20:31,820 Imma stajt mitlufa mogħdija ta 'l-indirizzi ta l-memorja hawn fuq li jiena allokati. 1298 01:20:31,820 --> 01:20:35,100 U hekk issa I ma jkollhom ebda referenza għalihom jibqgħalu. 1299 01:20:35,100 --> 01:20:37,230 So, I ma jista 'b'xejn minnhom barra ta' dan loop. 1300 01:20:37,230 --> 01:20:39,390 U hekk sabiex tiffissa xi ħaġa bħal din, 1301 01:20:39,390 --> 01:20:42,250 jekk tinsa memorja ħielsa u ikollok dan nixxija memorja, 1302 01:20:42,250 --> 01:20:45,810 Inti għandek biex ħielsa l-memorja ġewwa ta 'dan loop darba qed isir magħha. 1303 01:20:45,810 --> 01:20:51,400 Ukoll, dan huwa dak li jiġri. Naf lottijiet ta 'inti mibegħda dan. 1304 01:20:51,400 --> 01:20:55,270 Imma issa -! Yay Ikollok bħall 44000 kilobytes. 1305 01:20:55,270 --> 01:20:57,110 Allura, inti liberu li fl-aħħar tal-linja, 1306 01:20:57,110 --> 01:20:59,770 u li għaddej biex sempliċiment ħielsa l-memorja kull darba. 1307 01:20:59,770 --> 01:21:03,620 Essenzjalment, il-programm tiegħek ma jkollux telf tal-memorja aktar. 1308 01:21:03,620 --> 01:21:08,150 >> U issa xi ħaġa oħra li tista 'tagħmel huwa b'xejn xi memorja li inti stajt mitlub darbtejn. 1309 01:21:08,150 --> 01:21:11,060 F'dan il-każ, xi ħaġa malloc, int bdilt il-valur tagħha. 1310 01:21:11,060 --> 01:21:13,140 You ħielsa darba għaliex inti qal inti kienu jsir minnu. 1311 01:21:13,140 --> 01:21:14,940 Imma allura aħna meħlus mill-ġdid. 1312 01:21:14,940 --> 01:21:16,730 Din hija xi ħaġa li pretty bad. 1313 01:21:16,730 --> 01:21:18,820 Huwa mhux ser inizjalment segfault, 1314 01:21:18,820 --> 01:21:23,350 iżda wara filwaqt li dak li dan ma huwa d-doppju ħelsien dan corrupts istruttura borġ tiegħek, 1315 01:21:23,350 --> 01:21:27,200 u inti ser jitgħallmu ftit aktar dwar dan jekk inti tagħżel li tieħu klassi bħal CS61. 1316 01:21:27,200 --> 01:21:30,000 Iżda essenzjalment wara filwaqt kompjuter tiegħek se tikseb konfuż 1317 01:21:30,000 --> 01:21:33,010 dwar dak postijiet memorja huma fejn u fejn huwa maħżun - 1318 01:21:33,010 --> 01:21:34,800 fejn id-data hija maħżuna fil-memorja. 1319 01:21:34,800 --> 01:21:38,080 U hekk ħelsien pointer darbtejn hija ħaġa ħażina li inti ma trid tagħmel. 1320 01:21:38,080 --> 01:21:41,600 >> Affarijiet oħra li jistgħu imorru ħażin ma jkunx qiegħed juża sizeof. 1321 01:21:41,600 --> 01:21:44,460 Għalhekk, f'dan il-każ inti malloc 8 bytes, 1322 01:21:44,460 --> 01:21:46,700 u dak l-istess ħaġa bħala żewġ numri interi, id-dritt? 1323 01:21:46,700 --> 01:21:49,580 Allura, li perfettament sikur, imma huwa? 1324 01:21:49,580 --> 01:21:52,160 Ukoll, kif Lucas tkellem dwar l-arkitetturi differenti, 1325 01:21:52,160 --> 01:21:54,220 interi huma ta 'tulijiet differenti. 1326 01:21:54,220 --> 01:21:57,970 Għalhekk, fuq il-appliance li inti qed tuża, interi huma ta 'madwar 4 bytes, 1327 01:21:57,970 --> 01:22:02,370 iżda fuq xi sistema oħra li tista 'tkun 8 bytes jew jistgħu jkunu 16 bytes. 1328 01:22:02,370 --> 01:22:05,680 Għalhekk, jekk I biss jużaw dan in-numru hawn fuq, 1329 01:22:05,680 --> 01:22:07,310 dan il-programm jista 'jaħdem fuq il-appliance, 1330 01:22:07,310 --> 01:22:10,360 iżda mhux se talloka memorja biżżejjed fuq xi sistema oħra. 1331 01:22:10,360 --> 01:22:14,020 F'dan il-każ, dan huwa dak l-operatur sizeof huwa użat għall. 1332 01:22:14,020 --> 01:22:16,880 Meta nitolbu sizeof (int), dak li dan ma huwa 1333 01:22:16,880 --> 01:22:21,910  li jagħtina d-daqs ta 'numru sħiħ fuq is-sistema li l-programm qed taħdem. 1334 01:22:21,910 --> 01:22:25,490 Għalhekk, f'dan il-każ, sizeof (int) se jirritorna 4 dwar xi ħaġa bħal l-appliance, 1335 01:22:25,490 --> 01:22:29,980 u issa dan se 4 * 2, li huwa 8, 1336 01:22:29,980 --> 01:22:32,330 li huwa biss l-ammont ta 'spazju meħtieġ għal żewġ interi. 1337 01:22:32,330 --> 01:22:36,710 Fuq sistema differenti, jekk int huwa simili 16 bytes jew 8 bytes, 1338 01:22:36,710 --> 01:22:39,380 huwa biss se jirritornaw bytes biżżejjed biex taħżen dak l-ammont. 1339 01:22:41,830 --> 01:22:45,310 >> U fl-aħħarnett, structs. 1340 01:22:45,310 --> 01:22:48,340 Għalhekk, jekk inti riedu li jaħżen bord sudoku fil-memorja, kif jista 'nagħmlu dan? 1341 01:22:48,340 --> 01:22:51,570 Għandek mnejn taħseb bħal varjabbli l-ewwel ħaġa, 1342 01:22:51,570 --> 01:22:53,820 varjabbli ta 'tieni ħaġa, varjabbli għall-ħaġa tielet, 1343 01:22:53,820 --> 01:22:56,420 varjabbli għall-ħaġa 4 - ħażina, id-dritt? 1344 01:22:56,420 --> 01:23:00,750 Għalhekk, wieħed titjib inti tista 'tagħmel fuq quċċata ta' dan huwa li tagħmel 9 x 9 array. 1345 01:23:00,750 --> 01:23:04,480 Li l-multa, imma dak jekk inti ridt li jassoċjaw affarijiet oħra mal-bord sudoku 1346 01:23:04,480 --> 01:23:06,490 bħal dak li l-diffikultà tal-bord huwa, 1347 01:23:06,490 --> 01:23:11,740 jew, per eżempju, dak li score tiegħek huwa, jew kemm ħin huwa meħud li inti issolvi dan il-bord? 1348 01:23:11,740 --> 01:23:14,970 Ukoll, x'tista 'tagħmel huwa inti tista' toħloq Struct. 1349 01:23:14,970 --> 01:23:18,910 Dak li jien bażikament tgħid huwa li jien tiddefinixxi din l-istruttura hawn fuq, 1350 01:23:18,910 --> 01:23:23,230 u jien tiddefinixxi bord sudoku li tikkonsisti minn bord li hija 9 × 9. 1351 01:23:23,230 --> 01:23:26,650 >> U dak li għandha jkollha indikazzjonijiet għall-isem tal-livell. 1352 01:23:26,650 --> 01:23:30,730 Hija għandha wkoll xuy, li huma l-koordinati ta 'fejn I am dritt issa. 1353 01:23:30,730 --> 01:23:35,980 Hija għandha wkoll ħin mgħoddi [mhux intelliġibbli], u għandha l-għadd totali ta 'jiċċaqlaq stajt inputted s'issa. 1354 01:23:35,980 --> 01:23:40,010 U hekk f'dan il-każ, I tista 'grupp mazz sħiħ ta' data fis wieħed biss struttura 1355 01:23:40,010 --> 01:23:42,790 minflok li hija simili jtajru madwar bl-istess varjabbli differenti 1356 01:23:42,790 --> 01:23:44,540 li ma nistax verament jżommu rekord ta '. 1357 01:23:44,540 --> 01:23:49,720 U dan tikri us jkollhom biss sintassi sbieħ għall tip ta 'referenzar affarijiet differenti ġewwa ta' dan Struct. 1358 01:23:49,720 --> 01:23:53,430 I biss tista 'tagħmel board.board, u nieħu l-bord sudoku lura. 1359 01:23:53,430 --> 01:23:56,320 Board.level, I nikseb kif iebsa huwa. 1360 01:23:56,320 --> 01:24:00,540 Board.x u board.y agħtini l-koordinati ta 'fejn I jista' jkun fil-bord. 1361 01:24:00,540 --> 01:24:04,730 U hekk jien aċċess nsejħu l-oqsma fil-Struct. 1362 01:24:04,730 --> 01:24:08,840 Din tiddefinixxi sudokuBoard, li huwa tip li għandi. 1363 01:24:08,840 --> 01:24:14,800 U issa aħna qed hawn. I jkollhom varjabbli imsejjaħ "bord" ta 'sudokuBoard tip. 1364 01:24:14,800 --> 01:24:18,820 U hekk issa I tista 'aċċess l-oqsma kollha li jiffurmaw din l-istruttura hawn fuq. 1365 01:24:20,830 --> 01:24:22,450 >> Kwalunkwe mistoqsijiet dwar structs? Iva? 1366 01:24:22,450 --> 01:24:25,890 [Student] Għal int x, y, inti ddikjarat kemm fuq linja waħda? >> [Joseph] Uh-huh. 1367 01:24:25,890 --> 01:24:27,400 [Student] Għalhekk, tista 'biss tagħmel dan ma' kull wieħed minnhom? 1368 01:24:27,400 --> 01:24:31,200 Bħal fil x, y ħinijiet comma li total? 1369 01:24:31,200 --> 01:24:34,460 [Joseph] Iva, inti tista 'definittivament tagħmel dan, iżda r-raġuni nressaq xuy fuq l-istess linja - 1370 01:24:34,460 --> 01:24:36,330 u l-kwistjoni hija għaliex nistgħu biss tagħmel dan fuq l-istess linja? 1371 01:24:36,330 --> 01:24:38,600 Għaliex ma aħna biss jitqiegħed kollha ta 'dawn fuq il-linja istess 1372 01:24:38,600 --> 01:24:42,090 xu y huma relatati ma 'xulxin, 1373 01:24:42,090 --> 01:24:44,780 u dan huwa biss stylistically aktar korretta, f'ċertu sens, 1374 01:24:44,780 --> 01:24:46,600 għaliex dan huwa grupp żewġ affarijiet fl-istess linja 1375 01:24:46,600 --> 01:24:49,340 dik it-tip simili ta jirrelataw mal-istess ħaġa. 1376 01:24:49,340 --> 01:24:51,440 U jien biss maqsuma dawn apparti. Huwa biss ħaġa stil. 1377 01:24:51,440 --> 01:24:53,720 Hija funzjonalment mhijiex rilevanti. 1378 01:24:58,150 --> 01:24:59,270 Kwalunkwe mistoqsijiet oħra dwar structs? 1379 01:25:03,030 --> 01:25:06,620 Inti tista 'tiddefinixxi l-Pokdex ma' Struct. 1380 01:25:06,620 --> 01:25:11,720 A Pokémon għandha numru u għandu ittra, sid, tip. 1381 01:25:11,720 --> 01:25:16,990 U mbagħad jekk għandek firxa ta 'Pokémon, inti tista' tagħmel up a Pokdex, id-dritt? 1382 01:25:16,990 --> 01:25:20,810 Okay, berred. Allura, mistoqsijiet dwar structs. Dawk huma relatati ma structs. 1383 01:25:20,810 --> 01:25:25,270 >> Fl-aħħarnett, GDB. Xi jfisser GDB let you do? Hija ihallik debug program tiegħek. 1384 01:25:25,270 --> 01:25:27,650 U jekk int ma użati GDB, nixtieq rakkomandat jaraw il-qasir 1385 01:25:27,650 --> 01:25:31,250 u biss jmorru fuq hija GDB dak, kif inti jaħdmu magħha, kif inti tista 'tagħmel użu minnha, 1386 01:25:31,250 --> 01:25:32,900 u test fuq programm. 1387 01:25:32,900 --> 01:25:37,400 U hekk dak li GDB ihallik tagħmel huwa li tikri nieqaf-[mhux intelliġibbli] up program tiegħek 1388 01:25:37,400 --> 01:25:38,920 u linja prattiku. 1389 01:25:38,920 --> 01:25:42,600 Per eżempju, nixtieq li l-eżekuzzjoni nieqaf fuq bħal-linja 3 ta 'programm tiegħi, 1390 01:25:42,600 --> 01:25:46,010 u filwaqt li jien fuq linja 3 nista jistampa il-valuri kollha li qegħdin hemm. 1391 01:25:46,010 --> 01:25:49,710 U għalhekk dak li nsejħu bħal espressjonijiet fit f'linja 1392 01:25:49,710 --> 01:25:52,350 huwa nagħmlu sejħa dan tqegħid breakpoint fuq dik il-linja 1393 01:25:52,350 --> 01:25:55,920 u allura nistgħu jistampa l-varjabbli fil-qagħda tal-programm dak iż-żmien. 1394 01:25:55,920 --> 01:25:58,990 >> Nistgħu mbagħad minn hemm pass permezz tal-programm linja b'linja. 1395 01:25:58,990 --> 01:26:03,200 U allura nistgħu nħarsu lejn l-istat tal-munzell fil-ħin. 1396 01:26:03,200 --> 01:26:08,600 U għalhekk sabiex jużaw GDB, dak li nagħmlu hu li nsejħu clang fuq il-fajl C, 1397 01:26:08,600 --> 01:26:11,290 iżda aħna jkollu jgħaddihom l ggdb-bandiera. 1398 01:26:11,290 --> 01:26:15,850 U ladarba aħna qed isir ma 'li aħna biss run GDB fuq il-fajl output li tirriżulta. 1399 01:26:15,850 --> 01:26:18,810 U hekk ikollok xi massa bħal ta 'test bħal dan, 1400 01:26:18,810 --> 01:26:21,990 imma verament kull ma għandek tagħmel huwa tip fil-kmandi fil-bidu. 1401 01:26:21,990 --> 01:26:24,250 Break prinċipali tpoġġi breakpoint fuq prinċipali. 1402 01:26:24,250 --> 01:26:28,470 Lista 400 jelenka l-linji ta 'kodiċi ta' madwar linja 400. 1403 01:26:28,470 --> 01:26:31,410 U hekk f'dan il-każ tista 'biss ħarsa madwar u jgħidu, oh, 1404 01:26:31,410 --> 01:26:34,360 Irrid li jistabbilixxu breakpoint fuq linja 397, li hija din il-linja, 1405 01:26:34,360 --> 01:26:37,170 u mbagħad programm tiegħek isib dak il-pass u li għaddej biex jinkiser. 1406 01:26:37,170 --> 01:26:41,120 Huwa ser nieqaf hemmhekk, u inti tista 'jistampa, per eżempju, il-valur tal-baxx jew għoli. 1407 01:26:41,120 --> 01:26:46,410 U hekk hemm mazz ta 'kmandi għandek bżonn tkun taf, 1408 01:26:46,410 --> 01:26:48,660 u dan Wirja se jitla 'fuq il-websajt, 1409 01:26:48,660 --> 01:26:54,000 hekk jekk inti biss trid referenza dawn jew simili jqiegħdhom fuq folji iqarrqu tiegħek, tħossok liberu. 1410 01:26:54,000 --> 01:27:00,650 >> Kessaħ. Dan kien Quiz Reviżjoni 0, u aħna ser twaħħal madwar jekk għandek xi mistoqsijiet. 1411 01:27:00,650 --> 01:27:03,850 Kull dritt. 1412 01:27:03,850 --> 01:27:09,030 >>  [Applause] 1413 01:27:09,030 --> 01:27:13,000 >> [CS50.TV]