1 00:00:00,000 --> 00:00:02,350 >> [સંગીત વગાડવાનો] 2 00:00:02,350 --> 00:00:05,444 3 00:00:05,444 --> 00:00:06,360 ડો LLOYD: બધા અધિકાર. 4 00:00:06,360 --> 00:00:07,770 એક વિચિત્ર વિષય પ્રકારની, અધિકાર? 5 00:00:07,770 --> 00:00:09,050 જાદુ નંબરો. 6 00:00:09,050 --> 00:00:12,012 તેમણે જ્યારે તેમણે શું અર્થ ડો જાદુ નંબરો વિશે વાત? 7 00:00:12,012 --> 00:00:14,220 વેલ, આ કાર્યક્રમો અમુક અમે CS50 માં તેવા પરચૂરણ ખર્ચ કર્યો 8 00:00:14,220 --> 00:00:16,660 અત્યાર સુધી કેટલાક વિચિત્ર આવી હોય નંબરો પ્રકારની તેમને ફેંકી દે છે. 9 00:00:16,660 --> 00:00:19,680 કદાચ કારણોસર અમે નથી સંપૂર્ણપણે હમણાં સમજે છે. 10 00:00:19,680 --> 00:00:23,950 ઉદાહરણ તરીકે, મારિયો સમસ્યા, અમે 23 પિરામિડ ઓફ ઊંચાઇ આવ્યાં. 11 00:00:23,950 --> 00:00:26,880 અમે સ્પષ્ટપણે તમે કહ્યું હતું કે કરતાં વધારે 23 જઇ શકો છો. 12 00:00:26,880 --> 00:00:28,702 >> પણ 23 શું અર્થ છે? 13 00:00:28,702 --> 00:00:30,410 વેલ, તમે વાંચી તો કાળજીપૂર્વક તમે સ્પેક 14 00:00:30,410 --> 00:00:32,493 કે જે જોઈ હોય શકે કારણ કે અમે 23 તે આંટવું 15 00:00:32,493 --> 00:00:36,160 છે પ્રમાણભૂત ઊંચાઇ કારણ કે ટર્મિનલ વિન્ડોમાં 24 છે. 16 00:00:36,160 --> 00:00:38,860 અને અમે હોય છે, તેથી જો પિરામિડ કરતાં ઊંચા હોય છે, 17 00:00:38,860 --> 00:00:41,290 તે આ વિચિત્ર બાબત કરી શકે જ્યાં તે સ્ક્રીન બંધ ચાલે છે. 18 00:00:41,290 --> 00:00:45,140 તમે જાણો છો અને શું કરે છે તે હક, સંદર્ભમાં અર્થ? 19 00:00:45,140 --> 00:00:48,880 >> 23 તરત જ સ્પષ્ટ અર્થ છે કોઈકને જે તમારા કાર્યક્રમ જુએ છે 20 00:00:48,880 --> 00:00:51,550 અને કદાચ અલગ છે કદ ટર્મિનલ વિન્ડો? 21 00:00:51,550 --> 00:00:52,330 કદાચ નથી. 22 00:00:52,330 --> 00:00:53,080 તે ઠીક છે, જેવી લાગે છે. 23 00:00:53,080 --> 00:00:55,005 વેલ, તે શા માટે માત્ર ઓછી 23 કરતાં છે? 24 00:00:55,005 --> 00:00:56,880 સામાન્ય રીતે, તે પ્રકારની છે એક ખરાબ આદત ખરેખર 25 00:00:56,880 --> 00:00:58,940 તમારા કોડમાં સ્થિરાંકો લખવા માટે. 26 00:00:58,940 --> 00:01:02,190 જ્યારે તમે વાસ્તવમાં નથી, આમ કરવાથી તમારા કોડમાં સતત લખવા, 27 00:01:02,190 --> 00:01:05,630 તેનો ઉપયોગ તરીકે ઓળખવામાં ક્યારેક છે જાદુ નંબરો, કંઈક છે, જે 28 00:01:05,630 --> 00:01:08,030 અમે સામાન્ય રીતે પ્રયાસ કરો અને ટાળવા માંગો. 29 00:01:08,030 --> 00:01:12,830 >> ઉદાહરણ તરીકે, ચાલો એક નજર કરીએ અહીં આ સરળ કાર્ય છે. 30 00:01:12,830 --> 00:01:15,726 દેખીતી રીતે કોઈ માહિતી હોય છે સી પ્રકાર કાર્ડ અથવા તૂતક કહેવાય છે. 31 00:01:15,726 --> 00:01:16,600 તેથી માત્ર મારી સાથે સહન. 32 00:01:16,600 --> 00:01:18,910 તે થોડો છે સ્યુડોકોડનો અહીં મિશ્ર. 33 00:01:18,910 --> 00:01:21,050 આ કાર્ય કહેવાય છે કે જે દેખીતી રીતે કાર્ડ વ્યવહાર 34 00:01:21,050 --> 00:01:26,570 તેના પરિમાણ તરીકે એક ડેક લે છે, અને મને ઇચ્છા આઉટપુટ એક કાર્ડ. 35 00:01:26,570 --> 00:01:30,990 >> અને હું અહીં જ્યાં હું કંઈક કરી રહ્યો છું 0 થી 52 ચાલે છે કે લૂપ છે 36 00:01:30,990 --> 00:01:33,394 અને હું એક કાર્ડ વ્યવહાર. 37 00:01:33,394 --> 00:01:35,310 વેલ, અમે એક જાદુ મળી છે અહીં નંબર, અધિકાર. 38 00:01:35,310 --> 00:01:38,790 તમે જાદુ નંબર છે શું જુઓ છો? 39 00:01:38,790 --> 00:01:42,280 અથવા વધુ અગત્યનું, તમે શું સમસ્યા અહીં છે તે જુઓ? 40 00:01:42,280 --> 00:01:44,310 ખાસ કરીને આ તો માત્ર એક કાર્ય છે 41 00:01:44,310 --> 00:01:48,030 એક તેના પોતાના ફાઈલમાં સમાવે છે કે જે ફોલ્ડર 42 00:01:48,030 --> 00:01:49,970 વિવિધ એક ટોળું ફાઇલો, જેમાં દરેક 43 00:01:49,970 --> 00:01:51,670 કાર્ડો એક ડેક કરવા માટે બીજી વસ્તુ છે. 44 00:01:51,670 --> 00:01:57,310 કદાચ તે તેમને શફલ્સ, અથવા એક હાથ વહેવાર પાંચ કાર્ડો બદલે એક કાર્ડ. 45 00:01:57,310 --> 00:01:59,420 >> તમે શું જુઓ છો સમસ્યા અહીં હોઇ શકે છે? 46 00:01:59,420 --> 00:02:03,220 તમે જાદુ નંબર જુઓ છો હું કોડ માં ઇન્જેક્ટ છે? 47 00:02:03,220 --> 00:02:04,390 તે હક, 52 છે. 48 00:02:04,390 --> 00:02:06,440 >> જેમ, તર્ક તો તમે કદાચ ખબર છે, બરાબર. 49 00:02:06,440 --> 00:02:09,740 પ્રમાણભૂત તૂતક જેવું કાર્ડ 52 કાર્ડો છે. 50 00:02:09,740 --> 00:02:12,570 પરંતુ અમારા કાર્યક્રમ માં, તે માત્ર છે પ્રકારની ત્યાં આસપાસ તરતી. 51 00:02:12,570 --> 00:02:15,280 અચાનક તમામ 52 છે એવું છે. 52 00:02:15,280 --> 00:02:18,290 >> આ ઉકેલવા માટે એક રીત છે સમસ્યા આ કરવા માટે છે. 53 00:02:18,290 --> 00:02:22,724 હવે અમે ખૂબ જ સ્પષ્ટપણે છો 52 તૂતક માપ બહાર ફોન. 54 00:02:22,724 --> 00:02:25,390 તે થોડી વધુ સાહજિક આપે જ્યારે લૂપ માટે અર્થ 55 00:02:25,390 --> 00:02:28,650 અમે પછી, હું કહું છું પાછળથી તૂતક માપ કરતાં ઓછી છે. 56 00:02:28,650 --> 00:02:32,666 તે માત્ર 52 કહેતા કરતાં વધુ સારી લાગે છે. 57 00:02:32,666 --> 00:02:34,290 હવે આ ખરેખર આ સમસ્યા ઠીક નથી. 58 00:02:34,290 --> 00:02:38,460 તે કેટલાક સાંકેતિક આપે છે સતત અર્થ. 59 00:02:38,460 --> 00:02:40,820 પરંતુ તે પ્રકારની ખરેખર કરે અન્ય સમસ્યા રજૂ 60 00:02:40,820 --> 00:02:43,770 કે તરત જ સ્પષ્ટ ન પણ હોઈ શકે. 61 00:02:43,770 --> 00:02:45,859 પણ આ ચલ તો globally-- જાહેર કરવામાં આવે છે 62 00:02:45,859 --> 00:02:47,650 તમે તે શું યાદ નથી અમે જાહેર કરે છે ત્યારે એનો અર્થ એ થાય 63 00:02:47,650 --> 00:02:50,500 વૈશ્વિક સ્થાનિક વિરુદ્ધ ચલ? 64 00:02:50,500 --> 00:02:53,340 અમે એક ચલ જાહેર હોય તો પણ વૈશ્વિક સ્તરે શું હોય તો 65 00:02:53,340 --> 00:02:55,500 અન્ય કાર્ય કાર્યો અમારી સેવામાંથી 66 00:02:55,500 --> 00:02:59,750 કાર્ડ મેનીપ્યુલેશન સાથે સોદો કે અજાણતા, તૂતક માપ બદલે છે 67 00:02:59,750 --> 00:03:02,727 અથવા તે દ્વારા તે વધે છે 1 અથવા 1 દ્વારા તે ઘટે છે. 68 00:03:02,727 --> 00:03:04,060 તે સાચું છે, મુશ્કેલી જોડણી શકે છે? 69 00:03:04,060 --> 00:03:08,261 અમે એક સમૂહ સાથે વ્યવહાર કરી રહ્યા છો, ખાસ કરીને જો કાર્ડ સંપૂર્ણ ડેક shuffling જ્યાં 70 00:03:08,261 --> 00:03:08,760 જરૂરી છે. 71 00:03:08,760 --> 00:03:12,804 તૂતક માપ ઘટાડો થયો છે, તો 1 દ્વારા, ઉદાહરણ તરીકે, 51, 72 00:03:12,804 --> 00:03:14,970 અમે ખરેખર shuffling નથી કરી રહ્યાં છો કદાચ બધા કાર્ડ. 73 00:03:14,970 --> 00:03:16,500 અમે તેમને એક બહાર છોડી રહ્યા છો. 74 00:03:16,500 --> 00:03:21,680 અને તે કિંમત કદાચ હોઈ શકે આગાહી અથવા ખરાબ અભિનેતા દ્વારા શોષણ. 75 00:03:21,680 --> 00:03:24,920 >> સી કહેવાય છે તે પૂરા પાડે છે preprocessor ડાઈરેક્ટીવ, જે 76 00:03:24,920 --> 00:03:27,764 પણ મેક્રો માટે કહેવામાં આવે છે સાંકેતિક સ્થિરાંકો બનાવવા. 77 00:03:27,764 --> 00:03:30,180 અને હકીકતમાં, જો તમે પહેલાથી જ કર્યું છે preprocessor ડાઈરેક્ટીવ જોવા મળે છે, 78 00:03:30,180 --> 00:03:32,916 તમે સાંભળ્યું ન હોય તો પણ # સમાવેશ થાય છે સાથે કહે છે. 79 00:03:32,916 --> 00:03:37,150 તે એક મેક્રો અન્ય ઉદાહરણ છે અથવા preprocessor ડાઈરેક્ટીવ. 80 00:03:37,150 --> 00:03:41,290 >> આ રીતે સાંકેતિક સ્થિરાંકો બનાવવા માટે, અથવા સતત એક નામ આપી 81 00:03:41,290 --> 00:03:43,740 તે વધુ છે કે જેથી જેનો અર્થ થાય છે, નીચે પ્રમાણે છે. 82 00:03:43,740 --> 00:03:47,030 # વ્યાખ્યાયિત, નામ, રિપ્લેસમેન્ટ. 83 00:03:47,030 --> 00:03:49,140 કોરે ખરેખર મહત્વપૂર્ણ અહીં ખરેખર ઝડપી. 84 00:03:49,140 --> 00:03:54,180 એક અર્ધવિરામ મૂકી નથી તમારા # વ્યાખ્યાયિત ઓવરને. 85 00:03:54,180 --> 00:03:57,310 તેથી તે # વ્યાખ્યાયિત, નામ, રિપ્લેસમેન્ટ છે. 86 00:03:57,310 --> 00:03:59,540 >> તમારા કાર્યક્રમ કમ્પાઇલ હોય ત્યારે, શું ખરેખર થાય છે 87 00:03:59,540 --> 00:04:01,740 જઈને જો કમ્પાઇલર છે તમારો કોડ મારફતે જાઓ 88 00:04:01,740 --> 00:04:06,770 અને દરેક ઘટક બદલો ગમે સાથે શબ્દ "નામ" તમે 89 00:04:06,770 --> 00:04:08,860 રિપ્લેસમેન્ટ તરીકે મૂકો. 90 00:04:08,860 --> 00:04:13,060 એવીજ રીતે # સમાવેશ થાય છે છે, તો સૉર્ટ નકલ અને પેસ્ટ માટે સમાન છે, 91 00:04:13,060 --> 00:04:15,700 પછી # વ્યાખ્યાયિત સૉર્ટ છે શોધવા અને બદલવા માટે સમાન, 92 00:04:15,700 --> 00:04:19,180 શું તમે ક્યારેય એક કે લક્ષણ ઉપયોગ કર્યા તો શબ્દ પ્રક્રિયા કાર્યક્રમ, ઉદાહરણ તરીકે. 93 00:04:19,180 --> 00:04:26,345 >> ઉદાહરણ તરીકે, જો તેથી હું 3.14159265 તરીકે PI વ્યાખ્યાયિત, 94 00:04:26,345 --> 00:04:28,720 તમે વધુ સારી રીતે ગાણિતિક હો તો વળેલું અને તમે અચાનક 95 00:04:28,720 --> 00:04:31,640 3.14159265 ઉડતી જોવા આસપાસ તમારો કોડ માં, 96 00:04:31,640 --> 00:04:33,517 તમે કદાચ તે PI વિશે વાત છે ખબર. 97 00:04:33,517 --> 00:04:35,850 પરંતુ કદાચ અમે તેને એક આપી શકે છે થોડી વધુ સાંકેતિક અર્થ. 98 00:04:35,850 --> 00:04:39,850 અને અમે તેના બદલે # વ્યાખ્યાયિત કહી શકો છો નંબરો કે કોળિયો તરીકે PI 99 00:04:39,850 --> 00:04:42,110 હું રાખવા નથી જઈ રહ્યો છું કે ઉપર અને ઉપર વાંચી. 100 00:04:42,110 --> 00:04:45,560 >> અને શું પછી શું ચાલી રહ્યું છે આ કાર્યક્રમ હોય ત્યારે કમ્પાઇલ સમય છે 101 00:04:45,560 --> 00:04:48,530 સંકલિત, પ્રથમ વસ્તુ છે કે જે થશે તે મારફતે જાઓ કરશે 102 00:04:48,530 --> 00:04:51,520 અને તે દર વખતે બદલશે તે મૂડી પી, મૂડી હું જુએ 103 00:04:51,520 --> 00:04:55,610 તે શાબ્દિક સાથે બદલો પડશે 3.14 અને તેથી પર, કે જેથી તમે 104 00:04:55,610 --> 00:04:58,090 તે દરેક પ્રકારના કરવાની જરૂર નથી સમય હજુ પણ તમારા કાર્યક્રમ છે, જ્યારે 105 00:04:58,090 --> 00:05:00,631 આ વિધેય હોય છે કે તમે તમે કામ કરી રહ્યા છીએ, કારણ કે અપેક્ષા 106 00:05:00,631 --> 00:05:05,090 ફેરફાર સાથે, ગુણાકાર, તે PI છે ગમે, ભાગાકાર. 107 00:05:05,090 --> 00:05:08,230 >> તમે આ માટે મર્યાદિત નથી માત્ર નંબરો માટે અવેજી. 108 00:05:08,230 --> 00:05:12,279 ઉદાહરણ તરીકે, હું વ્યાખ્યાયિત કરી શકે છે CS50 શબ્દમાળા તરીકે કોર્સ. 109 00:05:12,279 --> 00:05:14,070 આ કિસ્સામાં, જ્યારે કાર્યક્રમ સંકલિત છે, 110 00:05:14,070 --> 00:05:16,236 # વ્યાખ્યાયિત મારફતે જશે કોડ છે, દર વખતે બદલો 111 00:05:16,236 --> 00:05:19,900 તે CS50 શબ્દમાળા સાથે "અલબત્ત" જુએ છે. 112 00:05:19,900 --> 00:05:21,720 >> તમે અહીં નોટિસ પડશે પણ મને લાગે છે કે વારંવાર 113 00:05:21,720 --> 00:05:26,090 # વ્યાખ્યાયિત મારા બધા સાંકેતિક વ્યાખ્યાયિત સ્થિરાંકો, તેથી વાત કરવા માટે 114 00:05:26,090 --> 00:05:28,130 બધા કેપ્સ હંમેશા હોય છે. 115 00:05:28,130 --> 00:05:28,960 તે સંમેલન છે. 116 00:05:28,960 --> 00:05:30,170 તે જરૂરી નથી. 117 00:05:30,170 --> 00:05:33,900 કારણ સામાન્ય રીતે લોકો ઉપયોગ કરશે બધા પાટનગરો તેઓ #defining કરી રહ્યા હો ત્યારે 118 00:05:33,900 --> 00:05:37,590 કે જે હમણાં જ તે ખરેખર સ્પષ્ટ કરવા માટે છે મારી કોડ આ ચોક્કસ તત્વ 119 00:05:37,590 --> 00:05:38,820 વ્યાખ્યાયિત સતત છે. 120 00:05:38,820 --> 00:05:43,730 તે લોઅરકેસ, તો તે શક્ય છે કે તે એક ચલ સાથે ગેરસમજ થઈ શકે છે. 121 00:05:43,730 --> 00:05:46,120 અને તે કદાચ છે એક સારી બાબત નથી. 122 00:05:46,120 --> 00:05:48,910 >> તેથી આ ખાસ ઉકેલ વધુ સારી છે 123 00:05:48,910 --> 00:05:50,550 અગાઉના મુદ્દાઓ ક્યાં કરતાં. 124 00:05:50,550 --> 00:05:59,950 હું પ્રથમ # વ્યાખ્યાયિત ડેક કદ 52, પછી તો હવે અહીં 52, અથવા તૂતક માપ મારા ઉપયોગ, 125 00:05:59,950 --> 00:06:01,850 વધુ ઘણો સાહજિક અને ઘણો સુરક્ષિત છે. 126 00:06:01,850 --> 00:06:03,280 તમે સતત ચાલાકી કરી શકો છો. 127 00:06:03,280 --> 00:06:05,259 તમે 52 વત્તા વત્તા કહી શકો છો. 128 00:06:05,259 --> 00:06:06,800 એ 53 માટે તે બદલવા માટે ચાલી રહ્યું છે. 129 00:06:06,800 --> 00:06:09,390 તમે કંઈક કરવા માટે 52 બદલી શકતા નથી. 130 00:06:09,390 --> 00:06:12,470 >> તમે એક ચલ બદલી શકો છો જેની કિંમત 52 છે, 131 00:06:12,470 --> 00:06:14,870 જે અમે પહેલાં હતી પ્રથમ સુધારો હતો. 132 00:06:14,870 --> 00:06:17,000 અને તમે વધારો કરી શકે છે 53 કે ચલ. 133 00:06:17,000 --> 00:06:21,100 પરંતુ તમે 52 વત્તા પ્લસ અને કહી શકો છો અચાનક 53 માં 52 ચાલુ હોય છે. 134 00:06:21,100 --> 00:06:23,350 52 હંમેશા 52 છે. 135 00:06:23,350 --> 00:06:28,860 અને તેથી તમે અજાણતા બદલી શકતા નથી અહીં તે ફેરફાર કરીને ડેક કદ, 136 00:06:28,860 --> 00:06:29,940 137 00:06:29,940 --> 00:06:32,390 >> અન્ય સારી બાજુ જોકે અસર છે 138 00:06:32,390 --> 00:06:38,310 કે તમે પરિચિત છે કે નથી સમગ્ર વિશ્વમાં તમામ દેશોમાં 139 00:06:38,310 --> 00:06:40,690 કદ 52 કાર્ડો એક ડેક ઉપયોગ કરો છો? 140 00:06:40,690 --> 00:06:45,630 ઉદાહરણ તરીકે, તે ખરેખર સામાન્ય છે જર્મની, 32 એક ડેક કદ ઉપયોગ 141 00:06:45,630 --> 00:06:48,020 તેઓ કેટલાક છીનવી જ્યાં નીચલા કિંમત કાર્ડ. 142 00:06:48,020 --> 00:06:50,960 અને આ કિસ્સામાં, હું પોર્ટ મારા સેવામાંથી માગે છે 143 00:06:50,960 --> 00:06:55,390 સાથે વ્યવહાર કે કાર્યો જર્મની કાર્ડ મેનીપ્યુલેશન. 144 00:06:55,390 --> 00:06:59,440 હું પ્રથમ ઉદાહરણ શકે અમે દર્શાવે છે, જાઓ અને બદલવા માટે છે 145 00:06:59,440 --> 00:07:03,570 32 મારી કોડ 52 ની તમામ ઘટકોને. 146 00:07:03,570 --> 00:07:07,940 >> પરંતુ અહીં, હું વ્યાખ્યાયિત તો ડેક કદ મારી કોડ ખૂબ જ ટોચ પર 32, 147 00:07:07,940 --> 00:07:11,730 હું તેને બદલવા માટે જરૂર હોય તો, હું કરી શકો છો માત્ર જાઓ અને એક વસ્તુ છે કે બદલો. 148 00:07:11,730 --> 00:07:15,010 મારી કોડ પુનઃકમ્પાઈલ, અને બધા અચાનક તે મારફતે પ્રસરણ પામે છે. 149 00:07:15,010 --> 00:07:18,850 હકીકતમાં, અમે ડેક બદલી શકો છો અમે ઇચ્છો તે કોઇપણ કિંમત માપ. 150 00:07:18,850 --> 00:07:22,500 >> હું તમને વ્યાજ શકે તૂતક માપ દુકાન ગેમ? 151 00:07:22,500 --> 00:07:23,430 >> હું ડો લોયડ છું. 152 00:07:23,430 --> 00:07:25,840 અને આ CS50 છે. 153 00:07:25,840 --> 00:07:27,772