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 ডগ লয়েড: ঠিক আছে. 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 এটি একটি সামান্য বিট pseudocode এখানে মিশিয়ে. 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 হয়তো এটা তাদের shuffles, বা একটি হাত ঘটনাও পাঁচটি কার্ড পরিবর্তে একটি একক কার্ড. 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 >> ভালো লেগেছে, intuitively আপনি সম্ভবত জানেন, ঠিক আছে. 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 আপনি এটা শুনে নি, এমনকি যদি #include সঙ্গে যে বলা. 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 # define, নাম, প্রতিস্থাপন. 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 অনুরূপভাবে, #include যদি সাজান এর কপি এবং পেস্ট করা একই, 91 00:04:13,060 --> 00:04:15,700 তারপর # define ধরণের হয় এটি এবং প্রতিস্থাপন অনুরূপ, 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 এবং আমরা আপনার পরিবর্তে # define বলতে পারেন সংখ্যার যে একগাল হিসেবে 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, and so on, যাতে আপনি 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 # define মধ্য দিয়ে যেতে হবে কোড, প্রত্যেক সময় প্রতিস্থাপন 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 # define সব আমার সিম্বলিক সংজ্ঞায়িত ধ্রুবক, তাই কথা বলতে, 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 এবং এই ক্ষেত্রে, আমি Port আমার সুইট চেয়েছিলেন 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 আমার কোড কম্পাইল, এবং সব হঠাৎ এটা মাধ্যমে propagates. 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