Doug LLOYD: Kif tibda ħidma ma 'funzjonijiet, Ħaġa oħra se ssir verament importanti li wieħed jifhem, li huwa l-kunċett ta 'ambitu varjabbli. Allura ambitu huwa karatteristika ta 'varjabbli li jiddefinixxi Minn liema funzjonijiet dak il-varjabbli jistgħu jiġu aċċessati. Hemm żewġ ambiti ewlenin fis-C, varjabbli lokali u varjabbli globali. Issa, varjabbli lokali tista 'biss jiġu aċċessati fil-funzjonijiet fejn dawn qed jinħolqu. Huma ma jistgħux jiġu aċċessati minn kull oħra funzjoni li jeżisti fil-programm tiegħek, biss il-funzjoni fil li hija ġiet maħluqa. Varjabbli globali, fuq il- naħa l-oħra, jistgħu jiġu aċċessati minn kull funzjoni fil-programm. U r-raġuni għal dan hi għaliex mhux qed maħluqa fl-intern ta 'kwalunkwe funzjoni partikolari. Aħna niddikjaraw minnhom barra tal il-funzjonijiet kollha, li ifisser li kull funzjoni jaf fejn huwa u tista 'aċċess u timmanipula dan. S'issa fil-kors li inti stajt pretty ħafna ilhom jaħdmu esklussivament ma 'varjabbli lokali. Hawn eżempju ta 'ħafna, ħafna funzjoni prinċipali sempliċi u sempliċi ħafna Funzjoni addizzjonali li konna bil-miktub. F'dan il-każ, x, li Stajt kkulurita aħdar biss li tenfasizza l-lokalità jew l-ambitu ta 'dak il-varjabbli, huwa lokali għall-funzjoni tripla. prinċipali ma jistax jirreferi għal x-livelli kollha. Ma tafx x'inhu. Ebda funzjoni oħra, fil-fatt, jekk irridu kellhom funzjonijiet addizzjonali fil hawn, tista 'tirreferi għall x. Bl-istess mod, jirriżulta li stajt b'lewn ikħal, huwa lokali biss lill prinċipali. Biss prinċipali jaf liema ir-riżultat varjabbli huwa. triple ma tistax tużah. Issa kif semmejt, jeżistu varjabbli globali. Jekk inti tiddikjara dak il-varjabbli barra ta 'kwalunkwe funzjoni, il-funzjonijiet kollha fil- programm jista 'jirreferi għaliha. Allura f'dan il-każ stajt enfasizzat fir aħdar dikjarazzjoni varjabbli globali. F'dan il-każ, il- benesseri varjabbli ddikjarati huwa msejjaħ globali, just biex jkun estremament ċara dwar dan. Huwa ta 'float tip. U jien tassenja din l-valur 0.5050. Int ser ikollok avviż li fl prinċipali u triple, I am kapaċi li jirreferu għal globali. U fil-fatt, jekk immur permezz tal-programm kif indikat, l-ewwel sejħiet ewlenin triple, timmultiplika tripla globali bi 3, li settijiet valur tagħha sa 1.5-xi ħaġa, 1.51 jew xi ħaġa bħal dik, u imbagħad prinċipali prints wkoll il-valur tal globali. Allura prinċipali mhux se jistampa 0.5050, huwa se jistampa żminijiet globali 3, 1.51. Allura inti ħadthom ltqajna biex ikunu attenti meta int taħdem ma 'varjabbli globali. Waqt li jkunu qed flessibbli ħafna fil jkunu jistgħu jgħaddu informazzjoni madwar hekk li kull funzjoni tista 'tagħmel użu minnha, huwa wkoll jista 'jkollha xi konsegwenzi perikolużi jekk il-bidliet funzjoni waħda il-valur ta 'varjabbli qabel ma tistenna li jinbidlu. Għaliex ma jimpurtax din id-distinzjoni? Għalfejn nagħmlu kura jekk xi varjabbli huma lokali u oħrajn huma globali? Ukoll, għall-parti l-kbira, varjabbli lokali fl C huma dak li sejjaħ għaddiet mill-valur meta nagħmlu sejħa funzjoni. Xi tfisser? Ukoll, meta varjabbli tgħaddi mill-valur, l-callee, li huwa mod ieħor kif tgħid l-funzjoni li qed tirċievi l-varjabbli li gets għadda fi bhala input, attwalment ma jirċevix din varjabbli innifsu. Hija tirċievi tagħha stess Kopja ta 'din taħdem magħhom. Din hija distinzjoni verament importanti. Aħna biss raw it-tieni ilu li ma varjabbli globali, jekk aħna jimmanipula l-globali varjabbli fil-funzjoni waħda, l-effett f'dik il-funzjoni waħda twettaq permezz għal kull funzjoni oħra. Iżda ma 'varjabbli lokali, li mhux veru. Kull funzjoni meta jirċievi varjabbli bħala input jirċievu kopji ta 'dawk il-varjabbli, mhux il-varjabbli nfushom. Allura x'inhi l-effett sekondarju ta 'dak? Dan ifisser li l-varjabbli fil l-sejjieħ, il-funzjoni li qed tagħmel is-sejħa funzjoni, huwa mhux mibdula sakemm inti override dan. Per eżempju, f'dan il-kodiċi foo mhux nbidel f'xejn. Foo int ugwali 4, sejħa triple tal foo, ġewwa ta 'triple, nistgħu nistennew li foo kieku jiġi mmultiplikat bi 3 u lura, imma hemm attwalment l-ebda effett. Hawnhekk għalkemm, differenza sottili ħafna. Dan ma jkollu l-effett li rridu. Inti tara għaliex? Aħna qed imperattivi foo fi prinċipali f'dan il-ħin. Allura foo int ugwali 4, foo ugwali foo triplu, meta nagħmlu dik is-sejħa, triple gets kopja proprja tiegħu tal foo, kopja proprja tiegħu tal-4. Hija tgħid ritorn 4 darbiet 3, jew kwalunkwe varjabbli gets għadda fi żminijiet 3. U allura aħna tassenja r-ritorn valur tal tripla għall foo mill-ġdid. Allura dan fil-fatt ikun jissostitwixxu foo. Dan huwa l-uniku mod biex isir dan ma varjabbli lokali. Allura issa jekk aħna żid ieħor linja tal-kodiċi hawn fl-aħħar tal ewlenija biex jistampa l-valur tal foo, ikun fil-fatt jistampa 12. Ambitu varjabbli hija ġeneralment mhux wisq ta 'problema jekk inti isem kollha ta 'tiegħek varjabbli affarijiet differenti. Iżda jistgħu jiksbu tip ta 'diżgustanti jekk l-istess isem varjabbli jidher fil-funzjonijiet multipli, li se jiġri ħafna. Jekk inti qatt jagħmlu xogħol fil -dinja reali fejn inti taħdem fuq kollaborattiv programmi u nies fi gruppi differenti qed jaħdmu flimkien biex jiktbu l-istess programm jew l-istess sett ta 'programmi, dawn ser spiss użu mill-ġdid varjabbli ismijiet, b'mod partikolari dawk komuni bħal x, y, i, j, u l-bqija. Imma meta fatturi varjabbli l-istess isem, il-kwistjonijiet ambitu jistgħu jiksbu ftit delikati li parse. Per eżempju, inti taf dak li jkun stampat fl-aħħar ta 'dan il-programm partikolari? Tieħu minuta. Pause il-video u aqra permezz ta 'dan il-programm. Tista 'tara fil-quċċata aħna jkollu dikjarazzjoni funzjoni għal funzjoni msejħa inkrement. Dik il-funzjoni tieħu waħda parametru, integer li nitolbu x. U outputs integer. Dik hija l-tip ta 'ritorn fil-bidu. Imbagħad għandna prinċipali, koppja ta 'linji tal-kodiċi fil prinċipali, l-aħħar minnhom hija dikjarazzjoni print. U ftakar, dak l-kwistjoni hawnhekk. Dak li huwa attwalment se tkun stampati fl-aħħar ta din il-funzjoni? U allura aħna attwalment ikollhom l- definizzjoni ta 'inkrement hawn taħt. Allura tieħu minuta, pass permezz il-kodiċi, traċċa affarijiet out. Taf liema se jiġi stampat fil tmiem dan il-programm partikolari? Kull dritt. Nisperaw, inti ħadt ftit sekondi li tipprova u parse dan wieħed out. Ejja nagħmlu dan flimkien. Hekk stajt qasmu l-inkrement tal dikjarazzjoni fil-quċċata hemmhekk. Kien tip ta 'distrazzjoni. Mhuwiex varjabbli tagħha stess. Huwa ma jkollu ambitu tagħha stess. Huwa biss funzjoni dikjarazzjoni, hekk għal skopijiet ta 'tipprova parse out x'hemm jiġri f'dan il-programm, nistgħu kif ukoll biss jevitaw dan. Issa għandna f'dan il-każ, il- Raġuni din il-problema hija delikata huwa għaliex għandna varjabbli lokali fl kemm prinċipali u inkrement, li kull wieħed minnhom huwa msejjaħ x. U naturalment il-qofol ta 'din il-kwistjoni hija jippruvaw suss liema x gets inbidlet u kif ma jiksbu mibdula. Hekk stajt kkulurita kull każ ta 'x li l-lokali għal aħmar prinċipali. U stajt kkulurita kull każ ta x hu lokali biex inkrement blu. Avviż f'dak tielet linja ta prinċipali, y ugwali inkrement x, li inkrement mhux qed għadda x prinċipali; jew il aħmar x. Huwa jkollna għadda kopja ta 'dan. U huwa biss se taħdem ma li kopja tagħha, il-blu x. Jekk int matematikament inklinat, inti tista jkunu minflok ħsieb ta 'dan bħala x sub m għall prinċipali u x sub i għall inkrement. Imma hija l-istess idea. x sub m, jew il-aħmar x tal fil-slide ta 'qabel, huma l-varjabbli li huma local-- huwa l-każ ta 'x pjuttost li huwa lokali li prinċipali, u x sub i, jew il- varjabbli blu fil-slide ta 'qabel, huma l-każijiet ta 'x li huma lokali biex inkrement. Allura, inti kienu kapaċi biex insemmu dak din il-funzjoni stampata fl-aħħar? Jien Doug Lloyd, u dan huwa CS50.