>> [સંગીત વગાડવાનો]
ડો LLOYD: બધા અધિકાર.
એક વિચિત્ર વિષય પ્રકારની, અધિકાર?
જાદુ નંબરો.
તેમણે જ્યારે તેમણે શું અર્થ ડો જાદુ નંબરો વિશે વાત?
વેલ, આ કાર્યક્રમો અમુક અમે CS50 માં તેવા પરચૂરણ ખર્ચ કર્યો
અત્યાર સુધી કેટલાક વિચિત્ર આવી હોય નંબરો પ્રકારની તેમને ફેંકી દે છે.
કદાચ કારણોસર અમે નથી સંપૂર્ણપણે હમણાં સમજે છે.
ઉદાહરણ તરીકે, મારિયો સમસ્યા, અમે 23 પિરામિડ ઓફ ઊંચાઇ આવ્યાં.
અમે સ્પષ્ટપણે તમે કહ્યું હતું કે કરતાં વધારે 23 જઇ શકો છો.
>> પણ 23 શું અર્થ છે?
વેલ, તમે વાંચી તો કાળજીપૂર્વક તમે સ્પેક
કે જે જોઈ હોય શકે કારણ કે અમે 23 તે આંટવું
છે પ્રમાણભૂત ઊંચાઇ કારણ કે ટર્મિનલ વિન્ડોમાં 24 છે.
અને અમે હોય છે, તેથી જો પિરામિડ કરતાં ઊંચા હોય છે,
તે આ વિચિત્ર બાબત કરી શકે જ્યાં તે સ્ક્રીન બંધ ચાલે છે.
તમે જાણો છો અને શું કરે છે તે હક, સંદર્ભમાં અર્થ?
>> 23 તરત જ સ્પષ્ટ અર્થ છે કોઈકને જે તમારા કાર્યક્રમ જુએ છે
અને કદાચ અલગ છે કદ ટર્મિનલ વિન્ડો?
કદાચ નથી.
તે ઠીક છે, જેવી લાગે છે.
વેલ, તે શા માટે માત્ર ઓછી 23 કરતાં છે?
સામાન્ય રીતે, તે પ્રકારની છે એક ખરાબ આદત ખરેખર
તમારા કોડમાં સ્થિરાંકો લખવા માટે.
જ્યારે તમે વાસ્તવમાં નથી, આમ કરવાથી તમારા કોડમાં સતત લખવા,
તેનો ઉપયોગ તરીકે ઓળખવામાં ક્યારેક છે જાદુ નંબરો, કંઈક છે, જે
અમે સામાન્ય રીતે પ્રયાસ કરો અને ટાળવા માંગો.
>> ઉદાહરણ તરીકે, ચાલો એક નજર કરીએ અહીં આ સરળ કાર્ય છે.
દેખીતી રીતે કોઈ માહિતી હોય છે સી પ્રકાર કાર્ડ અથવા તૂતક કહેવાય છે.
તેથી માત્ર મારી સાથે સહન.
તે થોડો છે સ્યુડોકોડનો અહીં મિશ્ર.
આ કાર્ય કહેવાય છે કે જે દેખીતી રીતે કાર્ડ વ્યવહાર
તેના પરિમાણ તરીકે એક ડેક લે છે, અને મને ઇચ્છા આઉટપુટ એક કાર્ડ.
>> અને હું અહીં જ્યાં હું કંઈક કરી રહ્યો છું 0 થી 52 ચાલે છે કે લૂપ છે
અને હું એક કાર્ડ વ્યવહાર.
વેલ, અમે એક જાદુ મળી છે અહીં નંબર, અધિકાર.
તમે જાદુ નંબર છે શું જુઓ છો?
અથવા વધુ અગત્યનું, તમે શું સમસ્યા અહીં છે તે જુઓ?
ખાસ કરીને આ તો માત્ર એક કાર્ય છે
એક તેના પોતાના ફાઈલમાં સમાવે છે કે જે ફોલ્ડર
વિવિધ એક ટોળું ફાઇલો, જેમાં દરેક
કાર્ડો એક ડેક કરવા માટે બીજી વસ્તુ છે.
કદાચ તે તેમને શફલ્સ, અથવા એક હાથ વહેવાર પાંચ કાર્ડો બદલે એક કાર્ડ.
>> તમે શું જુઓ છો સમસ્યા અહીં હોઇ શકે છે?
તમે જાદુ નંબર જુઓ છો હું કોડ માં ઇન્જેક્ટ છે?
તે હક, 52 છે.
>> જેમ, તર્ક તો તમે કદાચ ખબર છે, બરાબર.
પ્રમાણભૂત તૂતક જેવું કાર્ડ 52 કાર્ડો છે.
પરંતુ અમારા કાર્યક્રમ માં, તે માત્ર છે પ્રકારની ત્યાં આસપાસ તરતી.
અચાનક તમામ 52 છે એવું છે.
>> આ ઉકેલવા માટે એક રીત છે સમસ્યા આ કરવા માટે છે.
હવે અમે ખૂબ જ સ્પષ્ટપણે છો 52 તૂતક માપ બહાર ફોન.
તે થોડી વધુ સાહજિક આપે જ્યારે લૂપ માટે અર્થ
અમે પછી, હું કહું છું પાછળથી તૂતક માપ કરતાં ઓછી છે.
તે માત્ર 52 કહેતા કરતાં વધુ સારી લાગે છે.
હવે આ ખરેખર આ સમસ્યા ઠીક નથી.
તે કેટલાક સાંકેતિક આપે છે સતત અર્થ.
પરંતુ તે પ્રકારની ખરેખર કરે અન્ય સમસ્યા રજૂ
કે તરત જ સ્પષ્ટ ન પણ હોઈ શકે.
પણ આ ચલ તો globally-- જાહેર કરવામાં આવે છે
તમે તે શું યાદ નથી અમે જાહેર કરે છે ત્યારે એનો અર્થ એ થાય
વૈશ્વિક સ્થાનિક વિરુદ્ધ ચલ?
અમે એક ચલ જાહેર હોય તો પણ વૈશ્વિક સ્તરે શું હોય તો
અન્ય કાર્ય કાર્યો અમારી સેવામાંથી
કાર્ડ મેનીપ્યુલેશન સાથે સોદો કે અજાણતા, તૂતક માપ બદલે છે
અથવા તે દ્વારા તે વધે છે 1 અથવા 1 દ્વારા તે ઘટે છે.
તે સાચું છે, મુશ્કેલી જોડણી શકે છે?
અમે એક સમૂહ સાથે વ્યવહાર કરી રહ્યા છો, ખાસ કરીને જો કાર્ડ સંપૂર્ણ ડેક shuffling જ્યાં
જરૂરી છે.
તૂતક માપ ઘટાડો થયો છે, તો 1 દ્વારા, ઉદાહરણ તરીકે, 51,
અમે ખરેખર shuffling નથી કરી રહ્યાં છો કદાચ બધા કાર્ડ.
અમે તેમને એક બહાર છોડી રહ્યા છો.
અને તે કિંમત કદાચ હોઈ શકે આગાહી અથવા ખરાબ અભિનેતા દ્વારા શોષણ.
>> સી કહેવાય છે તે પૂરા પાડે છે preprocessor ડાઈરેક્ટીવ, જે
પણ મેક્રો માટે કહેવામાં આવે છે સાંકેતિક સ્થિરાંકો બનાવવા.
અને હકીકતમાં, જો તમે પહેલાથી જ કર્યું છે preprocessor ડાઈરેક્ટીવ જોવા મળે છે,
તમે સાંભળ્યું ન હોય તો પણ # સમાવેશ થાય છે સાથે કહે છે.
તે એક મેક્રો અન્ય ઉદાહરણ છે અથવા preprocessor ડાઈરેક્ટીવ.
>> આ રીતે સાંકેતિક સ્થિરાંકો બનાવવા માટે, અથવા સતત એક નામ આપી
તે વધુ છે કે જેથી જેનો અર્થ થાય છે, નીચે પ્રમાણે છે.
# વ્યાખ્યાયિત, નામ, રિપ્લેસમેન્ટ.
કોરે ખરેખર મહત્વપૂર્ણ અહીં ખરેખર ઝડપી.
એક અર્ધવિરામ મૂકી નથી તમારા # વ્યાખ્યાયિત ઓવરને.
તેથી તે # વ્યાખ્યાયિત, નામ, રિપ્લેસમેન્ટ છે.
>> તમારા કાર્યક્રમ કમ્પાઇલ હોય ત્યારે, શું ખરેખર થાય છે
જઈને જો કમ્પાઇલર છે તમારો કોડ મારફતે જાઓ
અને દરેક ઘટક બદલો ગમે સાથે શબ્દ "નામ" તમે
રિપ્લેસમેન્ટ તરીકે મૂકો.
એવીજ રીતે # સમાવેશ થાય છે છે, તો સૉર્ટ નકલ અને પેસ્ટ માટે સમાન છે,
પછી # વ્યાખ્યાયિત સૉર્ટ છે શોધવા અને બદલવા માટે સમાન,
શું તમે ક્યારેય એક કે લક્ષણ ઉપયોગ કર્યા તો શબ્દ પ્રક્રિયા કાર્યક્રમ, ઉદાહરણ તરીકે.
>> ઉદાહરણ તરીકે, જો તેથી હું 3.14159265 તરીકે PI વ્યાખ્યાયિત,
તમે વધુ સારી રીતે ગાણિતિક હો તો વળેલું અને તમે અચાનક
3.14159265 ઉડતી જોવા આસપાસ તમારો કોડ માં,
તમે કદાચ તે PI વિશે વાત છે ખબર.
પરંતુ કદાચ અમે તેને એક આપી શકે છે થોડી વધુ સાંકેતિક અર્થ.
અને અમે તેના બદલે # વ્યાખ્યાયિત કહી શકો છો નંબરો કે કોળિયો તરીકે PI
હું રાખવા નથી જઈ રહ્યો છું કે ઉપર અને ઉપર વાંચી.
>> અને શું પછી શું ચાલી રહ્યું છે આ કાર્યક્રમ હોય ત્યારે કમ્પાઇલ સમય છે
સંકલિત, પ્રથમ વસ્તુ છે કે જે થશે તે મારફતે જાઓ કરશે
અને તે દર વખતે બદલશે તે મૂડી પી, મૂડી હું જુએ
તે શાબ્દિક સાથે બદલો પડશે 3.14 અને તેથી પર, કે જેથી તમે
તે દરેક પ્રકારના કરવાની જરૂર નથી સમય હજુ પણ તમારા કાર્યક્રમ છે, જ્યારે
આ વિધેય હોય છે કે તમે તમે કામ કરી રહ્યા છીએ, કારણ કે અપેક્ષા
ફેરફાર સાથે, ગુણાકાર, તે PI છે ગમે, ભાગાકાર.
>> તમે આ માટે મર્યાદિત નથી માત્ર નંબરો માટે અવેજી.
ઉદાહરણ તરીકે, હું વ્યાખ્યાયિત કરી શકે છે CS50 શબ્દમાળા તરીકે કોર્સ.
આ કિસ્સામાં, જ્યારે કાર્યક્રમ સંકલિત છે,
# વ્યાખ્યાયિત મારફતે જશે કોડ છે, દર વખતે બદલો
તે CS50 શબ્દમાળા સાથે "અલબત્ત" જુએ છે.
>> તમે અહીં નોટિસ પડશે પણ મને લાગે છે કે વારંવાર
# વ્યાખ્યાયિત મારા બધા સાંકેતિક વ્યાખ્યાયિત સ્થિરાંકો, તેથી વાત કરવા માટે
બધા કેપ્સ હંમેશા હોય છે.
તે સંમેલન છે.
તે જરૂરી નથી.
કારણ સામાન્ય રીતે લોકો ઉપયોગ કરશે બધા પાટનગરો તેઓ #defining કરી રહ્યા હો ત્યારે
કે જે હમણાં જ તે ખરેખર સ્પષ્ટ કરવા માટે છે મારી કોડ આ ચોક્કસ તત્વ
વ્યાખ્યાયિત સતત છે.
તે લોઅરકેસ, તો તે શક્ય છે કે તે એક ચલ સાથે ગેરસમજ થઈ શકે છે.
અને તે કદાચ છે એક સારી બાબત નથી.
>> તેથી આ ખાસ ઉકેલ વધુ સારી છે
અગાઉના મુદ્દાઓ ક્યાં કરતાં.
હું પ્રથમ # વ્યાખ્યાયિત ડેક કદ 52, પછી તો હવે અહીં 52, અથવા તૂતક માપ મારા ઉપયોગ,
વધુ ઘણો સાહજિક અને ઘણો સુરક્ષિત છે.
તમે સતત ચાલાકી કરી શકો છો.
તમે 52 વત્તા વત્તા કહી શકો છો.
એ 53 માટે તે બદલવા માટે ચાલી રહ્યું છે.
તમે કંઈક કરવા માટે 52 બદલી શકતા નથી.
>> તમે એક ચલ બદલી શકો છો જેની કિંમત 52 છે,
જે અમે પહેલાં હતી પ્રથમ સુધારો હતો.
અને તમે વધારો કરી શકે છે 53 કે ચલ.
પરંતુ તમે 52 વત્તા પ્લસ અને કહી શકો છો અચાનક 53 માં 52 ચાલુ હોય છે.
52 હંમેશા 52 છે.
અને તેથી તમે અજાણતા બદલી શકતા નથી અહીં તે ફેરફાર કરીને ડેક કદ,
>> અન્ય સારી બાજુ જોકે અસર છે
કે તમે પરિચિત છે કે નથી સમગ્ર વિશ્વમાં તમામ દેશોમાં
કદ 52 કાર્ડો એક ડેક ઉપયોગ કરો છો?
ઉદાહરણ તરીકે, તે ખરેખર સામાન્ય છે જર્મની, 32 એક ડેક કદ ઉપયોગ
તેઓ કેટલાક છીનવી જ્યાં નીચલા કિંમત કાર્ડ.
અને આ કિસ્સામાં, હું પોર્ટ મારા સેવામાંથી માગે છે
સાથે વ્યવહાર કે કાર્યો જર્મની કાર્ડ મેનીપ્યુલેશન.
હું પ્રથમ ઉદાહરણ શકે અમે દર્શાવે છે, જાઓ અને બદલવા માટે છે
32 મારી કોડ 52 ની તમામ ઘટકોને.
>> પરંતુ અહીં, હું વ્યાખ્યાયિત તો ડેક કદ મારી કોડ ખૂબ જ ટોચ પર 32,
હું તેને બદલવા માટે જરૂર હોય તો, હું કરી શકો છો માત્ર જાઓ અને એક વસ્તુ છે કે બદલો.
મારી કોડ પુનઃકમ્પાઈલ, અને બધા અચાનક તે મારફતે પ્રસરણ પામે છે.
હકીકતમાં, અમે ડેક બદલી શકો છો અમે ઇચ્છો તે કોઇપણ કિંમત માપ.
>> હું તમને વ્યાજ શકે તૂતક માપ દુકાન ગેમ?
>> હું ડો લોયડ છું.
અને આ CS50 છે.