1 00:00:00,000 --> 00:00:03,381 >> [সঙ্গীত বাজাচ্ছি] 2 00:00:03,381 --> 00:00:10,626 3 00:00:10,626 --> 00:00:11,610 >> [ভিডিও প্লেব্যাক] 4 00:00:11,610 --> 00:00:13,640 >> -তিনি মিথ্যা. 5 00:00:13,640 --> 00:00:14,380 >> -কি সম্পর্কে? 6 00:00:14,380 --> 00:00:17,182 >> -আমি জানি না. 7 00:00:17,182 --> 00:00:19,990 >> আমরা কি জানি না -তাই? 8 00:00:19,990 --> 00:00:23,145 >> 9:15 সত্যজিৎ এ -যে Santoya এটিএম এ ছিল. 9 00:00:23,145 --> 00:00:23,644 হ্যা. 10 00:00:23,644 --> 00:00:27,030 তাই প্রশ্ন, কি তিনি 9:16 এ করছেন? 11 00:00:27,030 --> 00:00:29,720 >> কিছু এ 9 মিলিমিটার -Shooting. 12 00:00:29,720 --> 00:00:31,540 হয়তো তিনি স্নাইপার দেখেছি. 13 00:00:31,540 --> 00:00:33,412 >> বা তার সঙ্গে কাজ করেন. 14 00:00:33,412 --> 00:00:34,340 >> অপেক্ষা করুন. 15 00:00:34,340 --> 00:00:36,200 এক ফিরে যান. 16 00:00:36,200 --> 00:00:36,975 >> -আপনি কি দেখছেন? 17 00:00:36,975 --> 00:00:44,400 18 00:00:44,400 --> 00:00:47,805 >> পূর্ণ পর্দা আপ তার মুখ আনুন. 19 00:00:47,805 --> 00:00:48,680 >> -তার চশমা. 20 00:00:48,680 --> 00:00:50,060 >> একটি প্রতিফলন. 21 00:00:50,060 --> 00:01:00,455 22 00:01:00,455 --> 00:01:02,280 >> -এটা Nuevitas বেসবল দল. 23 00:01:02,280 --> 00:01:03,110 যে তাদের লোগো. 24 00:01:03,110 --> 00:01:05,820 >> এবং সে সাথে কথা বলছে কেহ যে জ্যাকেট পরা. 25 00:01:05,820 --> 00:01:06,670 >> [END টি প্লেব্যাক] 26 00:01:06,670 --> 00:01:07,628 >> DAVID Malan: ঠিক আছে. 27 00:01:07,628 --> 00:01:11,210 এটি CS50 এবং এই একটু বেশী [শ্রবণাতীত] যা দিয়ে আপনি আছেন 28 00:01:11,210 --> 00:01:12,890 সমস্যা সঙ্গে dabbling চার সেট. 29 00:01:12,890 --> 00:01:16,606 আজ আমরা আরো একটু দেখুন শুরু গভীরভাবে পয়েন্টার নামক এই জিনিস এ, 30 00:01:16,606 --> 00:01:18,480 এটা যদিও যা একটি সুন্দর গোপনীয় বিষয়, 31 00:01:18,480 --> 00:01:20,813 এটা যাচ্ছে যে দেখা যাচ্ছে মানে হতে, যার মাধ্যমে আমরা 32 00:01:20,813 --> 00:01:24,320 বিল্ডিং ও একত্রিতকরনের শুরু করতে পারেন আরো অনেক কিছু অত্যাধুনিক প্রোগ্রাম. 33 00:01:24,320 --> 00:01:28,150 কিন্তু আমরা গত বুধবার তা প্রথম কিছু claymation প্রণালী দ্বারা. 34 00:01:28,150 --> 00:01:30,190 তাই এই, রিকল, হয় একটি পোলট্রি খামারে Binky এবং আমরা তাকে ব্যবহার 35 00:01:30,190 --> 00:01:33,148 একটি প্রোগ্রাম কটাক্ষপাত করা যে সত্যিই কিছু আকর্ষণীয় করতে না, 36 00:01:33,148 --> 00:01:34,950 কিন্তু এটি একটি কয়েক সমস্যা প্রকাশ করেনি. 37 00:01:34,950 --> 00:01:38,570 তাই কেন আমরা পদব্রজে ভ্রমণ না, আজ শুরু করতে দ্রুত ধাপগুলি কয়েক মাধ্যমে, 38 00:01:38,570 --> 00:01:41,920 মানব এর পদ চুয়ান চেষ্টা ঠিক কি এখানে যাচ্ছে 39 00:01:41,920 --> 00:01:45,410 এবং কেন এই খারাপ, এবং তারপর যান এবং আসলে কিছু নির্মাণ শুরু 40 00:01:45,410 --> 00:01:46,309 এই কৌশল নিয়ে? 41 00:01:46,309 --> 00:01:48,350 তাই এই প্রথম ছিল এই প্রোগ্রামে দুটি লাইন 42 00:01:48,350 --> 00:01:51,340 এবং সাধারণ লোক এর শর্তাবলী, কি এই দুই লাইন করছেন? 43 00:01:51,340 --> 00:01:55,600 যুক্তিসঙ্গতভাবে আরামদায়ক যিনি কি পর্দায় ঘোষণা দিয়ে? 44 00:01:55,600 --> 00:01:58,340 45 00:01:58,340 --> 00:02:00,120 করছেন এই দুই লাইন কি? 46 00:02:00,120 --> 00:02:02,070 এটা সব না যে সপ্তাহে এক থেকে ভিন্ন, 47 00:02:02,070 --> 00:02:03,611 কিন্তু নতুন কিছু বিশেষ চিহ্ন নেই. 48 00:02:03,611 --> 00:02:04,152 হ্যা? 49 00:02:04,152 --> 00:02:05,628 ফিরে সেখানে. 50 00:02:05,628 --> 00:02:07,092 >> শ্রোতা: পয়েন্টার প্রকাশক? 51 00:02:07,092 --> 00:02:08,050 DAVID Malan: আবার বলুন? 52 00:02:08,050 --> 00:02:08,860 শ্রোতা: পয়েন্টার প্রকাশক? 53 00:02:08,860 --> 00:02:11,776 DAVID Malan: ঘোষণা পয়েন্টার এবং এর একটি সামান্য বিট আরো এটা পরিশোধন করা যাক. 54 00:02:11,776 --> 00:02:14,050 শ্রোতা: [শ্রবণাতীত] অঙ্ক এক্স এবং তারপর Y. 55 00:02:14,050 --> 00:02:15,300 DAVID Malan: এবং তারপর ঠিকানা. 56 00:02:15,300 --> 00:02:18,550 তাই বিশেষভাবে আমরা কি করছেন আমরা দুটি ভেরিয়েবল ঘোষণা করা হয় করা হয়. 57 00:02:18,550 --> 00:02:21,252 এই ভেরিয়েবল, যদিও, যাচ্ছি টাইপ int- তারকা, হতে যা 58 00:02:21,252 --> 00:02:23,210 আরো নির্দিষ্টভাবে মানে তারা সঞ্চয় করতে যাচ্ছি 59 00:02:23,210 --> 00:02:26,450 কোন int এর ঠিকানা, যথাক্রমে, এবং X ও Y. 60 00:02:26,450 --> 00:02:27,660 এখন কোন মান আছে? 61 00:02:27,660 --> 00:02:32,621 এই যে কোন প্রকৃত ঠিকানা আছে সময় এই সময়ে দুটি ভেরিয়েবল? 62 00:02:32,621 --> 00:02:33,120 না. 63 00:02:33,120 --> 00:02:35,030 এটা শুধু আবর্জনা মান তথাকথিত এর. 64 00:02:35,030 --> 00:02:38,120 আপনি আসলে একটি ধার্য না করা হলে উপস্থিত RAM- র মধ্যে ছিল যাই হোক না কেন পরিবর্তনশীল, 65 00:02:38,120 --> 00:02:42,224 পূর্বে শূন্য দিয়ে ভরাট করা যাচ্ছে এবং বেশী যারা ভেরিয়েবল উভয়. 66 00:02:42,224 --> 00:02:44,140 কিন্তু আমরা এখনো জানি না তারা কি হয় এবং যে 67 00:02:44,140 --> 00:02:47,060 কেন একটি পোলট্রি চাবিকাঠি হতে যাচ্ছে গত সপ্তাহে তার মাথা নষ্ট. 68 00:02:47,060 --> 00:02:49,980 >> সুতরাং এই claymation ছিল এই অবতার 69 00:02:49,980 --> 00:02:53,580 যদ্দ্বারা আপনি শুধু দুটি ভেরিয়েবল আছে, মৃন্ময় সামান্য বিজ্ঞপ্তি টুকরা, 70 00:02:53,580 --> 00:02:57,330 যে ভেরিয়েবল সংরক্ষণ, কিন্তু হিসাবে পারেন আচ্ছন্ন তীর সুপারিশ, 71 00:02:57,330 --> 00:03:00,640 তারা আসলে ইশারা করছি না যে কোন জায়গা কোনটাই পরিচিত. 72 00:03:00,640 --> 00:03:03,670 তখন আমরা এই লাইন ছিল, এবং এই মেমরি জন্য ছিল নতুন গত সপ্তাহে, যদি malloc 73 00:03:03,670 --> 00:03:07,130 শুধু একটি অভিনব উপায়, যা বরাদ্দ অপারেটিং সিস্টেম বলছে, Linux- র 74 00:03:07,130 --> 00:03:09,750 বা ম্যাক অপারেটিং সিস্টেম বা উইন্ডোজ, আরে, আমার কিছু স্মৃতি দিতে, 75 00:03:09,750 --> 00:03:11,780 এবং আপনি সব জানাতে অপারেটিং সিস্টেম 76 00:03:11,780 --> 00:03:14,699 মেমরি জন্য এটা জিজ্ঞাসা যখন কি. 77 00:03:14,699 --> 00:03:16,990 এটা কি গ্রাহ্য করা যাচ্ছে না আপনি, এটা দিয়ে কাজ করতে যাচ্ছেন 78 00:03:16,990 --> 00:03:19,786 কিন্তু আপনি অপারেটিং বলতে হবে না কি malloc প্রণালী দ্বারা সিস্টেম. 79 00:03:19,786 --> 00:03:20,286 হ্যা? 80 00:03:20,286 --> 00:03:21,078 >> শ্রোতা: কত? 81 00:03:21,078 --> 00:03:21,994 DAVID Malan: কত? 82 00:03:21,994 --> 00:03:25,280 কত বাইট, এবং তাই, এই, আবার, একটি কল্পিত উদাহরণ, শুধু, বলার অপেক্ষা রাখে না 83 00:03:25,280 --> 00:03:27,360 আমার কোন int মাপ দিতে. 84 00:03:27,360 --> 00:03:30,550 কোন int এর এখন, আকার চার বাইট বা 32 বিট. 85 00:03:30,550 --> 00:03:32,850 সুতরাং এই মাত্র একটা উপায় বলার অপেক্ষা রাখে না, আরে, অপারেটিং সিস্টেম, 86 00:03:32,850 --> 00:03:37,290 আমার মেমরির চার বাইট দিতে আমি আমার নিষ্পত্তি ব্যবহার করতে পারে, 87 00:03:37,290 --> 00:03:40,560 এবং বিশেষভাবে, কি করে সম্মানের সঙ্গে যদি malloc ফেরত 88 00:03:40,560 --> 00:03:41,795 চার বাইট যে তাল করতে? 89 00:03:41,795 --> 00:03:44,110 90 00:03:44,110 --> 00:03:44,860 শ্রোতা: ঠিকানা? 91 00:03:44,860 --> 00:03:45,901 DAVID Malan: অঙ্ক. 92 00:03:45,901 --> 00:03:47,580 চার বাইট যে খণ্ড ঠিকানা. 93 00:03:47,580 --> 00:03:48,190 ঠিক. 94 00:03:48,190 --> 00:03:51,430 আর তাই যে শেষ পর্যন্ত সংরক্ষণ করা হচ্ছে কি আমরা সত্যিই না কেন এক্স এবং যে 95 00:03:51,430 --> 00:03:55,240 গ্রাহ্য কি যে সংখ্যা এটা OX1 বা ox2 কিনা অঙ্ক, হয় 96 00:03:55,240 --> 00:03:57,110 অথবা কিছু রহস্যপূর্ণ হেক্সাডেসিমেল ঠিকানা. 97 00:03:57,110 --> 00:03:59,850 আমরা শুধু pictorially যত্ন যে পরিবর্তনশীল X বর্তমানে যে 98 00:03:59,850 --> 00:04:01,630 মেমরি যে তাল প্রতি নির্দেশ. 99 00:04:01,630 --> 00:04:05,570 সুতরাং তীর একটি পয়েন্টার প্রতিনিধিত্ব করে, বা আরো নির্দিষ্টভাবে, একটি মেমরি ঠিকানা. 100 00:04:05,570 --> 00:04:09,120 কিন্তু আবার, আমরা সাধারণত যত্ন না যারা আসল ঠিকানা কি. 101 00:04:09,120 --> 00:04:11,780 এখন, এই লাইন বলছেন কি সাধারণ লোক এর পরিপ্রেক্ষিতে? 102 00:04:11,780 --> 00:04:14,330 রাশি এক্স 42 সেমিকোলন পায়. 103 00:04:14,330 --> 00:04:17,390 এটার মানে কি? 104 00:04:17,390 --> 00:04:18,200 তুমি যেতে চাও? 105 00:04:18,200 --> 00:04:20,102 আপনার ঘাড় ভূত না. 106 00:04:20,102 --> 00:04:22,360 >> শ্রোতা: x এর ঠিকানা 42 এ হয়. 107 00:04:22,360 --> 00:04:24,300 >> DAVID Malan: x এর ঠিকানা 42 এ হয়. 108 00:04:24,300 --> 00:04:25,190 বেশ নেই. 109 00:04:25,190 --> 00:04:28,485 তাই বন্ধ, কিন্তু পুরোপুরি আছে, কারণ এই এক্স prefixing যে তারকা. 110 00:04:28,485 --> 00:04:29,860 তাই আমরা একটি সামান্য বিট বদলাতে প্রয়োজন. 111 00:04:29,860 --> 00:04:31,032 হ্যা? 112 00:04:31,032 --> 00:04:36,044 >> শ্রোতা: মূল্য যে পয়েন্টার এক্স 42 প্রতি নির্দেশ করা হয়. 113 00:04:36,044 --> 00:04:36,710 ডেভিড MALAN: ঠিক আছে. 114 00:04:36,710 --> 00:04:40,840 পয়েন্টার এক্স যে মূল্য 42 হতে, এর কথা বলা যাক হইবে ইশারা, 115 00:04:40,840 --> 00:04:44,165 বা, তারা অন্য উপায় করা X যাই হোক না কেন ঠিকানায় যান, বলছেন 116 00:04:44,165 --> 00:04:48,340 এটা 1 অক্সফোর্ড কিনা, এক্স হয় রাস্তার বা 33 অক্সফোর্ড স্ট্রিট 117 00:04:48,340 --> 00:04:51,850 বা OX1 বা ox33, যাই হোক না কেন , সাংখ্যিক ঠিকানা যে 118 00:04:51,850 --> 00:04:54,380 তারকা এক্স এক্স dereferencing হয়. 119 00:04:54,380 --> 00:04:57,297 সুতরাং যে ঠিকানায় যান এবং তারপর সেখানে 42 নম্বর করা. 120 00:04:57,297 --> 00:04:59,380 সুতরাং যে হবে একটি যে বলার অপেক্ষা রাখে না সমতুল্য ভাবে. 121 00:04:59,380 --> 00:05:01,860 সুতরাং যে সব সূক্ষ্ম এবং তারপর আমরা ছবি উপস্থাপনের 122 00:05:01,860 --> 00:05:05,370 নিম্নরূপ আমরা যুক্ত করেছি যেখানে চার যে তাল যাও 42 123 00:05:05,370 --> 00:05:09,370 , ডান-দিকে বাইট কিন্তু জিনিষ টেরা গিয়েছিলাম যেখানে এই লাইন ছিল 124 00:05:09,370 --> 00:05:11,120 এবং Binky এর মাথা popped এই সময়ে বন্ধ, 125 00:05:11,120 --> 00:05:15,290 খারাপ জিনিষ যখন ঘটতে কারণ আপনি আবর্জনা মান ডি-রেফারেন্স 126 00:05:15,290 --> 00:05:18,210 অবৈধ ডি-রেফারেন্স আপনি বা পয়েন্টার, এবং আমি অবৈধ বলে 127 00:05:18,210 --> 00:05:21,020 কারণ এই সময়ে গল্প, y এর ভিতরে কি? 128 00:05:21,020 --> 00:05:24,440 ভিত্তি y এর মান কি গত কয়েক সিঁড়িতে? 129 00:05:24,440 --> 00:05:25,360 হ্যা? 130 00:05:25,360 --> 00:05:26,115 ওটা কী? 131 00:05:26,115 --> 00:05:26,990 >> শ্রোতা: একটি ঠিকানা. 132 00:05:26,990 --> 00:05:28,460 DAVID Malan: একটি ঠিকানা. 133 00:05:28,460 --> 00:05:31,910 এটি একটি ঠিকানা হওয়া উচিত কিন্তু আমি এটা সক্রিয়া আছে? 134 00:05:31,910 --> 00:05:32,800 তাই আমি এখনও না থাকে. 135 00:05:32,800 --> 00:05:35,430 সুতরাং সেখানে হতে কি পরিচিত? 136 00:05:35,430 --> 00:05:37,590 এটা শুধু কিছু আবর্জনা মান. 137 00:05:37,590 --> 00:05:41,500 এটা শূন্য থেকে কোনো ঠিকানা হতে পারে 2 বিলিয়ন আপনি উপস্থিত RAM- র দুটি যোগাড় আছে, 138 00:05:41,500 --> 00:05:44,289 অথবা শূন্য 4 বিলিয়ন করতে করেছি তাহলে উপস্থিত RAM- র চার গিগাবাইট পেয়েছেন. 139 00:05:44,289 --> 00:05:46,080 এটা কিছু আবর্জনা মান কিন্তু সমস্যা হল 140 00:05:46,080 --> 00:05:48,200 অপারেটিং সিস্টেম যে, আপনার দেওয়া হয় নি, তাহলে 141 00:05:48,200 --> 00:05:51,140 মেমরি যে তাল বিশেষভাবে আপনি যেতে চেষ্টা করছেন যে, 142 00:05:51,140 --> 00:05:54,650 এটি সাধারণত কি হতে যাচ্ছে আমরা একটি সেগমেন্টেশন ফল্ট হিসাবে দেখা করেছি. 143 00:05:54,650 --> 00:05:57,810 তাই আসলে, আপনি কোনো আছে যারা অফিস সময়ে সমস্যার এ লড়াই 144 00:05:57,810 --> 00:06:00,393 বা সমস্যার মধ্যে যে আরো সাধারণত চিন্তা করার চেষ্টা সঙ্গে 145 00:06:00,393 --> 00:06:02,150 একটি সেগমেন্টেশন ফল্ট, যে সাধারণত মানে 146 00:06:02,150 --> 00:06:05,017 আপনি একটি সেগমেন্ট স্পর্শ করছি আপনি করা উচিত হবে না যে স্মৃতি. 147 00:06:05,017 --> 00:06:07,350 আপনি মেমরি স্পর্শ করছি যে অপারেটিং সিস্টেম না আছে 148 00:06:07,350 --> 00:06:10,450 এটা কিনা, আপনি স্পর্শ করার অনুমতি দেওয়া আপনার অ্যারের মধ্যে যাচ্ছে অতিদূরে দ্বারা 149 00:06:10,450 --> 00:06:12,870 বা কিনা, এখন শুরু আপনি স্পর্শ করছি, কারণ এটা 150 00:06:12,870 --> 00:06:14,780 শুধু কিছু আবর্জনা মান যে মেমরি. 151 00:06:14,780 --> 00:06:18,230 >> সুতরাং এখানে তারকা এক্স করছেন অনির্ধারিত আচরণ সাজান. 152 00:06:18,230 --> 00:06:22,030 আপনি এটা মতভেদ, কারণ কি না করা উচিত , প্রোগ্রাম শুধু বিপর্যস্ত যাচ্ছে হয়, 153 00:06:22,030 --> 00:06:24,050 কি বলছে, কারণ, এই ঠিকানায় যান 154 00:06:24,050 --> 00:06:27,000 এবং আপনি কোন ধারণা যেখানে আছে যে অঙ্ক আসলে. 155 00:06:27,000 --> 00:06:30,300 তাই অপারেটিং সিস্টেম সম্ভবত আপনার প্রোগ্রাম বিপর্যস্ত যাচ্ছে 156 00:06:30,300 --> 00:06:33,840 ফলে এবং প্রকৃতপক্ষে হিসাবে, যে কি একটি পোলট্রি ঘটেছে সেখানে. 157 00:06:33,840 --> 00:06:37,210 তাই শেষ পর্যন্ত, একটি পোলট্রি সংশোধন এই সঙ্গে এই সমস্যা. 158 00:06:37,210 --> 00:06:38,909 যে প্রোগ্রাম তাই নিজেই দ্বিধান্বিত ছিল. 159 00:06:38,909 --> 00:06:41,450 কিন্তু আপনি ধরণের দৃঢ়গতিতে যদি এবং পরিবর্তে এই লাইন চালানো, 160 00:06:41,450 --> 00:06:45,580 Y শুধু এক্স সমান মানে যাই হোক না কেন অঙ্ক একটি এক্স হয়, এছাড়াও Y লাগাতে হবে. 161 00:06:45,580 --> 00:06:48,740 >> আর তাই pictorially, আমরা করেছি দুই তীর সহ এই প্রতিনিধিত্ব 162 00:06:48,740 --> 00:06:51,570 X থেকে এবং Y প্রতি নির্দেশ থেকে একই জায়গা. 163 00:06:51,570 --> 00:06:55,760 সুতরাং শব্দার্থিক X সমান Y যারা উভয় কারণ 164 00:06:55,760 --> 00:07:00,300 একই সংরক্ষণকারী অঙ্ক, অতএব, 42 টার দিকে নির্দেশ 165 00:07:00,300 --> 00:07:04,910 এবং এখন, যখন আপনি তারকা বলে Y, Y মধ্যে ঠিকানায় যান 166 00:07:04,910 --> 00:07:06,790 এই একটি আকর্ষণীয় পার্শ্ব প্রতিক্রিয়া আছে. 167 00:07:06,790 --> 00:07:10,320 সুতরাং Y এ ঠিকানা X ঠিকানা হিসাবে একই জিনিস. 168 00:07:10,320 --> 00:07:15,060 যদি তাই আপনি ঠিকানায় যান বলে এবং Y 13 মান পরিবর্তন, 169 00:07:15,060 --> 00:07:17,140 যারা অন্য প্রভাবিত হয়? 170 00:07:17,140 --> 00:07:21,100 এক্স, বিন্দু ডি, তাই কথা বলতে হয় পাশাপাশি ক্ষতিগ্রস্ত হবে. 171 00:07:21,100 --> 00:07:24,340 >> এবং প্রকৃতপক্ষে, কিভাবে নিক এই ছবি সৃষ্টি claymation ঠিক যে ছিল. 172 00:07:24,340 --> 00:07:28,665 আমরা পয়েন্টার অনুসরণ যদিও Y, আমরা একই জায়গায় শেষ পর্যন্ত 173 00:07:28,665 --> 00:07:32,780 এবং তাই আমরা প্রিন্ট করতে হলে X বা Y এর pointee আউট, 174 00:07:32,780 --> 00:07:35,720 তারপর আমরা 13 এর মান দেখতে হবে. 175 00:07:35,720 --> 00:07:37,927 এখন, আমি pointee হতে বলছি ভিডিও সঙ্গে সামঞ্জস্যপূর্ণ. 176 00:07:37,927 --> 00:07:39,760 প্রোগ্রামাররা, আমার জ্ঞান, না আসলে 177 00:07:39,760 --> 00:07:42,460 শব্দ pointee বলে, জোরাল হয় যা যে 178 00:07:42,460 --> 00:07:44,650 এ কিন্তু দৃঢ়তা জন্য ভিডিও সঙ্গে, বুঝতে পারছি 179 00:07:44,650 --> 00:07:47,520 যে ছিল যে সব যে পরিস্থিতি বোঝানো. 180 00:07:47,520 --> 00:07:54,190 Claymation উপর তাই কোন প্রশ্ন বা পয়েন্টার বা malloc শুধু এখনো? 181 00:07:54,190 --> 00:07:54,850 কোন? 182 00:07:54,850 --> 00:07:55,470 ঠিক আছে. 183 00:07:55,470 --> 00:07:58,560 >> তাই আরও ছাড়া কর্মব্যস্ততা, এর কটাক্ষপাত করা যাক 184 00:07:58,560 --> 00:08:00,700 আসলে এই যেখানে এ কিছু সময়ের জন্য ব্যবহার করা হয়েছে. 185 00:08:00,700 --> 00:08:03,580 সুতরাং আমরা এই CS50 লাইব্রেরি ছিল করেছি যে সব এই ফাংশন পেয়েছিলাম. 186 00:08:03,580 --> 00:08:06,810 আমরা GetInt, GetString, অনেক ব্যবহার করেছি সম্ভবত আগে GetLongLong 187 00:08:06,810 --> 00:08:09,840 আমার pset মধ্যে এক বা তাই, কিন্তু আসলে কি যাওয়া হয়েছে? 188 00:08:09,840 --> 00:08:12,920 ওয়েল, এর দ্রুত কটাক্ষপাত করা যাক একটি প্রোগ্রাম এ ফণা নীচে যে 189 00:08:12,920 --> 00:08:17,017 আমরা আপনি CS50 দিতে কেন অনুপ্রাণিত লাইব্রেরি, এবং প্রকৃতপক্ষে গত সপ্তাহে হিসাবে, 190 00:08:17,017 --> 00:08:18,850 আমরা যারা গ্রহণ শুরু প্রশিক্ষণ চাকার বন্ধ. 191 00:08:18,850 --> 00:08:21,080 সুতরাং এখন এই সাজানো হয় একটি পোস্টমর্টেম কি 192 00:08:21,080 --> 00:08:23,690 আছে যাওয়া হয়েছে CS50 লাইব্রেরি ভিতরে, 193 00:08:23,690 --> 00:08:27,250 আমরা এখন চলন্ত শুরু হবে, যদিও এটা থেকে দূরে সবচেয়ে প্রোগ্রামসমূহের. 194 00:08:27,250 --> 00:08:29,460 >> তাই এই 0, scanf নামক একটি প্রোগ্রাম. 195 00:08:29,460 --> 00:08:30,510 এটা অতি ছোট. 196 00:08:30,510 --> 00:08:33,909 এটা শুধু এই লাইন আছে, কিন্তু এটা একটি ফাংশন বলা scanf প্রবর্তন 197 00:08:33,909 --> 00:08:36,909 আমরা আসলে দেখতে যাচ্ছেন ভেতরের CS50 লাইব্রেরি একটি মুহূর্ত, 198 00:08:36,909 --> 00:08:38,600 কিছুটা ভিন্ন ফর্ম যদ্যপি. 199 00:08:38,600 --> 00:08:41,330 লাইন 16 তাই এই প্রোগ্রাম একটি পরিবর্তনশীল x ঘোষণা করা হয়. 200 00:08:41,330 --> 00:08:43,150 তাই আমাকে কোন int জন্য চার বাইট দিতে. 201 00:08:43,150 --> 00:08:45,750 এটি ব্যবহারকারীকে বলার হয়েছে সংখ্যা দয়া করে, এবং তারপর 202 00:08:45,750 --> 00:08:49,010 এই একটি আকর্ষণীয় লাইন যে আসলে গত সপ্তাহে একসাথে বেঁধে 203 00:08:49,010 --> 00:08:49,790 এবং এটা. 204 00:08:49,790 --> 00:08:53,230 Scanf, এবং তারপর এটি একটি লাগে লক্ষ্য ফরম্যাট স্ট্রিং, শুধু ভালো printf, 205 00:08:53,230 --> 00:08:57,480 % আমি কোন int মানে, এবং তারপর এটি একটি সময় লাগে একটু দেখায় যা দ্বিতীয় যুক্তি 206 00:08:57,480 --> 00:08:58,260 ভীতু. 207 00:08:58,260 --> 00:09:01,880 এটা এম্পারসেন্ড এক্স এর, এবং পুনরাহ্বান, আমরা শুধুমাত্র এই একবার দেখেছি গত সপ্তাহে. 208 00:09:01,880 --> 00:09:03,465 এম্পারসেন্ড X প্রতিনিধিত্ব করেন? 209 00:09:03,465 --> 00:09:06,210 210 00:09:06,210 --> 00:09:08,450 এম্পারসেন্ড সি কী কাজ করে? 211 00:09:08,450 --> 00:09:08,950 হ্যা? 212 00:09:08,950 --> 00:09:10,024 >> শ্রোতা: এর ঠিকানা. 213 00:09:10,024 --> 00:09:11,190 DAVID Malan: এর ঠিকানা. 214 00:09:11,190 --> 00:09:13,190 তাই এটা বিপরীত তারকা অপারেটর, 215 00:09:13,190 --> 00:09:17,270 তারকা অপারেটর বলছেন, যেহেতু, যান এই অঙ্ক, এম্পারসেন্ড অপারেটর 216 00:09:17,270 --> 00:09:20,280 জিনিসটা, বলেছেন এই পরিবর্তনশীল এর ঠিকানা, 217 00:09:20,280 --> 00:09:23,530 এবং তাই এই কারণ, কী হয় জীবনে, scanf এর উদ্দেশ্যে 218 00:09:23,530 --> 00:09:26,320 ব্যবহারকারীর স্ক্যান করা কীবোর্ড থেকে ইনপুট, 219 00:09:26,320 --> 00:09:29,970 যাই হোক না কেন তার উপর নির্ভর করে সে ধরনের, এবং তারপর যে ব্যবহারকারীর ইনপুট পড়তে 220 00:09:29,970 --> 00:09:32,970 একটি পরিবর্তনশীল মধ্যে, কিন্তু আমরা গত দুই সপ্তাহের মধ্যে দেখেছি 221 00:09:32,970 --> 00:09:36,080 যে swap 'র ফাংশন যে আমরা বাস্তবায়ন অনায়াসে চেষ্টা 222 00:09:36,080 --> 00:09:37,110 শুধু ভাঙ্গা ছিল. 223 00:09:37,110 --> 00:09:42,470 Swap ফাংশন সঙ্গে পুনরাহ্বান যে, আমরা শুধু ints হিসেবে A এবং B ঘোষণা তাহলে, 224 00:09:42,470 --> 00:09:47,040 আমরা সফলভাবে অদলবদল হয়নি অদল-বদল ভেতরে দুটি ভেরিয়েবল 225 00:09:47,040 --> 00:09:50,080 শুধু দুধ এবং OJ সঙ্গে চাই, কিন্তু swap ', ফিরে যত তাড়াতাড়ি 226 00:09:50,080 --> 00:09:55,200 সম্মানের সঙ্গে ফলাফল কি ছিল X এবং Y করতে, মূল মান? 227 00:09:55,200 --> 00:09:55,700 কিছুই. 228 00:09:55,700 --> 00:09:56,200 হ্যা. 229 00:09:56,200 --> 00:09:59,754 কিছুই কারণ, যে সময় ঘটেছে বিনিময়সমূহ, শুধুমাত্র তার স্থানীয় কপি পরিবর্তন 230 00:09:59,754 --> 00:10:01,670 সব বলতে হয়, যা এই সময়, যখনই আমরা করেছি 231 00:10:01,670 --> 00:10:04,010 আর্গুমেন্ট কাটাচ্ছি ফাংশান, আমরা করছি 232 00:10:04,010 --> 00:10:05,939 শুধু ঐ আর্গুমেন্ট কপি ক্ষণস্থায়ী. 233 00:10:05,939 --> 00:10:07,980 আপনি যে সঙ্গে কাজ করতে পারেন তাদের সঙ্গে আপনি চান যাই হোক না কেন, 234 00:10:07,980 --> 00:10:10,890 কিন্তু তারা কোন আছে চলুন মূল মূল্যবোধের উপর প্রভাবিত. 235 00:10:10,890 --> 00:10:13,650 তাই এই আপনি যদি সমস্যাযুক্ত scanf মতো একটি ফাংশন আছে চান 236 00:10:13,650 --> 00:10:17,170 জীবনে, যার উদ্দেশ্য স্ক্যান করা কীবোর্ড থেকে ব্যবহারকারীর ইনপুট 237 00:10:17,170 --> 00:10:22,010 এবং তারপর তাই, ঐ খালি স্থান পূরণ কথা বলতে হয়, যে এক্স মত একটি পরিবর্তনশীল দিতে 238 00:10:22,010 --> 00:10:25,410 একটি মান, আমি হলে কারণ শুধু scanf এক্স পাস, 239 00:10:25,410 --> 00:10:28,790 আপনি সর্বশেষ যুক্তি বিবেচনা যদি সপ্তাহে, scanf এটা চায় তাই করতে পারেন 240 00:10:28,790 --> 00:10:33,100 X একটি কপি সঙ্গে, কিন্তু তা না পারা আমরা যদি না আপনি স্থায়ীভাবে X পরিবর্তন 241 00:10:33,100 --> 00:10:37,120 , তাই কথা বলতে, একটি ভাণ্ডারী মানচিত্র scanf এক্স স্পট চিহ্নিত যেখানে, যদ্দ্বারা 242 00:10:37,120 --> 00:10:41,860 আমরা যাতে x এর ঠিকানা পাস scanf সেখানে এবং আসলে পরিবর্তন হয়ে যেতে পারে 243 00:10:41,860 --> 00:10:42,920 x এর মান. 244 00:10:42,920 --> 00:10:45,080 তাই প্রকৃতপক্ষে, সব এই প্রোগ্রাম আছে যে 245 00:10:45,080 --> 00:10:53,180 আমি আমার উৎস, scanf 0, করতে হলে 5m ডিরেক্টরি, scanf 0 করতে, 246 00:10:53,180 --> 00:10:57,730 বিন্দু, scanf কাট, সংখ্যা 50 অনুগ্রহ, 50 জন্য ধন্যবাদ. 247 00:10:57,730 --> 00:11:01,020 >> সুতরাং এটা, যে সব আকর্ষণীয় নয় কিন্তু প্রকৃতপক্ষে তা ঘটছে 248 00:11:01,020 --> 00:11:04,820 যত তাড়াতাড়ি আমি কল হিসাবে যে হয় এখানে x এর মান scanf 249 00:11:04,820 --> 00:11:06,410 স্থায়ীভাবে পরিবর্তিত হচ্ছে. 250 00:11:06,410 --> 00:11:08,335 এখন, এই সুন্দর বলে মনে হয় এবং ভাল, এবং আসলে, এটা 251 00:11:08,335 --> 00:11:11,200 আমরা সত্যিই প্রয়োজন হয় না মত মনে হয় সব আর এ CS50 লাইব্রেরি. 252 00:11:11,200 --> 00:11:13,960 উদাহরণস্বরূপ, এর চালানো যাক এখানে এই আরো একবার. 253 00:11:13,960 --> 00:11:15,750 আমাকে একটি দ্বিতীয় জন্য এটি পুনরায় চালু করা যাক. 254 00:11:15,750 --> 00:11:20,600 এর একটি সংখ্যা চেষ্টা করুন দয়া করে এবং পরিবর্তে আগের মতই 50 বলছে, 255 00:11:20,600 --> 00:11:22,810 এর ঠিক কোন বলা যাক. 256 00:11:22,810 --> 00:11:24,000 ঠিক আছে, যে একটু অদ্ভুত. 257 00:11:24,000 --> 00:11:25,270 ঠিক আছে. 258 00:11:25,270 --> 00:11:28,680 এখানে আর মাত্র কিছু গাজাখুরি. 259 00:11:28,680 --> 00:11:31,170 সুতরাং এটা মনে হয় না ভ্রান্ত পরিস্থিতিতে সব ব্যবস্থা. 260 00:11:31,170 --> 00:11:33,620 তাই আমরা শুরু ন্যূনতমরূপে প্রয়োজন কিছু ত্রুটি-পরীক্ষণ যোগ 261 00:11:33,620 --> 00:11:37,460 ব্যবহারকারী আছে নিশ্চিত করতে 50 ভালো একটি প্রকৃত সংখ্যা টাইপ, 262 00:11:37,460 --> 00:11:40,720 দৃশ্যত টাইপ শব্দ কারণ সমস্যাযুক্ত হিসেবে সনাক্ত করা হয় না, 263 00:11:40,720 --> 00:11:42,020 কিন্তু সম্ভবত এটি করা উচিত. 264 00:11:42,020 --> 00:11:46,450 >> এর এখন যে এই সংস্করণ তাকান চলুন শুরু করা যাক আমার প্রচেষ্টা GetString, reimplement করার. 265 00:11:46,450 --> 00:11:48,437 Scanf এই সব আছে তাহলে কার্যকারিতা সালে নির্মিত 266 00:11:48,437 --> 00:11:51,270 কেন আমরা এই সঙ্গে dabbling হয়েছে GetString ভালো প্রশিক্ষণ চাকার? 267 00:11:51,270 --> 00:11:55,450 আচ্ছা, এখানে সম্ভবত আমার নিজের GetString এর সহজ সংস্করণ 268 00:11:55,450 --> 00:12:00,766 যদ্দ্বারা এক সপ্তাহ আগে, আমি হয়ত বলতে পারেন, সম্পর্কে একটি স্ট্রিং দিতে হবে এবং তা বাফার কল. 269 00:12:00,766 --> 00:12:03,390 আজ, আমি শুধু শুরু করা যাচ্ছে না গৃহস্থালি তারকা, যা, রিকল বলছে 270 00:12:03,390 --> 00:12:04,400 এটা শুধু সমার্থক নয়. 271 00:12:04,400 --> 00:12:06,629 এটা ভীতিজনক দেখায় কিন্তু এটা সঠিক একই জিনিস. 272 00:12:06,629 --> 00:12:09,420 তাই আমাকে একটি পরিবর্তনশীল নামক বাফার দিতে যে একটি স্ট্রিং সংরক্ষণ করে যাচ্ছে, 273 00:12:09,420 --> 00:12:12,780 , ব্যবহারকারীর স্ট্রিং বলুন এবং তারপর, ঠিক আগের মতই, 274 00:12:12,780 --> 00:12:17,760 এর এই পাঠ ধার করার চেষ্টা করা যাক, scanf % এর এই সময় এবং তারপর বাফারে পাস. 275 00:12:17,760 --> 00:12:19,310 এখন, একটি দ্রুত বৈধতা পরীক্ষা. 276 00:12:19,310 --> 00:12:22,120 কেন আমি বলছি না এম্পারসেন্ড এই সময় বাফার? 277 00:12:22,120 --> 00:12:25,190 278 00:12:25,190 --> 00:12:26,625 পূর্ববর্তী উদাহরণ থেকে অনুমান করা. 279 00:12:26,625 --> 00:12:28,000 শ্রোতা: চর তারকা একটি পয়েন্টার. 280 00:12:28,000 --> 00:12:29,920 DAVID Malan: ঠিক, এই সময়, গৃহস্থালি কারণ 281 00:12:29,920 --> 00:12:34,080 তারকা, ইতিমধ্যে একটি পয়েন্টার, একটি ঠিকানা থাকে সেখানে হচ্ছে যে তারা সংজ্ঞামতে. 282 00:12:34,080 --> 00:12:37,530 এবং scanf একটি ঠিকানা আশা যদি, এটা শুধু বাফারে পাস যথেষ্ট. 283 00:12:37,530 --> 00:12:39,260 আমি এম্পারসেন্ড বাফার বলার প্রয়োজন হবে না. 284 00:12:39,260 --> 00:12:42,177 অদ্ভুত, আপনি করতে পারে ভালো কিছু করতে. 285 00:12:42,177 --> 00:12:43,510 এটা ভিন্ন অর্থ আছে হবে. 286 00:12:43,510 --> 00:12:47,240 এই কমান্ডের সাহায্যে আপনি একটি পয়েন্টার দিতে হবে যা আসলে একটি পয়েন্টার, এর সাথে 287 00:12:47,240 --> 00:12:50,050 সি, কিন্তু এর জন্য একটি বৈধ জিনিস এখন, এর এটা সহজ রাখা যাক 288 00:12:50,050 --> 00:12:51,750 এবং সামঞ্জস্যপূর্ণ গল্প রাখতে. 289 00:12:51,750 --> 00:12:54,100 আমি শুধু এ পাস যাচ্ছি বাফার এবং যে সঠিক নয়. 290 00:12:54,100 --> 00:12:56,487 সমস্যা যদিও এই হল. 291 00:12:56,487 --> 00:12:58,820 আমাকে এগিয়ে যান এবং এই রান এটা পরে কম্পাইল করার প্রণালী প্রোগ্রাম. 292 00:12:58,820 --> 00:13:00,902 Scanf 1 করুন. 293 00:13:00,902 --> 00:13:02,610 ধুর, আমার কম্পাইলার এর আমার ত্রুটি ধরার. 294 00:13:02,610 --> 00:13:04,090 আমার এক জুসের বিজ্ঞাপন. 295 00:13:04,090 --> 00:13:05,460 ঝনঝন. 296 00:13:05,460 --> 00:13:06,990 এর, scanf-1.c বলা যাক. 297 00:13:06,990 --> 00:13:10,880 298 00:13:10,880 --> 00:13:11,380 ঠিক আছে. 299 00:13:11,380 --> 00:13:12,720 আমরা শুরু করছি. 300 00:13:12,720 --> 00:13:14,280 আমার এইটা দরকার. 301 00:13:14,280 --> 00:13:16,750 এবং CS50 আইডি বিভিন্ন আছে কনফিগারেশন সেটিংস 302 00:13:16,750 --> 00:13:18,280 যে নিজেকে বিরুদ্ধে আপনাকে রক্ষা. 303 00:13:18,280 --> 00:13:21,300 আমি ঐ নিষ্ক্রিয় করা প্রয়োজন নিজে এই সময় ঝনঝন চলমান. 304 00:13:21,300 --> 00:13:22,140 তাই স্ট্রিং দয়া করে. 305 00:13:22,140 --> 00:13:25,560 আমি এগিয়ে যান এবং টাইপ করা যাচ্ছে না আমার প্রিয় হ্যালো বিশ্বের. 306 00:13:25,560 --> 00:13:26,490 নাল, ঠিক আছে. 307 00:13:26,490 --> 00:13:27,700 যে আমি টাইপ করা কি না. 308 00:13:27,700 --> 00:13:29,690 সুতরাং এটা ইঙ্গিতবহ এর কিছু ভুল হচ্ছে. 309 00:13:29,690 --> 00:13:33,920 আমাকে এগিয়ে যান এবং টাইপ করুন সত্যিই একটি দীর্ঘ স্ট্রিং. 310 00:13:33,920 --> 00:13:37,210 নাল জন্য ধন্যবাদ এবং আমি জানি না যদি আমি এটি বিপর্যস্ত করতে সক্ষম হতে যাচ্ছি. 311 00:13:37,210 --> 00:13:40,240 এর একটু কপি চেষ্টা করা যাক পেস্ট এবং এই সাহায্য করে দেখতে. 312 00:13:40,240 --> 00:13:43,290 শুধু এই একটি অনেক পেস্ট. 313 00:13:43,290 --> 00:13:47,310 এটা স্পষ্টভাবে একটি বড় স্বাভাবিকের চেয়ে স্ট্রিং. 314 00:13:47,310 --> 00:13:51,450 এর মাত্র সত্যিই এটা লিখতে শুরু করা যাক. 315 00:13:51,450 --> 00:13:51,950 না. 316 00:13:51,950 --> 00:13:52,650 ধুর! ছাই. 317 00:13:52,650 --> 00:13:53,480 কমান্ড পাওয়া যায়নি. 318 00:13:53,480 --> 00:13:54,550 সুতরাং যে সম্পর্কহীন নয়. 319 00:13:54,550 --> 00:13:56,440 আমি আটকানো কারণে যে কিছু খারাপ অক্ষর, 320 00:13:56,440 --> 00:13:59,780 কিন্তু এই পরিনত কাজ করা যাচ্ছে না. 321 00:13:59,780 --> 00:14:03,510 >> কারণ এর এই আরো একবার চেষ্টা করা যাক আমরা আসলে এটা বিপর্যস্ত হলে তা আরো মজা. 322 00:14:03,510 --> 00:14:09,116 এর এই টাইপ করুন এবং এখন, আমি আছি সত্যিই একটি দীর্ঘ স্ট্রিং কপি করতে যাচ্ছে 323 00:14:09,116 --> 00:14:10,990 এবং এখন কিনা দেখতে দিন আমরা এই জিনিস বিপর্যস্ত করতে পারেন. 324 00:14:10,990 --> 00:14:14,235 আমি স্পেস বাদ এবং বিজ্ঞপ্তি নতুন লাইন এবং সেমিকোলন 325 00:14:14,235 --> 00:14:16,035 এবং সব ভীতু অক্ষর. 326 00:14:16,035 --> 00:14:16,535 লিখুন. 327 00:14:16,535 --> 00:14:21,090 328 00:14:21,090 --> 00:14:22,880 আর এখন নেটওয়ার্ক শুধু ধীর হচ্ছে. 329 00:14:22,880 --> 00:14:27,460 আমি স্পষ্ট, খুব দীর্ঘ কমান্ড-ভী নিচে অনুষ্ঠিত. 330 00:14:27,460 --> 00:14:28,190 ধুর! ছাই! 331 00:14:28,190 --> 00:14:29,260 কমান্ড পাওয়া যায়নি. 332 00:14:29,260 --> 00:14:29,780 >> ঠিক আছে. 333 00:14:29,780 --> 00:14:32,240 ওয়েল, বিন্দু তবু নিম্নলিখিত. 334 00:14:32,240 --> 00:14:36,910 তাই আসলে কি ঘটছে এই ঘোষণার সাথে প্রথম 335 00:14:36,910 --> 00:14:39,240 লাইন 16 গৃহস্থালি তারা বাফার? 336 00:14:39,240 --> 00:14:41,820 তাই আমি পেয়ে কি am আমি একটি পয়েন্টার ডিক্লেয়ার যখন? 337 00:14:41,820 --> 00:14:47,440 আমি পেয়ে গেছি সব চার বাইট মান বাফার বলা হয়, কিন্তু এটি ভেতরে কি 338 00:14:47,440 --> 00:14:49,540 এখন? 339 00:14:49,540 --> 00:14:50,930 এটা শুধু কিছু আবর্জনা মান. 340 00:14:50,930 --> 00:14:54,170 যে কোনো সময় আপনি একটি ভেরিয়েবল ডিক্লেয়ার সি, এটা শুধু কিছু আবর্জনা মান, 341 00:14:54,170 --> 00:14:56,220 এবং আমরা শুরু করছি এই বাস্তবতা উপর ট্রিপ. 342 00:14:56,220 --> 00:14:59,720 এখন, আমি, scanf বলতে হলে, এই ঠিকানায় যান 343 00:14:59,720 --> 00:15:01,520 এবং যাই হোক না কেন ব্যবহারকারী ধরনের করা. 344 00:15:01,520 --> 00:15:06,400 ব্যবহারকারী ধরনের যদি হ্যালো বিশ্বের, ভাল, আমি কোথায় রাখব না? 345 00:15:06,400 --> 00:15:07,750 বাফার একটি গার্বেজ মান. 346 00:15:07,750 --> 00:15:11,510 >> সুতরাং যে একটি তীর মত কোন ধরনের যে কে জানে যেখানে ইশারা করছে. 347 00:15:11,510 --> 00:15:13,880 হয়তো এটা নির্দেশ করে এখানে ডান আমার স্মৃতিতে. 348 00:15:13,880 --> 00:15:16,560 আর তাই যখন ব্যবহারকারী হ্যালো বিশ্বের ধরনের, 349 00:15:16,560 --> 00:15:22,380 প্রোগ্রাম লাগাতে চেষ্টা স্ট্রিং হ্যালো দুনিয়া ব্যাকস্ল্যাশ 0 350 00:15:22,380 --> 00:15:23,910 মেমরি যে তাল মধ্যে. 351 00:15:23,910 --> 00:15:27,070 কিন্তু উচ্চ সম্ভাবনা, কিন্তু পরিষ্কারভাবে 100% সম্ভাবনা, 352 00:15:27,070 --> 00:15:30,440 কম্পিউটার তারপর দড়াম যাচ্ছে প্রোগ্রাম এই নয় কারণ 353 00:15:30,440 --> 00:15:32,490 মেমরি আমি স্পর্শ করার অনুমতি দেওয়া হবে. 354 00:15:32,490 --> 00:15:36,330 তাই সংক্ষেপে, এই প্রোগ্রাম ঠিক যে কারণে দ্বিধান্বিত. 355 00:15:36,330 --> 00:15:38,070 আমি মৌলিকভাবে কি করছি না? 356 00:15:38,070 --> 00:15:42,366 পদক্ষেপগুলো আমি ঠিক মত বাদ আছে আমরা Binky এর প্রথম উদাহরণ দিয়ে বাদ? 357 00:15:42,366 --> 00:15:42,866 হ্যা? 358 00:15:42,866 --> 00:15:43,710 >> শ্রোতা: মেমরি বরাদ্দ? 359 00:15:43,710 --> 00:15:45,001 >> DAVID Malan: মেমরি বরাদ্দ. 360 00:15:45,001 --> 00:15:48,400 আমি আসলে বরাদ্দ নি যে পংক্তিটি কোন স্মৃতি. 361 00:15:48,400 --> 00:15:50,270 সুতরাং আমরা উপায় কয়েক মধ্যে এই স্থির করা যাবে. 362 00:15:50,270 --> 00:15:52,700 এক, আমরা এটা সহজ রাখা যাবে এবং আসলে, এখন আপনি আছেন 363 00:15:52,700 --> 00:15:55,116 একটি blurring দেখতে শুরু করতে যাচ্ছে কি মধ্যে লাইনের 364 00:15:55,116 --> 00:15:58,520 একটি অ্যারের একটি স্ট্রিং কি, কি একটা হয় গৃহস্থালি তারকা চরসমূহ কি একটি অ্যারের, হয় 365 00:15:58,520 --> 00:15:59,020 হয়. 366 00:15:59,020 --> 00:16:02,450 এখানে একটি দ্বিতীয় উদাহরণ স্ট্রিং এবং নোটিশ জড়িত 367 00:16:02,450 --> 00:16:05,690 সব আমি লাইনে কাজ করেছি 16 পরিবর্তে বলছে, হয় 368 00:16:05,690 --> 00:16:09,530 যে বাফার একটি গৃহস্থালির কাজ করা যাচ্ছে তারকা, মেমরি একটি খণ্ড একটি পয়েন্টার, 369 00:16:09,530 --> 00:16:14,057 আমি খুব সক্রিয়ভাবে দিতে যাচ্ছি 16 অক্ষরের জন্য নিজেকে একটি বাফার, 370 00:16:14,057 --> 00:16:16,390 এবং আসলে, আপনি পরিচিত হন তাহলে শব্দটি বাফার সঙ্গে, 371 00:16:16,390 --> 00:16:20,570 সম্ভবত ভিডিও দুনিয়া থেকে, একটি ভিডিও বাফার, বাফার যেখানে, 372 00:16:20,570 --> 00:16:21,175 বাফার. 373 00:16:21,175 --> 00:16:22,550 ওয়েল, সংযোগ এখানে কি? 374 00:16:22,550 --> 00:16:24,960 ইউটিউব এর ওয়েল, ইনসাইড এবং ভিডিও প্লেয়ার এর ভিতরে 375 00:16:24,960 --> 00:16:27,200 সাধারণত একটি অ্যারে যে 16 বছরের বড়. 376 00:16:27,200 --> 00:16:30,340 এটা মাপ এক একটি অ্যারে হতে পারে মেগাবাইটে, হয়তো 10 মেগাবাইটে, 377 00:16:30,340 --> 00:16:34,330 এবং যে অ্যারের মধ্যে আপনার ব্রাউজার আছে , বাইট আভা ডাউনলোড 378 00:16:34,330 --> 00:16:37,500 মেগাবাইটে আভা ভিডিও, এবং ভিডিও প্লেয়ার, 379 00:16:37,500 --> 00:16:40,930 YouTube- এর বা কেবা এর শুরু যে অ্যারে থেকে বাইট পড়া, 380 00:16:40,930 --> 00:16:43,530 এবং যে কোনো সময় আপনি দেখতে শব্দ বাফার, বাফার, 381 00:16:43,530 --> 00:16:46,350 যে প্লেয়ার আছে মানে যে অ্যারে শেষে অর্জিত. 382 00:16:46,350 --> 00:16:50,430 নেটওয়ার্কের এটা না যে এত ধীর আরো বাইট অ্যারের refilled 383 00:16:50,430 --> 00:16:55,610 এবং যাতে আপনি বিট ফুরিয়েছে ব্যবহারকারী যাও প্রদর্শন করতে. 384 00:16:55,610 --> 00:16:59,430 >> তাই বাফার যথাযথ শব্দটি যে এইখানে এটা শুধু একটি অ্যারের, মেমরি খণ্ড. 385 00:16:59,430 --> 00:17:02,530 আর এটা ঠিক করবে কারণ এটি সক্রিয় 386 00:17:02,530 --> 00:17:07,410 আপনি অ্যারে আচরণ করতে পারে, যদিও তারা এমনকি বাফার যদিও, ঠিকানা হয় 387 00:17:07,410 --> 00:17:10,710 শুধু একটি প্রতীক, এটি একটি হল অক্ষরের ক্রমানুসারে, বাফার, 388 00:17:10,710 --> 00:17:14,760 যে আমার জন্য দরকারী, প্রোগ্রামার, আপনার চারপাশের তার নাম প্রেরণ করতে পারেন 389 00:17:14,760 --> 00:17:17,079 এটা ছিল যেন একটি পয়েন্টার, হিসাবে এটা যদিও 390 00:17:17,079 --> 00:17:21,000 একটি খণ্ড ঠিকানা ছিল 16 অক্ষর জন্য মেমরি. 391 00:17:21,000 --> 00:17:24,530 বলে, তাই আমি সহ্য করতে পারেন ঠিক, scanf যে শব্দ 392 00:17:24,530 --> 00:17:30,670 এবং এখন, তাই আমি এই প্রোগ্রাম করতে হলে, scanf 2 করতে, বিন্দু স্ল্যাশ, scanf 2, 393 00:17:30,670 --> 00:17:35,386 এবং টাইপ হ্যালো দুনিয়া, , যে সময়ের মধ্যে লিখুন 394 00:17:35,386 --> 00:17:37,590 >> হুম, কি ঘটেছে? 395 00:17:37,590 --> 00:17:39,340 স্ট্রিং দয়া করে. 396 00:17:39,340 --> 00:17:41,430 আমি কি ভুল করছি? 397 00:17:41,430 --> 00:17:43,800 হ্যালো দুনিয়া, বাফার. 398 00:17:43,800 --> 00:17:44,705 ওহে বিশ্ব. 399 00:17:44,705 --> 00:17:48,201 400 00:17:48,201 --> 00:17:49,420 আহ, আমি এরকম ঘটছে তা জানা. 401 00:17:49,420 --> 00:17:49,920 ঠিক আছে. 402 00:17:49,920 --> 00:17:51,628 সুতরাং এটি আপ পড়া প্রথম স্থান পর্যন্ত. 403 00:17:51,628 --> 00:17:55,680 তাই আসুন শুধু একটি মুহূর্ত জন্য ঠকাই না দেওয়া এবং আমি শুধু কিছু টাইপ করতে চেয়েছিলেন বলে 404 00:17:55,680 --> 00:18:01,408 সত্যিই দীর্ঘ এই দীর্ঘ বাক্য মত যে এক, দুই, তিন, চার, পাঁচ, 405 00:18:01,408 --> 00:18:04,420 ছয়, সাত, আট, নয়, 10, 11, 12, 13, 14, 15, 16. 406 00:18:04,420 --> 00:18:05,300 ঠিক আছে. 407 00:18:05,300 --> 00:18:07,600 এটি সত্যিই একটি দীর্ঘ বাক্য. 408 00:18:07,600 --> 00:18:10,710 সুতরাং এই বাক্য আর 16 অক্ষর 409 00:18:10,710 --> 00:18:13,670 এবং তাই আমি এন্টার কি ঘটতে যাচ্ছে? 410 00:18:13,670 --> 00:18:16,940 ওয়েল, এই ক্ষেত্রে গল্প, আমি ঘোষণা বাফার 411 00:18:16,940 --> 00:18:22,190 আসলে একটি অ্যারের হচ্ছে যেতে 16 চরসমূহ প্রস্তুত সঙ্গে. 412 00:18:22,190 --> 00:18:27,426 তাই এক, দুই, তিন, চার, পাঁচ, ছয়, সাত, আট, নয়, 10, 11, 12, 13, 14, 413 00:18:27,426 --> 00:18:29,440 15, 16. 414 00:18:29,440 --> 00:18:34,410 তাই 16 অক্ষর, এবং এখন, যখন আমি এই একটি দীর্ঘ ভালো কিছু পড়তে 415 00:18:34,410 --> 00:18:43,950 বাক্য, কি ঘটতে যাচ্ছে সে আমি এই মধ্যে পড়তে যাচ্ছি যে একটি দীর্ঘ হয় 416 00:18:43,950 --> 00:18:49,660 এস-ই-এন-টি-ই-এন-সি-ই, বাক্য. 417 00:18:49,660 --> 00:18:52,270 >> সুতরাং এই ইচ্ছাকৃতভাবে হয় একটি খারাপ জিনিস যে আমি 418 00:18:52,270 --> 00:18:55,060 তার পরেও লেখা রাখা আমার অ্যারের সীমানা, 419 00:18:55,060 --> 00:18:56,660 আমার বাফার সীমানা অতিক্রম. 420 00:18:56,660 --> 00:19:00,100 আমি ভাগ্যবান এবং প্রোগ্রাম পেতে পারে যত্ন চলমান রাখা এবং না হবে, 421 00:19:00,100 --> 00:19:03,450 কিন্তু সাধারণত, এই কথা বলার প্রকৃতপক্ষে আমার ক্র্যাশ প্রোগ্রাম হবে, 422 00:19:03,450 --> 00:19:06,440 এবং এটি একটি বাগ সংশোধন করা হয় আমার আমি ধাপে মুহূর্তে কোড 423 00:19:06,440 --> 00:19:08,576 সীমানা অতিক্রম যে অ্যারের, আমি কারণ 424 00:19:08,576 --> 00:19:10,450 এটা যদি জানতে না অগত্যা বিপর্যস্ত যাচ্ছে 425 00:19:10,450 --> 00:19:12,120 বা আমি শুধু ভাগ্যবান পেতে যাচ্ছি. 426 00:19:12,120 --> 00:19:15,750 সুতরাং এই সমস্যাযুক্ত কারণ এই ক্ষেত্রে, এটা কাজ বলে মনে হচ্ছে না 427 00:19:15,750 --> 00:19:20,931 এবং, যদিও এখানে ভাগ্য পরীক্ষা বাতিল আইডিই বেশ একটু সহ্য করতে মনে 428 00:19:20,931 --> 00:19:21,430 র 429 00:19:21,430 --> 00:19:22,040 >> আমরা শুরু করছি. 430 00:19:22,040 --> 00:19:23,240 অবশেষে. 431 00:19:23,240 --> 00:19:26,470 তাই আমি এই দেখতে পারেন যে শুধুমাত্র এক নই. 432 00:19:26,470 --> 00:19:29,630 তাই আমি ঠিক মজা টাইপিং অনেক ছিল সত্যিই একটি দীর্ঘ প্রকৃত ফ্রেইজ আউট 433 00:19:29,630 --> 00:19:32,800 এটা অবশ্যই অতিক্রম করেছে 16 বাইট, আমি কারণ 434 00:19:32,800 --> 00:19:38,050 এই পাগল দীর্ঘ বহু-লাইন টাইপ শব্দগুচ্ছ, এবং তারপর কি ঘটেছে লক্ষ্য. 435 00:19:38,050 --> 00:19:41,110 প্রোগ্রাম এটি মুদ্রণ চেষ্টা এবং তারপর একটি সেগমেন্টেশন ফল্ট না 436 00:19:41,110 --> 00:19:44,430 এবং সেগমেন্টেশন ফল্ট যখন হয় ভালো কিছু ঘটবে 437 00:19:44,430 --> 00:19:47,650 এবং অপারেটিং সিস্টেম বলছেন কোন, যে মেমরি স্পর্শ করতে পারবে না. 438 00:19:47,650 --> 00:19:49,570 আমরা হত্যা করতে যাচ্ছেন পুরাপুরি প্রোগ্রাম. 439 00:19:49,570 --> 00:19:51,180 >> তাই এই সমস্যা বলে মনে হয়. 440 00:19:51,180 --> 00:19:54,540 আমি প্রোগ্রাম যদ্দ্বারা উন্নত করেছি অন্তত, কিছু স্মৃতি আছে 441 00:19:54,540 --> 00:19:58,000 কিন্তু এই পুরা মনে হবে পেয়ে ফাংশন GetString 442 00:19:58,000 --> 00:20:00,780 কিছু সসীম দৈর্ঘ্য 16 স্ট্রিং. 443 00:20:00,780 --> 00:20:04,200 আপনি আর সমর্থন করতে চান তাহলে 16 অক্ষরের চেয়ে বাক্য, 444 00:20:04,200 --> 00:20:04,880 আপনি কি করেন? 445 00:20:04,880 --> 00:20:07,970 ওয়েল, আপনি বাড়াতে পারেন 32 এই বাফারের আকার 446 00:20:07,970 --> 00:20:09,190 বা যে ধরনের ছোট মনে হচ্ছে. 447 00:20:09,190 --> 00:20:12,260 কেন আমরা শুধু করতে না এটা 1,000 কিন্তু ফিরে ধাক্কা. 448 00:20:12,260 --> 00:20:17,100 Intuitively, এর প্রতিক্রিয়া কী শুধু করে এই সমস্যা এড়ানো 449 00:20:17,100 --> 00:20:20,660 1,000 অক্ষর ভালো লেগেছে, বড় আমার বাফার? 450 00:20:20,660 --> 00:20:23,470 এই ভাবে GetString বাস্তবায়নের মাধ্যমে. 451 00:20:23,470 --> 00:20:27,130 কি এখানে ভাল বা খারাপ? 452 00:20:27,130 --> 00:20:28,033 হ্যা? 453 00:20:28,033 --> 00:20:30,574 শ্রোতা: আপনি অনেক বেঁধেও যদি স্থান এবং আপনি এটা ব্যবহার করবেন না, 454 00:20:30,574 --> 00:20:33,500 তারপর আপনি যে স্থান বরাদ্দ করা যাবে না. 455 00:20:33,500 --> 00:20:34,500 DAVID Malan: একেবারে. 456 00:20:34,500 --> 00:20:38,480 যদি তা চান না যতটা হিসাবে যদি বাংলাদেশের পোশাকশ্রমিকদের এর আসলে যারা বাইট 900 প্রয়োজন 457 00:20:38,480 --> 00:20:41,057 এবং এখনো আপনার জন্য বলছি যাহাই হউক না কেন মোট 1,000, 458 00:20:41,057 --> 00:20:44,140 আপনি শুধু আরও মেমরি গ্রাসকারী করছি আপনি প্রয়োজন তুলনায় ব্যবহারকারীর কম্পিউটার, 459 00:20:44,140 --> 00:20:45,740 এবং সব কিছু পরে আপনি ইতিমধ্যে সম্মুখীন হয়েছি 460 00:20:45,740 --> 00:20:47,620 জীবনে আপনি যখন যে প্রোগ্রাম প্রচুর চলমান 461 00:20:47,620 --> 00:20:50,470 এবং তারা মেমরি প্রচুর আপ খাওয়া করছি আসলে এই কর্মক্ষমতা প্রভাবিত করতে পারে 462 00:20:50,470 --> 00:20:52,220 এবং ব্যবহারকারীর অভিজ্ঞতা কম্পিউটারে. 463 00:20:52,220 --> 00:20:56,090 সুতরাং যে ধরনের একটি অলস সমাধান, নিশ্চিত হওয়ার জন্য, এবং বিপরীতক্রমে, 464 00:20:56,090 --> 00:21:00,140 এটা না শুধুমাত্র অযথা এর, কি সমস্যা এখনও আমি আমার বাফার করা, এমনকি যদি অবশেষ 465 00:21:00,140 --> 00:21:02,100 1,000? 466 00:21:02,100 --> 00:21:02,600 হ্যা? 467 00:21:02,600 --> 00:21:04,475 >> শ্রোতা: স্ট্রিং দৈর্ঘ্য 1,001 হয়. 468 00:21:04,475 --> 00:21:05,350 DAVID Malan: ঠিক. 469 00:21:05,350 --> 00:21:08,280 আপনার স্ট্রিং দৈর্ঘ্য 1,001 হয়, তাহলে, আপনি সঠিক একই সমস্যা আছে, 470 00:21:08,280 --> 00:21:10,705 এবং আমার যুক্তি দ্বারা, আমি দেখব শুধু তারপর এটি 2000 করতে, 471 00:21:10,705 --> 00:21:12,830 কিন্তু আপনি জানেন না এটা কিভাবে হতে হবে বড় আগাম, 472 00:21:12,830 --> 00:21:16,890 এবং এখনো, আমি আমার প্রোগ্রাম কম্পাইল করতে হবে না মানুষ ব্যবহার করতে দেওয়ার আগে ও ডাউনলোড 473 00:21:16,890 --> 00:21:17,390 এটা. 474 00:21:17,390 --> 00:21:21,490 সুতরাং এই ঠিক ধরনের স্টাফ CS50 লাইব্রেরি চেষ্টা করে যে 475 00:21:21,490 --> 00:21:24,750 সাথে আমাদের সাহায্য এবং আমরা শুধুমাত্র নজরে করব অন্তর্নিহিত বাস্তবায়ন কয়েকটি 476 00:21:24,750 --> 00:21:29,790 এখানে, কিন্তু এই CS50 ডট সি হল এবং CS50 আইডিই পড়ছে যে ফাইল 477 00:21:29,790 --> 00:21:31,420 আপনি ব্যবহার করে থাকেন যে সব এই সপ্তাহের. 478 00:21:31,420 --> 00:21:34,280 এটা প্রাক কম্পাইল এবং আপনি করেছি স্বয়ংক্রিয়ভাবে এটি ব্যবহার করা হয়েছে 479 00:21:34,280 --> 00:21:38,780 থাকার প্রকৃতি দ্বারা ঝনঝন সঙ্গে ঠ CS50 পতাকা ড্যাশ, 480 00:21:38,780 --> 00:21:42,300 কিন্তু আমি সব দিয়ে নিচে স্ক্রল এই ফাংশন, এখানে GetString, এর, 481 00:21:42,300 --> 00:21:44,636 এবং আপনি একটি দিতে কি স্বাদ, ঘটছে 482 00:21:44,636 --> 00:21:46,760 এর সময়ে দ্রুত কটাক্ষপাত করা যাক আপেক্ষিক জটিলতা. 483 00:21:46,760 --> 00:21:48,870 এটা না একটি সুপার দীর্ঘ ফাংশন, কিন্তু আমরা না 484 00:21:48,870 --> 00:21:52,530 সব কঠিন সম্পর্কে চিন্তা আছে কিভাবে স্ট্রিং পেয়ে সম্পর্কে যেতে. 485 00:21:52,530 --> 00:21:55,660 >> তাই এখানে আমার বাফার এবং আমি দৃশ্যত নাল এটি আরম্ভ. 486 00:21:55,660 --> 00:21:57,990 এই, অবশ্যই, হয় গৃহস্থালি তারকা হিসাবে একই জিনিস, 487 00:21:57,990 --> 00:22:00,585 কিন্তু আমি এ সিদ্ধান্ত নিয়েছে CS50 লাইব্রেরি বাস্তবায়ন 488 00:22:00,585 --> 00:22:02,460 আমরা চলুন তাহলে যে সম্পূর্ণ গতিশীল হতে 489 00:22:02,460 --> 00:22:05,770 আমি একটি কিভাবে বড় অগ্রিম জানি না স্ট্রিং ব্যবহারকারীদের পেতে চান যাচ্ছি. 490 00:22:05,770 --> 00:22:08,140 তাই আমি শুরু করতে যাচ্ছি শুধু একটি খালি স্ট্রিং সঙ্গে 491 00:22:08,140 --> 00:22:11,507 এবং আমি যতটা বিল্ড আপ করতে যাচ্ছি মেমরি আমি ব্যবহারকারীর স্ট্রিং মাপসই করা হবে হিসাবে 492 00:22:11,507 --> 00:22:13,340 এবং আমি না থাকে যথেষ্ট, আমি জিজ্ঞাসা করতে যাচ্ছি 493 00:22:13,340 --> 00:22:15,010 আরো মেমরির জন্য অপারেটিং সিস্টেম. 494 00:22:15,010 --> 00:22:17,510 আমি তাদের স্ট্রিং সরাতে যাচ্ছি মেমরি একটি বড় খণ্ড মধ্যে 495 00:22:17,510 --> 00:22:21,847 এবং আমি মুক্তি বা মুক্ত করতে যাচ্ছি মেমরি অপ্রতুল বড় খণ্ড 496 00:22:21,847 --> 00:22:23,680 এবং আমরা শুধু চলুন iteratively এই কাজ. 497 00:22:23,680 --> 00:22:25,570 >> সুতরাং এক ঝলকে, এখানে শুধু একটি পরিবর্তনশীল 498 00:22:25,570 --> 00:22:28,780 যা দিয়ে আমি ট্র্যাক রাখা যাচ্ছে না আমার বাফার ক্ষমতা নিয়ে. 499 00:22:28,780 --> 00:22:30,071 আমি কত বাইট ফিট করতে পারে? 500 00:22:30,071 --> 00:22:32,070 এখানে একটি পরিবর্তনশীল n সঙ্গে এর আমি রাখা যাচ্ছে না, যা 501 00:22:32,070 --> 00:22:36,200 আসলে কতগুলি বাইট সম্পর্কে অবগত ব্যবহারকারী টাইপ করা হয়েছে বা যে বাফার. 502 00:22:36,200 --> 00:22:39,900 আপনি আগে এই দেখা না করে থাকেন তাহলে, আপনি উল্লেখ করতে পারেন যে কোন int মত একটি পরিবর্তনশীল 503 00:22:39,900 --> 00:22:46,370 নাম সুপারিশ হিসাবে যা, স্বাক্ষরবিহীন হয় মানে এটা অ নেতিবাচক, এবং কেন 504 00:22:46,370 --> 00:22:50,590 আমি কখনও উল্লেখ বিরক্ত করতে চাই কোন int ঠিক কোন int নয় যে, 505 00:22:50,590 --> 00:22:52,540 কিন্তু এটি একটি স্বাক্ষরবিহীন int- এর? 506 00:22:52,540 --> 00:22:55,064 এটি একটি অ-নেতিবাচক কোন int এর. 507 00:22:55,064 --> 00:22:56,355 [শ্রবণাতীত] এর অর্থ কি? 508 00:22:56,355 --> 00:22:58,910 >> শ্রোতা: এটা একটি পরিমাণ বর্ণনা হচ্ছে মেমরি [শ্রবণাতীত] হতে পারে. 509 00:22:58,910 --> 00:22:59,660 >> ডেভিড MALAN: হ্যাঁ. 510 00:22:59,660 --> 00:23:03,710 আমি স্বাক্ষরবিহীন যদি বলি তাই, এই আসলে আপনি অতিরিক্ত মেমরি এক বিট প্রদান 511 00:23:03,710 --> 00:23:07,440 আপনি যদি এটা অর্থহীন ধরনের মনে হচ্ছে, কিন্তু , যে অতিরিক্ত মেমরি এক বিট আছে 512 00:23:07,440 --> 00:23:09,940 আপনি অনেক হিসাবে দুইবার আছে মানে আপনি উপস্থাপন করতে পারেন মান, 513 00:23:09,940 --> 00:23:11,570 এটি একটি 0 বা 1 হতে পারে, কারণ. 514 00:23:11,570 --> 00:23:14,660 সুতরাং ডিফল্টরূপে, কোন int প্রায় হতে পারে নেতিবাচক 2 বিলিয়ন সমস্ত উপায় 515 00:23:14,660 --> 00:23:16,030 ইতিবাচক 2 বিলিয়ন পর্যন্ত. 516 00:23:16,030 --> 00:23:18,540 যারা বড় পরিসর, কিন্তু এটি এখনও ধরনের অযথা এর 517 00:23:18,540 --> 00:23:21,280 আপনি শুধুমাত্র যত্নশীল হলে মাপ, যা শুধু intuitively 518 00:23:21,280 --> 00:23:24,620 অঋণাত্মক হওয়া উচিত বা ইতিবাচক বা 0, ভাল তারপর, 519 00:23:24,620 --> 00:23:28,884 কেন আপনি 2 বিলিয়ন নাশক ঋণাত্মক সংখ্যা জন্য সম্ভাব্য মান 520 00:23:28,884 --> 00:23:30,300 আপনি কখনও তাদের ব্যবহার করতে যাচ্ছেন, তাহলে? 521 00:23:30,300 --> 00:23:35,350 তাই করতে পারেন স্বাক্ষরবিহীন, এখন আমার কোন int বলছে দ্বারা বিলিয়ন 4 0 এবং প্রায় হতে. 522 00:23:35,350 --> 00:23:39,280 >> সুতরাং এখানে কারণে শুধু কোন int সি এর আমরা এখন আর শুধু হিসাবে মধ্যে পাবেন না 523 00:23:39,280 --> 00:23:42,280 এটি পরিবর্তে একটি int কেন একটি গৃহস্থালি, কিন্তু এইখানে 524 00:23:42,280 --> 00:23:44,630 কি ঘটছে সারকথা আপনাকে, এবং কিছু 525 00:23:44,630 --> 00:23:48,340 উদাহরণস্বরূপ, ব্যবহার করা যেতে পারে, এমনকি কীভাবে PSet চার fgetc ফাংশন 526 00:23:48,340 --> 00:23:51,580 বা তারপর, আমরা এটা দেখতে পাবেন আবার সমস্যা পাঁচটি সেট 527 00:23:51,580 --> 00:23:55,410 ঠিক fgetc কারণ নাম হিসাবে চমৎকার ধরনের, সাজানোর arcanely, সুপারিশ 528 00:23:55,410 --> 00:23:57,940 এটি একটি ফাংশন যে একটি অক্ষর পায় এবং তাই 529 00:23:57,940 --> 00:24:00,690 কি মৌলিকভাবে ভিন্ন আমরা GetString মধ্যে কি করছেন সম্পর্কে 530 00:24:00,690 --> 00:24:03,110 আমরা ব্যবহার করছি না হয় একই ভাবে, scanf. 531 00:24:03,110 --> 00:24:07,550 আমরা শুধু ধাপে ধাপে বরাবর লতানে যাই হোক না কেন ব্যবহারকারী টাইপ করা হয়েছে, 532 00:24:07,550 --> 00:24:10,970 আমরা সবসময় এক বরাদ্দ করা যেতে পারে, কারণ গৃহস্থালির কাজ, এবং তাই আমরা সবসময় নিরাপদে পারেন 533 00:24:10,970 --> 00:24:15,599 একটি সময়ে এক গৃহস্থালি তাকান, এবং যাদু এখানে ঘটতে শুরু. 534 00:24:15,599 --> 00:24:17,890 আমি নিচে স্ক্রল করতে যাচ্ছি এই ফাংশন মাঝখানে 535 00:24:17,890 --> 00:24:20,360 শুধু সংক্ষেপে এই ফাংশন পরিচয় করিয়ে দিতে. 536 00:24:20,360 --> 00:24:22,670 অনেক একটি নেই মত যদি malloc ফাংশন আছে 537 00:24:22,670 --> 00:24:27,740 একটি realloc ফাংশন যেখানে realloc আপনি মেমরি একটি খণ্ড reallocate দেয় 538 00:24:27,740 --> 00:24:29,570 এবং এটা বড় বা ছোট করা. 539 00:24:29,570 --> 00:24:33,060 তাই দীর্ঘ সংক্ষিপ্ত বিবরণ এবং সঙ্গে আজকের জন্য আমার হাতের একটি তরঙ্গ, 540 00:24:33,060 --> 00:24:35,620 যে কি GetString, জানি করছে তা সাজানোর হয় 541 00:24:35,620 --> 00:24:39,720 এর আছে magically ক্রমবর্ধমান বা ব্যবহারকারী হিসাবে বাফার মাপে 542 00:24:39,720 --> 00:24:41,440 তার স্ট্রিং এ ধরনের. 543 00:24:41,440 --> 00:24:43,962 >> যদি তাই ব্যবহারকারী ধরনের একটি সংক্ষিপ্ত স্ট্রিং, এই কোড 544 00:24:43,962 --> 00:24:45,920 শুধুমাত্র যথেষ্ট বরাদ্দ মেমরি স্ট্রিং মাপসই. 545 00:24:45,920 --> 00:24:48,086 ব্যবহারকারী টাইপিং রাখে তাহলে আমি আবার এবং আবার তা করেনি 546 00:24:48,086 --> 00:24:50,330 এবং আবার, ভাল, যদি বাফার এর প্রাথমিকভাবে এই বড় 547 00:24:50,330 --> 00:24:53,310 এবং প্রোগ্রাম, বুঝতে পারবেন একটি মিনিট অপেক্ষা করুন, আমি স্থান থেকে বাদ, 548 00:24:53,310 --> 00:24:55,410 তা দ্বিগুণ যাচ্ছে বাফারের আকার 549 00:24:55,410 --> 00:24:59,110 এবং তারপর বাফারের আকার দ্বিগুণ এবং দ্বিগুনের যে কোড, 550 00:24:59,110 --> 00:25:03,170 আমরা এখানে যদি এটা তাকান, এটা শুধু এই চতুর এক অধি. 551 00:25:03,170 --> 00:25:06,830 আপনি এই বাক্য গঠন দেখা যায় না পারে আগে কিন্তু আপনি তারকা সমান যদি বলি, 552 00:25:06,830 --> 00:25:10,470 এই একই জিনিস হিসাবে হয় ক্ষমতা বার 2 বলছে. 553 00:25:10,470 --> 00:25:13,390 তাই এটা শুধু দ্বিত্ব রাখে বাফার ক্ষমতা 554 00:25:13,390 --> 00:25:17,480 এবং তারপর realloc বলার দিতে নিজেই যে আরো অনেক স্মৃতি. 555 00:25:17,480 --> 00:25:19,720 >> এখন, হিসাবে একটি সরাইয়া, সেখানে এখানে অন্যান্য কার্যাবলী হয় 556 00:25:19,720 --> 00:25:23,680 আমরা কোনো বিস্তারিত দেখব না করবে GetInt মধ্যে দেখানোর জন্য আর অন্য, 557 00:25:23,680 --> 00:25:26,150 আমরা GetInt GetString ব্যবহার. 558 00:25:26,150 --> 00:25:28,192 আমরা এটা না যে পরীক্ষা নাল, যা, রিকল, 559 00:25:28,192 --> 00:25:30,400 বিশেষ মূল্য যে কিছু ভুল হয়েছে মানে. 560 00:25:30,400 --> 00:25:31,233 আমরা মেমরি ফুরিয়েছে. 561 00:25:31,233 --> 00:25:32,310 ভাল যে জন্য পরীক্ষা. 562 00:25:32,310 --> 00:25:33,710 আর আমরা একটি প্রহরী মান আসতে. 563 00:25:33,710 --> 00:25:37,850 কিন্তু আমি যত মন্তব্য মুলতবি করব কেন এবং তারপর আমরা scanf এর এই চাচাতো ভাই ব্যবহার 564 00:25:37,850 --> 00:25:42,100 যদি sscanf বলা হয় এবং এটি সক্রিয় আউট যে sscanf, বা স্ট্রিং, scanf, 565 00:25:42,100 --> 00:25:45,310 আপনি লাইন কটাক্ষপাত দেয় যে ব্যবহারকারী টাইপ এবং আপনি বাতিল করেছে 566 00:25:45,310 --> 00:25:49,610 মূলত এটা বিশ্লেষণ এবং আমি কি এখানে কি করছেন আমি sscanf বলার করছি হয়, 567 00:25:49,610 --> 00:25:54,440 ব্যবহারকারী আছে যাই হোক না কেন বিশ্লেষণ টাইপ করা এবং নিশ্চিত% আমি, 568 00:25:54,440 --> 00:25:59,250 সেখানে এটি একটি পূর্ণসংখ্যা, এবং আমরা না করবে না এছাড়াও আছে ঠিক কেন আজ ঢোকা 569 00:25:59,250 --> 00:26:03,760 সংক্ষেপে একটি% এখানে C, কিন্তু যে পারবেন ব্যবহারকারী টাইপ করা হয়েছে, তাহলে আমাদের সনাক্ত করতে 570 00:26:03,760 --> 00:26:06,050 সংখ্যা পর বাজে কিছু. 571 00:26:06,050 --> 00:26:11,766 তাই কারণে যে GetInt এবং GetString, পুনরায় চেষ্টা, পুনরায় চেষ্টা করার জন্য আপনাকে বলতে, পুনরায় চেষ্টা 572 00:26:11,766 --> 00:26:13,640 কারণ সব হয় আমরা লিখিত করেছি কোড, 573 00:26:13,640 --> 00:26:17,900 এটা কোন ধরনের ব্যবহারকারীর ইনপুট দিকে তাকিয়ে আছে এমনটা নিশ্চিত করা যে এটি সম্পূর্ণরূপে সাংখ্যিক এর 574 00:26:17,900 --> 00:26:21,700 অথবা এটি একটি প্রকৃত ভাসমান এর বিন্দু মান বা মত, 575 00:26:21,700 --> 00:26:24,233 কি মূল্য উপর নির্ভর করে আপনি ব্যবহার করছেন কাজ. 576 00:26:24,233 --> 00:26:25,060 >> রক্ষে. 577 00:26:25,060 --> 00:26:25,710 ঠিক আছে. 578 00:26:25,710 --> 00:26:27,592 যে একটি একগাল ছিল কিন্তু পয়েন্ট এখানে 579 00:26:27,592 --> 00:26:29,550 যে আমরা ছিল কারণ যারা প্রশিক্ষণ চাকার 580 00:26:29,550 --> 00:26:32,880 কারণ সর্বনিম্ন পর্যায়ে রয়েছে শুধু তাই অনেক কিছু আছে 581 00:26:32,880 --> 00:26:35,674 আমরা চেয়েছিলাম যে ভুল হয়ে যেতে পারে যাও preemptively হ্যান্ডেল করতে 582 00:26:35,674 --> 00:26:38,090 অবশ্যই সেগুলো ক্লাসের নিকটতম সপ্তাহ, 583 00:26:38,090 --> 00:26:42,230 কিন্তু এখন কীভাবে PSet চার এবং PSet পাঁচটি সাথে এবং তার পরেও আপনি এটি কাছে আরো দেখতে হবে 584 00:26:42,230 --> 00:26:45,570 আপনি কিন্তু আপনি আরো সক্ষম হন এর সমস্যার ঐ ধরণের সমাধান 585 00:26:45,570 --> 00:26:47,180 নিজেকে. 586 00:26:47,180 --> 00:26:51,770 GetString, বা কোন প্রশ্নের উপর GetInt? 587 00:26:51,770 --> 00:26:52,630 হ্যা? 588 00:26:52,630 --> 00:26:55,130 >> শ্রোতা: কেন আপনি দ্বিগুণ হবে বাফার ক্ষমতা 589 00:26:55,130 --> 00:26:57,630 বরং শুধু বৃদ্ধি বেশী এটা সঠিক পরিমাণ? 590 00:26:57,630 --> 00:26:58,100 >> DAVID Malan: ভাল প্রশ্ন. 591 00:26:58,100 --> 00:27:00,474 কেন আমরা ক্ষমতা দ্বিগুণ হবে বাফার উল্টোদিকে 592 00:27:00,474 --> 00:27:02,800 শুধু তা বৃদ্ধি করতে কিছু ধ্রুবক রয়েছে যার মান দ্বারা? 593 00:27:02,800 --> 00:27:03,900 এটি একটি নকশা সিদ্ধান্ত ছিল. 594 00:27:03,900 --> 00:27:08,590 আমরা শুধু এটা থাকে কারণ যে সিদ্ধান্ত নিয়েছে সময়-জ্ঞানী ব্যয়বহুল একটু জিজ্ঞাসা একটি হতে 595 00:27:08,590 --> 00:27:10,440 অপারেটিং সিস্টেম মেমরি জন্য, আমরা না 596 00:27:10,440 --> 00:27:13,210 মধ্যে পেয়ে শেষ করতে চান বড় স্ট্রিং জন্য একটি অবস্থা 597 00:27:13,210 --> 00:27:14,960 আমরা জিজ্ঞাসা করা হয় যে আবার এবং আবার অপারেটিং সিস্টেম 598 00:27:14,960 --> 00:27:17,500 এবং আবার এবং আবার মেমরি জন্য দ্রুত পারম্পর্য. 599 00:27:17,500 --> 00:27:20,387 তাই আমরা ঠিক কিছুটা, সিদ্ধান্ত ইচ্ছামত কিন্তু আমরা যুক্তিসঙ্গতভাবে আশা করি, 600 00:27:20,387 --> 00:27:22,720 যে, আপনি, আসুন কি জানেন এগিয়ে নিজেদেরকে পেতে চেষ্টা 601 00:27:22,720 --> 00:27:25,520 এবং ঠিক তাই এটি দ্বিত্ব রাখতে আমরা সময়ের পরিমাণ হ্রাস 602 00:27:25,520 --> 00:27:29,010 আমরা malloc কল আছে বা realloc কিন্তু মোট রায় 603 00:27:29,010 --> 00:27:31,820 বুদ্ধিমান অভাবে কল কি ব্যবহারকারীদের টাইপ করতে চাইতে পারেন. 604 00:27:31,820 --> 00:27:33,600 উভয় পদ্ধতিতে বিতর্কিত হতে পারে. 605 00:27:33,600 --> 00:27:35,430 তর্কসাপেক্ষ ভাল. 606 00:27:35,430 --> 00:27:39,240 >> সুতরাং আসুন একটি দম্পতি কটাক্ষপাত করা যাক মেমরি অন্য পার্শ্ব প্রতিক্রিয়া, 607 00:27:39,240 --> 00:27:41,610 ভুল হয়ে যেতে পারে যে কিছু এবং টুলস যে আপনি যা করতে পারেন 608 00:27:41,610 --> 00:27:43,880 ভুল এই ধরণের আঁকড়ি ব্যবহার. 609 00:27:43,880 --> 00:27:47,800 এটা যদিও, আপনি সব দেখা যাচ্ছে check50, আপনি যতটা বলা হয় নি 610 00:27:47,800 --> 00:27:50,050 বগী লেখা হয়েছে সপ্তাহে এক থেকে কোড, 611 00:27:50,050 --> 00:27:53,630 এমনকি সব check50 পরীক্ষা হয় তাহলে পাস, এবং এমনকি যদি আপনি এবং আপনার TF 612 00:27:53,630 --> 00:27:56,010 যে সুপার আত্মবিশ্বাসী হয় উদ্দেশ্যে আপনার কোড কাজ করে. 613 00:27:56,010 --> 00:27:59,190 তোমার কোড বগী হয়েছে বা আপনি যে সব ভ্রান্ত, 614 00:27:59,190 --> 00:28:02,540 CS50 লাইব্রেরি ব্যবহার করে, মেমরি লিক হয়েছে. 615 00:28:02,540 --> 00:28:06,040 আপনি অপারেটিং সিস্টেম জিজ্ঞাসা করে থাকেন প্রোগ্রাম অধিকাংশ মেমরি জন্য 616 00:28:06,040 --> 00:28:08,850 আপনি লিখিত করেছি, কিন্তু আপনি কি করেছেন আসলে এটা ফেরত দেওয়া না. 617 00:28:08,850 --> 00:28:12,110 আপনি নামক GetString করেছি এবং GetInt এবং GetFloat,, 618 00:28:12,110 --> 00:28:15,270 কিন্তু GetString সঙ্গে, আপনি করেছি unGetString বা দিন বলা হয় না 619 00:28:15,270 --> 00:28:19,890 স্ট্রিং পিছনে বা মত, কিন্তু আমরা দেখা করেছি GetString, মেমরি বরাদ্দ আছে 620 00:28:19,890 --> 00:28:22,810 যদি malloc প্রণালী বা এই দ্বারা শুধু যা ফাংশন realloc, 621 00:28:22,810 --> 00:28:25,670 আত্মা খুব অনুরূপ, এবং এখনো, আমরা চলেছি 622 00:28:25,670 --> 00:28:28,629 জন্য অপারেটিং সিস্টেম জিজ্ঞাসা মেমরি এবং মেমরি আবার এবং আবার 623 00:28:28,629 --> 00:28:29,670 কিন্তু এটা ফেরৎ না. 624 00:28:29,670 --> 00:28:33,550 >> এখন, একটি সরাইয়া হিসাবে, এটা দেখা যাচ্ছে যে একটি প্রোগ্রাম, মেমরি সব ছেড়ে দেয় 625 00:28:33,550 --> 00:28:34,870 স্বয়ংক্রিয়ভাবে মুক্ত করা হয়. 626 00:28:34,870 --> 00:28:36,150 সুতরাং এটি একটি বিশাল চুক্তি হয়েছে না. 627 00:28:36,150 --> 00:28:38,590 এটি বিরতি যাচ্ছে না আইডিই বা ধীর জিনিষ নিচে, 628 00:28:38,590 --> 00:28:40,670 কিন্তু যখন প্রোগ্রাম না সাধারণত মেমরি লিক 629 00:28:40,670 --> 00:28:42,170 এবং তারা একটি দীর্ঘ সময় জন্য চালাচ্ছেন. 630 00:28:42,170 --> 00:28:45,640 কখনো বোকা একটু দেখা করে থাকেন তাহলে ম্যাক অপারেটিং সিস্টেম বা বালিঘড়ি মধ্যে বিচ বল 631 00:28:45,640 --> 00:28:51,160 উইন্ডোজ এটা ধরনের যেখানে গতি কমে বা চিন্তা বা চিন্তা 632 00:28:51,160 --> 00:28:53,770 অথবা সত্যিই শুরু একটি মুছে দেব যাও মন্থর, 633 00:28:53,770 --> 00:28:56,960 এটা খুব সম্ভবত হতে পারে একটি মেমরি লিক ফলাফল. 634 00:28:56,960 --> 00:28:59,970 লিখেছেন প্রোগ্রামাররা যারা আপনি ব্যবহার করছেন সফটওয়্যার 635 00:28:59,970 --> 00:29:03,570 অপারেটিং সিস্টেম মেমরির জন্য জিজ্ঞাসা প্রতি কয়েক মিনিট, প্রতিটি ঘন্টা. 636 00:29:03,570 --> 00:29:05,570 কিন্তু আপনি চালাচ্ছেন, এটা এমনকি যদি সফটওয়্যার, 637 00:29:05,570 --> 00:29:08,680 আপনার কম্পিউটার এ কমিয়ে আনা ঘন্টার পর ঘন্টা বা দিনের জন্য, 638 00:29:08,680 --> 00:29:11,980 আপনি আরো এবং আরো জন্য জিজ্ঞাসা করা হতে পারে মেমরি এবং না আসলে এটি ব্যবহার 639 00:29:11,980 --> 00:29:15,180 এবং তাই আপনার কোড করা, বা হতে পারে প্রোগ্রাম, মেমরি লিক হতে পারে 640 00:29:15,180 --> 00:29:18,350 এবং আপনি মেমরি লিক শুরু হলে, অন্যান্য প্রোগ্রামের জন্য কম মেমরি আছে, 641 00:29:18,350 --> 00:29:21,220 এবং প্রভাব হয় সবকিছু মন্দীভূত. 642 00:29:21,220 --> 00:29:23,600 >> এখন, এই পর্যন্ত এক মাধ্যম সবচেয়ে নৃশংস প্রোগ্রাম 643 00:29:23,600 --> 00:29:26,350 আপনি সুযোগ থাকবে CS50 মধ্যে চালানোর জন্য যতটা 644 00:29:26,350 --> 00:29:31,650 তার আউটপুট চেয়ে আরও বেশি গূঢ় হিসাবে ঝনঝন এর বা এর করা বা কমান্ড কোন 645 00:29:31,650 --> 00:29:35,930 আমরা আগে রান করেছি লাইন প্রোগ্রাম কিন্তু সৌভাগ্যক্রমে, তার আউটপুট এমবেড 646 00:29:35,930 --> 00:29:39,810 কিছু সুপার সহায়ক টিপস যে দরকারী হয় কীভাবে PSet চার হতে হবে 647 00:29:39,810 --> 00:29:41,510 অথবা অবশ্যই পাঁচটি pset. 648 00:29:41,510 --> 00:29:44,250 সুতরাং Valgrind একটি টুল যে পর্যবেক্ষণ ব্যবহার করা যেতে পারে 649 00:29:44,250 --> 00:29:46,930 আপনার প্রোগ্রামে মেমরি তথ্য ফাঁসের জন্য. 650 00:29:46,930 --> 00:29:48,570 এটি চালানোর জন্য অপেক্ষাকৃত সহজ. 651 00:29:48,570 --> 00:29:51,420 এমনকি আপনি, Valgrind এবং তারপর রান এটি একটি সামান্য বাগাড়ম্বরপূর্ণ যদিও, 652 00:29:51,420 --> 00:29:54,440 ড্যাশ ড্যাশ লিক চেক পুরো সমান, এবং তারপর বিন্দু 653 00:29:54,440 --> 00:29:56,320 কাট এবং আপনার প্রোগ্রামের নাম. 654 00:29:56,320 --> 00:30:00,010 সুতরাং Valgrind তারপর আপনার প্রোগ্রাম চালানো হবে এবং আপনার প্রোগ্রাম খুব শেষে 655 00:30:00,010 --> 00:30:02,240 এটি শোধবোধ হয়ে আগে চলমান এবং , আপনি অন্য প্রম্পট দেয় 656 00:30:02,240 --> 00:30:04,980 তা বিশ্লেষণ করতে যাচ্ছে আপনার প্রোগ্রাম এটি চলমান হয়েছে যখন 657 00:30:04,980 --> 00:30:07,740 এবং আপনি ফুটা হয়নি বলুন এখনো ভালো কোনো মেমরি এবং, 658 00:30:07,740 --> 00:30:10,610 আপনি মেমরি স্পর্শ হয়নি যে আপনি অন্তর্গত করা হয়নি? 659 00:30:10,610 --> 00:30:13,700 এটা সবকিছু ধরা যাবে না, কিন্তু এটা অধিকাংশ জিনিস ধরার এ প্রশংসনীয় ভাল. 660 00:30:13,700 --> 00:30:19,700 >> তাই এখানে আমার থাকার চালান একটি উদাহরণ এই প্রোগ্রামটি রান Valgrind হচ্ছে, 661 00:30:19,700 --> 00:30:21,470 নামক একটি প্রোগ্রাম মেমরি, এবং আমি যাচ্ছি 662 00:30:21,470 --> 00:30:24,730 যে লাইন তুলে ধরতে শেষ পর্যন্ত আমাদের আগ্রহের. 663 00:30:24,730 --> 00:30:27,690 তাই এমনকি আরো distractions আছে আমি স্লাইড থেকে মুছে ফেলেন যে. 664 00:30:27,690 --> 00:30:30,930 কিন্তু এর ঠিক কি দেখতে দিন প্রোগ্রাম আমাদের বলার করতে সক্ষম. 665 00:30:30,930 --> 00:30:34,800 এটা আমাদের কিছু বলার করতে সক্ষম আকার 4 অবৈধ লিখতে চাই. 666 00:30:34,800 --> 00:30:38,020 অন্য কথায়, আপনার মেমরি স্পর্শ, মেমরি বিশেষভাবে 4 বাইট 667 00:30:38,020 --> 00:30:40,350 আপনি থাকা উচিত নয় যে, Valgrind আপনি বলতে পারেন. 668 00:30:40,350 --> 00:30:41,660 আকার 4 অবৈধ লেখার. 669 00:30:41,660 --> 00:30:43,640 আপনি চার বাইট স্পর্শ আপনি থাকা উচিত নয় যে. 670 00:30:43,640 --> 00:30:44,840 কোথায় আপনি যে কাজ হয়নি? 671 00:30:44,840 --> 00:30:45,900 এই সৌন্দর্য. 672 00:30:45,900 --> 00:30:50,000 স্মৃতি বিন্দু গ লাইন 21 যেখানে আপনি হয় মাতাল আপ এবং এটি সহায়ক যে কেন. 673 00:30:50,000 --> 00:30:53,410 অনেক GDB মত, এটা সাহায্য করতে পারেন প্রকৃত ত্রুটি এ আপনি নির্দেশ. 674 00:30:53,410 --> 00:30:57,170 >> এখন, এই এক একটি সামান্য আরো বাগাড়ম্বরপূর্ণ, বিভ্রান্তিকর না তাহলে. 675 00:30:57,170 --> 00:31:01,307 1 ব্লকে 40 বাইট স্পষ্টভাবে হয় ক্ষয় রেকর্ড 1 1 এর মধ্যে হারিয়ে গেছে. 676 00:31:01,307 --> 00:31:02,140 ওটার মানে কি? 677 00:31:02,140 --> 00:31:05,920 ওয়েল, এটা আপনার জন্য জিজ্ঞাসা মানে 40 বাইট এবং আপনি তা ফেরত দেয় না. 678 00:31:05,920 --> 00:31:08,930 আপনি malloc বলা অথবা আপনি বলা GetString এবং অপারেটিং সিস্টেম 679 00:31:08,930 --> 00:31:12,450 আপনি 40 বাইট, কিন্তু আপনি কখনও দিয়েছেন মুক্ত বা যে মেমরি মুক্তি, 680 00:31:12,450 --> 00:31:15,400 ও নিরপেক্ষ হতে হবে, আমরা দেখাতে না করেছি আপনি কিভাবে মেমরি ফেরত দিতে. 681 00:31:15,400 --> 00:31:17,910 একটি সুপার আছে দেখা যাচ্ছে সহজ ফাংশন ফ্রি বলা. 682 00:31:17,910 --> 00:31:21,170 এক যুক্তি, জিনিস লাগে আপনি বিনামূল্যে অথবা ফেরত দিতে চান 683 00:31:21,170 --> 00:31:23,430 কিন্তু 40 বাইট, দৃশ্যত, এই প্রোগ্রাম 684 00:31:23,430 --> 00:31:27,300 লাইনে হারিয়ে হয়েছে মেমরি 20 সি বিন্দু. 685 00:31:27,300 --> 00:31:28,650 >> তাই আসুন এই প্রোগ্রাম দেখতে দিন. 686 00:31:28,650 --> 00:31:31,020 এটা অতি অকাজের. 687 00:31:31,020 --> 00:31:33,980 এটা শুধুমাত্র প্রমান এই বিশেষ ত্রুটি. 688 00:31:33,980 --> 00:31:34,920 তাই এর কটাক্ষপাত করা যাক. 689 00:31:34,920 --> 00:31:39,920 এখানে প্রধান ও প্রধান, নোটিশ, কল হয় একটি ফাংশন f এবং তারপর আয় বলা. 690 00:31:39,920 --> 00:31:41,550 সুতরাং যে সব আকর্ষণীয় নয়. 691 00:31:41,550 --> 00:31:42,664 F কী কাজ করে? 692 00:31:42,664 --> 00:31:44,330 আমি একটি প্রোটোটাইপ সঙ্গে মাথা ঘামান না লক্ষ্য করুন. 693 00:31:44,330 --> 00:31:46,520 আমি কোড রাখতে চেয়েছিলেন যতটা সম্ভব সংক্ষিপ্ত. 694 00:31:46,520 --> 00:31:49,530 তাই আমি প্রধান উপরে F করা এবং যে, অবশ্যই, সূক্ষ্ম 695 00:31:49,530 --> 00:31:51,500 এই মত ছোট প্রোগ্রামের জন্য. 696 00:31:51,500 --> 00:31:56,910 তাই চ কিছু আসতে এবং না না না কিছু গ্রহণ করা, কিন্তু এটা এই কাজ করে. 697 00:31:56,910 --> 00:31:59,620 এটা অনেক ভালো, ঘোষণা একটি পোলট্রি খামারে Binky উদাহরণে, 698 00:31:59,620 --> 00:32:02,682 যে এক্স নামক একটি পয়েন্টার যাচ্ছে কোন int এর ঠিকানা সংরক্ষণ. 699 00:32:02,682 --> 00:32:03,890 সুতরাং যে বাম দিকে আছে. 700 00:32:03,890 --> 00:32:07,230 ইংরেজিতে, কি করছেন ডান দিকে? 701 00:32:07,230 --> 00:32:09,770 যে কেউ? 702 00:32:09,770 --> 00:32:13,665 এই আমাদের জন্য কী করছে? 703 00:32:13,665 --> 00:32:14,651 হ্যা? 704 00:32:14,651 --> 00:32:16,623 >> শ্রোতা: [শ্রবণাতীত] বার int মাপ 705 00:32:16,623 --> 00:32:19,175 যা 10 গুণ যে [শ্রবণাতীত] 706 00:32:19,175 --> 00:32:20,800 DAVID Malan: গুড এবং আমার সংক্ষেপ করা যাক. 707 00:32:20,800 --> 00:32:25,480 সুতরাং 10 পূর্ণসংখ্যার জন্য পর্যাপ্ত স্থান বরাদ্দ বা 10, int মাপ, কি 708 00:32:25,480 --> 00:32:29,340 এটা 4 হয় চার বাইট, তাই 10 বার 40, আমি করেছি যে ডান দিকে তাই 709 00:32:29,340 --> 00:32:33,930 হাইলাইট আমাকে 40 বাইট দিতে হয় এবং প্রথম বাইট ঠিকানা সঞ্চয় 710 00:32:33,930 --> 00:32:34,940 X মধ্যে. 711 00:32:34,940 --> 00:32:38,380 এবং এখন সর্বশেষে, এবং এখানে কোথায় এই প্রোগ্রামটি বগী, কি হয় 712 00:32:38,380 --> 00:32:41,540 লাইন 21 সঙ্গে ভুল যে যুক্তিবিজ্ঞান উপর ভিত্তি করে? 713 00:32:41,540 --> 00:32:45,197 714 00:32:45,197 --> 00:32:46,280 কি লাইন 21 সঙ্গে ভুল? 715 00:32:46,280 --> 00:32:46,780 হ্যা? 716 00:32:46,780 --> 00:32:49,550 শ্রোতা: আপনি না পারেন [শ্রবণাতীত] X মধ্যে সূচক. 717 00:32:49,550 --> 00:32:50,300 ডেভিড MALAN: হ্যাঁ. 718 00:32:50,300 --> 00:32:52,270 আমি যে মত এক্স মধ্যে সূচক উচিত না. 719 00:32:52,270 --> 00:32:53,850 সুতরাং সিনট্যাক্স, এটা ঠিক আছে. 720 00:32:53,850 --> 00:32:56,990 কি সুন্দর আপনার মত অনেক, হয় একটি অ্যারের নাম বিবেচনা করতে পারেন 721 00:32:56,990 --> 00:33:01,080 যদিও এটা একইভাবে, একটি পয়েন্টার এটা হিসাবে যদিও আপনি একটি পয়েন্টার বিবেচনা করতে পারেন 722 00:33:01,080 --> 00:33:06,425 একটি অ্যারের, এবং তাই আমি সিনট্যাক্স পারেন X বন্ধনী কিছু বলতে, এক্স বন্ধনী আমি, 723 00:33:06,425 --> 00:33:07,800 কিন্তু 10 সমস্যাযুক্ত. 724 00:33:07,800 --> 00:33:09,096 কেন? 725 00:33:09,096 --> 00:33:10,910 >> শ্রোতা: এটা ভিতরে না কারণ. 726 00:33:10,910 --> 00:33:12,390 >> ডেভিড MALAN: এটা না মেমরি যে তাল ভিতরে. 727 00:33:12,390 --> 00:33:15,306 বৃহত্তম মান কত আমি উচিত যারা বর্গাকার বন্ধনী মধ্যে স্থাপন করা? 728 00:33:15,306 --> 00:33:16,870 9 থেকে 9, 0. 729 00:33:16,870 --> 00:33:18,160 শূন্য ইন্ডেক্স এর কারণ. 730 00:33:18,160 --> 00:33:20,190 তাই 9 মাধ্যমে 0 জরিমানা করা হবে. 731 00:33:20,190 --> 00:33:23,960 বন্ধনী 10 ভালো নয় এবং কিন্তু, প্রত্যেক সময় যদিও প্রত্যাহার 732 00:33:23,960 --> 00:33:27,017 আমি CS50 আইডিই করতে চেষ্টা বলে মনে হচ্ছে বাজে মান টাইপ করে ক্র্যাশ, 733 00:33:27,017 --> 00:33:29,100 এটা সবসময় সহযোগিতা করে না এবং প্রকৃতপক্ষে, আপনি প্রায়ই 734 00:33:29,100 --> 00:33:31,460 ভাগ্যবান পেতে মাত্র কারণ অপারেটিং সিস্টেম না 735 00:33:31,460 --> 00:33:35,467 লক্ষ্য যে আপনি কি তাই সামান্য মেমরি কিছু খণ্ড পাস, 736 00:33:35,467 --> 00:33:38,300 আপনি টেকনিক্যালি মধ্যে থাকুন, কারণ আপনার সেগমেন্ট, কিন্তু আরো যে 737 00:33:38,300 --> 00:33:40,940 একটি অপারেটিং সিস্টেম ক্লাসে, এই মত ও তাই কিছু 738 00:33:40,940 --> 00:33:43,000 খুব সহজেই ধরা পড়েনি যেতে পারে. 739 00:33:43,000 --> 00:33:48,120 তোমার প্রোগ্রাম কখনও বিপর্যস্ত যাচ্ছে ধারাবাহিকভাবে কিন্তু হয়তো একবার অল্প সময়ের মধ্যে. 740 00:33:48,120 --> 00:33:50,610 >> আর তাই এর Valgrind চেষ্টা করা যাক এই প্রথম, এবং এখানে 741 00:33:50,610 --> 00:33:52,870 যেখানে আমরা মগ্ন পাবেন প্রতিমুহূর্তে আউটপুট দ্বারা. 742 00:33:52,870 --> 00:34:00,810 তাই মেমরি Valgrind লিক চেক করতে পূর্ণ ডট স্ল্যাশ মেমরি সমান. 743 00:34:00,810 --> 00:34:03,040 আমি প্রতিজ্ঞা করছি কেন এবং এখানে এই অভিভূত হবে. 744 00:34:03,040 --> 00:34:05,700 এখানে Valgrind, এখানে কি কি একজন প্রোগ্রামার, কিছু বছর ago- 745 00:34:05,700 --> 00:34:08,469 এটি একটি ভাল ধারণা হবে সিদ্ধান্ত নিয়েছে ভালো আউটপুট দেখুন জন্য. 746 00:34:08,469 --> 00:34:09,750 তাই আসুন এই জানার অনুমতি দেবেন. 747 00:34:09,750 --> 00:34:13,120 বাম হাতের উপর তাই সব পথ কোন ভাল কারণ সাইড 748 00:34:13,120 --> 00:34:16,620 প্রোগ্রাম প্রক্রিয়া আইডি আমরা শুধু, ইউনিক আইডেন্টিফায়ার চালানো 749 00:34:16,620 --> 00:34:18,030 প্রোগ্রামের জন্য আমরা শুধু দৌড়ে. 750 00:34:18,030 --> 00:34:19,738 আমরা থেকে যে মোছা স্লাইড, কিন্তু আছে 751 00:34:19,738 --> 00:34:22,190 এখানে কিছু দরকারী তথ্য. 752 00:34:22,190 --> 00:34:24,684 >> এর খুব উপরে স্ক্রল আপ করা যাক. 753 00:34:24,684 --> 00:34:25,600 আমরা শুরু যেখানে এখানে. 754 00:34:25,600 --> 00:34:27,040 সুতরাং এটা যে সব অনেক আউটপুট না. 755 00:34:27,040 --> 00:34:30,429 এখানে যে অবৈধ লেখার এর লাইন 21 আকার 4. 756 00:34:30,429 --> 00:34:31,760 ওয়েল, লাইন 21 কি ছিল? 757 00:34:31,760 --> 00:34:34,500 লাইন 21 ঠিক ছিল এই এবং এটা জ্ঞান করে তোলে 758 00:34:34,500 --> 00:34:37,290 আমি বৈধভাবে আছি যে আমি নই, কারণ 4 বাইট লেখা 759 00:34:37,290 --> 00:34:40,389 এই পূর্ণসংখ্যা লাগাতে চেষ্টা করছে, যা, কিছু হতে পারে 760 00:34:40,389 --> 00:34:42,370 এটা শুধু হতে হবে শূন্য, কিন্তু আমি চেষ্টা করছি 761 00:34:42,370 --> 00:34:44,940 একটি অবস্থানে এটা করা যে আমার সাথে জড়িত নয়. 762 00:34:44,940 --> 00:34:50,900 এক তাছাড়া, এখানে নিচে, 40 বাইট ব্লক স্পষ্টভাবে রেকর্ড 1 মধ্যে হারিয়ে যায়. 763 00:34:50,900 --> 00:34:56,500 যে আমি malloc কল যখন এর কারণ এখানে, আমি আসলে মেমরি মুক্ত না. 764 00:34:56,500 --> 00:34:58,140 >> তাই কিভাবে আমরা এই স্থির করা যাবে? 765 00:34:58,140 --> 00:35:02,970 আমাকে এগিয়ে যান এবং একটি একটু নিরাপদ হতে সেখানে 9 এবং এখানে বিনামূল্যে এক্স আমাকে দিন. 766 00:35:02,970 --> 00:35:04,820 আজকের জন্য নতুন ফাংশন. 767 00:35:04,820 --> 00:35:11,520 আমি এখন মেমরি ডট স্ল্যাশ করা পুন: প্রকাশ করে, আছে, এটা আবার প্রথম Valgrind চালানো যাক 768 00:35:11,520 --> 00:35:14,990 আমার জানালা সর্বাধিক করে এন্টার চাপুন. 769 00:35:14,990 --> 00:35:16,900 এখন, এটা ভালো. 770 00:35:16,900 --> 00:35:19,590 তারা ভাল খবর সমাহিত এই আউটপুট সব. 771 00:35:19,590 --> 00:35:20,810 সমস্ত গাদা ব্লক মুক্ত ছিল. 772 00:35:20,810 --> 00:35:23,604 আমরা কি গাদা ফিরে আসবো হয়, কিন্তু কোন তথ্য ফাঁসের সম্ভব. 773 00:35:23,604 --> 00:35:25,520 সুতরাং এই মাত্র আরেকটি হল আপনার টুল কিট জন্য টুল 774 00:35:25,520 --> 00:35:30,220 যা দিয়ে আপনি শুরু করতে পারেন এখন যে মত ত্রুটি খুঁজে. 775 00:35:30,220 --> 00:35:34,532 >> কিন্তু দেখুন কি আরো ভুল এখানে যেতে পারেন. 776 00:35:34,532 --> 00:35:38,890 এখন এর রূপান্তর করা যাক আসলে কোন সমস্যা সমাধানে. 777 00:35:38,890 --> 00:35:42,440 একটি সরাইয়া হিসাবে, এই একটি উপশম হবে তাহলে বিভ্রান্তি বা টান অল্প, 778 00:35:42,440 --> 00:35:43,430 এই এখন মজার হয়. 779 00:35:43,430 --> 00:35:46,400 780 00:35:46,400 --> 00:35:46,900 হ্যা. 781 00:35:46,900 --> 00:35:49,040 যে বেশ ভাল. 782 00:35:49,040 --> 00:35:50,890 পয়েন্টার কারণ ঠিকানা ও ঠিকানা 783 00:35:50,890 --> 00:35:53,098 কনভেনশন দ্বারা সাধারণত হয় হেক্সাডেসিমেল দিয়ে লেখা. 784 00:35:53,098 --> 00:35:54,650 হা, হা, এই এখন মজার হয়. 785 00:35:54,650 --> 00:35:58,390 যাহাই হউক না কেন, তাই এখন আসুন আসলে একটি সমস্যা সমাধানের জন্য. 786 00:35:58,390 --> 00:36:00,840 এই সুপার হয়েছে সুপার পর্যন্ত নিম্নস্তরের, 787 00:36:00,840 --> 00:36:03,950 আমরা আসলে দরকারী করতে পারেন এই নিম্নস্তরের বিস্তারিত সঙ্গে কিছু. 788 00:36:03,950 --> 00:36:06,710 >> তাই আমরা কয়েক সপ্তাহ চালু আগে একটি অ্যারের ধারণা. 789 00:36:06,710 --> 00:36:09,177 একটি অ্যারের সুন্দর ছিল, কারণ এটা তোলে আমাদের কোড পরিষ্কার করা কঠিন 790 00:36:09,177 --> 00:36:11,760 আমরা একটি লিখতে চেয়েছিলেন কারণ একাধিক ছাত্রদের সঙ্গে প্রোগ্রাম 791 00:36:11,760 --> 00:36:15,270 বা একাধিক নাম এবং ঘর ও ছাত্রাবাসে এবং কলেজ ও যে সব, 792 00:36:15,270 --> 00:36:19,430 আমরা সবকিছু আরো সংরক্ষণ করতে পারে পরিচ্ছন্নভাবে একটি অ্যারের ভিতরে. 793 00:36:19,430 --> 00:36:23,039 কিন্তু এক downside উত্থাপন একটি অ্যারের পর্যন্ত. 794 00:36:23,039 --> 00:36:26,080 আপনি এটা নিজে ভোগ করে না থাকেন, এমনকি যদি একটি প্রোগ্রাম, শুধু অমনটা, 795 00:36:26,080 --> 00:36:30,870 একটি খারাপ জিনিস কি একটি অ্যারের সম্পর্কে, সম্ভবত? 796 00:36:30,870 --> 00:36:32,337 আমি কিছু murmurs শুনতে. 797 00:36:32,337 --> 00:36:34,170 শ্রোতা: এটা কঠিন আকার পরিবর্তন. 798 00:36:34,170 --> 00:36:36,128 ডেভিড MALAN: এটা কঠিন আকার পরিবর্তন. 799 00:36:36,128 --> 00:36:38,660 আপনি আকার পরিবর্তন করতে পারবেন না একটি অ্যারের, আসলে কোনটাই 800 00:36:38,660 --> 00:36:43,040 সি ইন, আপনি অন্য অ্যারের বরাদ্দ করা যেতে পারে, পুরানো এক থেকে সবকিছু সরানো 801 00:36:43,040 --> 00:36:45,380 এখন নতুন, এবং মধ্যে কিছু অতিরিক্ত স্থান আছে, 802 00:36:45,380 --> 00:36:47,469 কিন্তু এটি একটি ভালো না জাভা বা পাইথন মত ভাষা 803 00:36:47,469 --> 00:36:49,760 বা অন্য কোন সংখ্যা যা দিয়ে আপনি প্রত্যেক কিছু 804 00:36:49,760 --> 00:36:52,070 পরিচিত হতে পারে যেখানে আপনি শুধু কিছু যোগ রাখতে পারেন 805 00:36:52,070 --> 00:36:53,930 একটি অ্যারের শেষে বিরক্তিকরভাবে. 806 00:36:53,930 --> 00:36:57,880 আপনি একটি অ্যারে আছে যখন তার আকার যে আকার 6, 807 00:36:57,880 --> 00:37:01,970 এবং ধারণা আগে মত এত একটি নির্দিষ্ট আকারের একটি বাফার হচ্ছে, 808 00:37:01,970 --> 00:37:05,940 আপনি গেট আউট অনুমান আছে কি সাইজ আপনি এটা হতে চান না? 809 00:37:05,940 --> 00:37:07,880 আপনি খুব বড় অনুমান, আপনি জায়গা নষ্ট করছি. 810 00:37:07,880 --> 00:37:10,950 আপনি খুব ছোট অনুমান, আপনি অন্তত, যে তথ্য সংরক্ষণ করতে পারে না 811 00:37:10,950 --> 00:37:12,940 আরো অনেক কাজ ছাড়া. 812 00:37:12,940 --> 00:37:18,180 >> পয়েন্টার তাই আজ, ধন্যবাদ, আমরা যা করতে পারেন একসাথে আমাদের নিজস্ব সেলাই শুরু 813 00:37:18,180 --> 00:37:20,989 ডাটা স্ট্রাকচার, এবং এ আসলে, এখানে এমন কিছু বিষয় 814 00:37:20,989 --> 00:37:23,030 যে একটু বেশি মনে হচ্ছে প্রথম নজরে রহস্যপূর্ণ, 815 00:37:23,030 --> 00:37:26,440 কিন্তু এই আমরা একটি লিঙ্ক ডাকবো কি তালিকা, এবং সংক্ষিপ্ত বিবরণ তার নাম ধরনের 816 00:37:26,440 --> 00:37:26,940 এটা. 817 00:37:26,940 --> 00:37:29,550 এটি সংখ্যার একটি তালিকা, বা এই ক্ষেত্রে, সংখ্যার একটি তালিকা, 818 00:37:29,550 --> 00:37:33,480 কিন্তু এটি কিছু একটি তালিকা হতে পারে, কিন্তু পারে এটি একসাথে তীর দ্বারা লিঙ্ক 819 00:37:33,480 --> 00:37:36,380 এবং মাত্র একটি অনুমান নিতে কি কৌশল নিয়ে 820 00:37:36,380 --> 00:37:38,310 আমরা পাবে যাচ্ছি একসঙ্গে সেলাই করা, 821 00:37:38,310 --> 00:37:42,540 সাজান একটি থ্রেড সঙ্গে ভুট্টার খই মত, একটি এখানে তালিকা আয়তক্ষেত্র লিঙ্ক? 822 00:37:42,540 --> 00:37:43,936 তার সংখ্যা? 823 00:37:43,936 --> 00:37:45,560 অন্তর্নিহিত ভাষা বৈশিষ্ট্য কী? 824 00:37:45,560 --> 00:37:46,350 >> শ্রোতা: একটি পয়েন্টার. 825 00:37:46,350 --> 00:37:47,308 >> ডেভিড Malan: একটি পয়েন্টার. 826 00:37:47,308 --> 00:37:51,700 সুতরাং তিরগুলো প্রতিটি এখানে প্রতিনিধিত্ব একটি পয়েন্টার অথবা একটি ঠিকানা. 827 00:37:51,700 --> 00:37:54,590 তাই অন্য কথায়, যদি আমি চাই সংখ্যার একটি তালিকা সংরক্ষণ করতে, 828 00:37:54,590 --> 00:37:59,040 যদি আমি চাই আমি শুধু এটি সংরক্ষণ করতে পারবেন না বড় হয়ে যায় এবং সঙ্কুচিত করার ক্ষমতা 829 00:37:59,040 --> 00:38:00,990 একটি অ্যারের মধ্যে আমার ডাটা স্ট্রাকচার. 830 00:38:00,990 --> 00:38:03,000 তাই আমি একটু থাকতে হবে আরো কুতর্ক, 831 00:38:03,000 --> 00:38:05,720 কিন্তু এই যে লক্ষ্য ছবি ধরনের সুপারিশ 832 00:38:05,720 --> 00:38:08,650 আপনি শুধু একটু থ্রেড পেয়েছেন যে সবকিছু একসঙ্গে সংযোগ, 833 00:38:08,650 --> 00:38:13,100 সম্ভবত স্থান করতে যে কঠিন নয় যারা rectangles মধ্যে মধ্যে দুই 834 00:38:13,100 --> 00:38:16,750 অথবা যারা নোড দুই, হিসাবে আমরা শুরু করব একটি নতুন নোড রাখা, তাদের আহ্বান, 835 00:38:16,750 --> 00:38:19,547 এবং তারপর কিছু নতুন থ্রেড সঙ্গে, শুধু একসঙ্গে তিন নোড খানা, 836 00:38:19,547 --> 00:38:22,880 প্রথম এক, গত এক, এবং এক আপনি শুধু মাঝখানে ঢোকানো হয়. 837 00:38:22,880 --> 00:38:26,000 >> এবং প্রকৃতপক্ষে একটি লিঙ্ক তালিকা, একটি অ্যারের ভিন্ন, গতিশীল হয়. 838 00:38:26,000 --> 00:38:27,840 এটা অবধি প্রসারণ করা সম্ভব এবং এটি করতে পারেন সঙ্কুচিত এবং আপনি না 839 00:38:27,840 --> 00:38:32,434 জানেন বা অগ্রিম কিভাবে যত্ন আছে অনেক তথ্য আপনি সংরক্ষণ করা চলুন, 840 00:38:32,434 --> 00:38:35,600 কিন্তু এটি আমরা একটু হতে হবে সক্রিয় আউট এই বাস্তবায়ন কিভাবে সম্পর্কে সতর্ক থাকুন. 841 00:38:35,600 --> 00:38:39,070 সুতরাং প্রথম এর আমরা বাস্তবায়ন কিভাবে বিবেচনা করা যাক এই সামান্য আয়তক্ষেত্র এক. 842 00:38:39,070 --> 00:38:40,690 এটা কোন int বাস্তবায়ন করা সহজ. 843 00:38:40,690 --> 00:38:44,000 আপনি শুধু তারপর int n এবং বলে আপনি কোন int জন্য 4 বাইট পেতে, 844 00:38:44,000 --> 00:38:49,089 কিন্তু আমি কোন int পেতে পারি কিভাবে, এন কল এবং তারপর একটি পয়েন্টার, এর পরের কল করা যাক. 845 00:38:49,089 --> 00:38:50,880 আমাদের অনুমতি ছাড়া এই পেরেছিলাম কিছু কিছু আমরা চাই 846 00:38:50,880 --> 00:38:53,590 কিন্তু আমি একটি কাস্টম তথ্য কাঠামো প্রয়োজন. 847 00:38:53,590 --> 00:38:54,257 হ্যা? 848 00:38:54,257 --> 00:38:57,020 >> শ্রোতা: ampersand [শ্রবণাতীত]. 849 00:38:57,020 --> 00:39:00,940 >> DAVID Malan: তাই এম্পারসেন্ড আমরা করতে ব্যবহার করা হবে সম্ভাব্য একটি নোডের ঠিকানা পেতে. 850 00:39:00,940 --> 00:39:02,740 কিন্তু আমরা অন্য প্রয়োজন সি এর বৈশিষ্ট্য পাওয়া যায় যাতে 851 00:39:02,740 --> 00:39:06,700 আমার তৈরি করার ক্ষমতা দিতে এই কাস্টম আয়তাকার, এই কাস্টম 852 00:39:06,700 --> 00:39:08,919 পরিবর্তনশীল আপনি মেমরি, হবে. 853 00:39:08,919 --> 00:39:09,710 শ্রোতা: একটি struct. 854 00:39:09,710 --> 00:39:10,626 DAVID Malan: একটি struct. 855 00:39:10,626 --> 00:39:14,310 গত সপ্তাহ থেকে প্রত্যাহার, আমরা চালু struct, এই অপেক্ষাকৃত সহজ শব্দ 856 00:39:14,310 --> 00:39:16,254 যে আমাদের এই মত কিছু করতে দেয়. 857 00:39:16,254 --> 00:39:18,420 সি একটি তথ্য দিয়ে আসে না কাঠামো ছাত্র বলা. 858 00:39:18,420 --> 00:39:22,190 এটা কোন int এবং ভাসা ও গৃহস্থালি এবং সঙ্গে আসে যেমন, কিন্তু এটা ছাত্র সঙ্গে আসে না, 859 00:39:22,190 --> 00:39:26,750 কিন্তু আমরা একটি ছাত্র ডাটা টাইপ তৈরি করতে পারেন, এই সিনট্যাক্স সঙ্গে একটি ছাত্র কাঠামো, 860 00:39:26,750 --> 00:39:27,250 এখানে. 861 00:39:27,250 --> 00:39:28,350 এবং আপনি আবার এবং আবার এই দেখতে পাবেন. 862 00:39:28,350 --> 00:39:30,426 তাই চিন্তার কিছু নেই মূলশব্দ memorizing, 863 00:39:30,426 --> 00:39:33,300 কিন্তু গুরুত্বপূর্ণ যে শব্দ হয় আমরা বলেন যে শুধু সত্য struct 864 00:39:33,300 --> 00:39:37,590 এবং তারপর আমরা এটা ছাত্র বলা হয় এবং ভিতরে ছাত্র একটি নাম এবং একটি ঘর ছিল 865 00:39:37,590 --> 00:39:39,390 একটি dorm বা মত বা. 866 00:39:39,390 --> 00:39:41,980 >> আর তাই আজ এখন, আমি কি এই উত্থাপন করা যাক. 867 00:39:41,980 --> 00:39:45,240 আমি একটি কয়েকটি শব্দ যোগ করা হয়, কিন্তু যদি আমি চাই করেছি যে এই আয়তাকার বাস্তবায়ন 868 00:39:45,240 --> 00:39:48,440 কোন int এবং একটি উভয় পেয়েছিলাম পয়েন্টার, আপনি, আমি কি করছি জানি 869 00:39:48,440 --> 00:39:51,540 নোড বলা একটি struct ঘোষণা করা যাচ্ছে. 870 00:39:51,540 --> 00:39:55,630 আমি বলতে যাচ্ছি, এটি ভেতরে আছি একটি নোড, এই আয়তক্ষেত্র, কোন int আছে 871 00:39:55,630 --> 00:39:59,730 এবং আমরা ডাকবো এন ও এটা পরবর্তী পয়েন্টার আছে. 872 00:39:59,730 --> 00:40:02,540 এবং এই একটি সামান্য বাগাড়ম্বরপূর্ণ হয় কিন্তু আপনি এটা আমার মনে হয়, 873 00:40:02,540 --> 00:40:07,300 ছবিতে ছিল তীর একটি মুহূর্ত আগে কি ডাটা টাইপ এর হয়? 874 00:40:07,300 --> 00:40:12,330 কোথায় সেই তীর প্রতিটি নির্দেশ করা হয় তথ্য কি ধরনের কাঠামো করতে? 875 00:40:12,330 --> 00:40:14,332 এটা শুধু কোনটাই কোন int ইশারা. 876 00:40:14,332 --> 00:40:16,165 এটি এর প্রতি নির্দেশ পুরো আয়তক্ষেত্রাকার জিনিস 877 00:40:16,165 --> 00:40:18,720 এবং যে আয়তক্ষেত্রাকার জিনিস, আমরা একটি নোড বলা হয়, বলেন. 878 00:40:18,720 --> 00:40:21,720 আর তাই আমরা ধরনের আছে পৌনঃপুনিকভাবে এই যেমন নির্ধারণ 879 00:40:21,720 --> 00:40:26,270 একটি নোড যে, আমরা বলবে এন নামক কোন int থাকতে হবে 880 00:40:26,270 --> 00:40:31,070 এবং একটি পয়েন্টার পরের এবং বলা যা করতে ডাটা স্ট্রাকচার ধরণ 881 00:40:31,070 --> 00:40:35,770 যে পয়েন্টার পয়েন্ট দৃশ্যত হয় struct নোড হতে যাচ্ছে. 882 00:40:35,770 --> 00:40:41,550 >> সুতরাং এই annoyingly বাগাড়ম্বরপূর্ণ হয় এবং মাত্র, গোঁড়া হবে 883 00:40:41,550 --> 00:40:44,100 কারণ কেন আমরা করতে পারেন না শুধু এই বলে, যা অকপটে 884 00:40:44,100 --> 00:40:46,860 অনেক বেশি পাঠযোগ্য দেখায় রিকল পড়তে সি যে কারণ হল 885 00:40:46,860 --> 00:40:48,710 কিছু উপর থেকে নিচ, ডানে বামে. 886 00:40:48,710 --> 00:40:54,120 আমরা সেমিকোলন পেতে হওয়া পর্যন্ত এটা না শব্দ নোড আসলে বিদ্যমান. 887 00:40:54,120 --> 00:40:57,980 আমরা এই সাজানোর আছে সেটি যদি তাই তথ্য ভিতরে চক্রাকার রেফারেন্স 888 00:40:57,980 --> 00:41:02,120 কাঠামো, আমরা এই কাজ করতে হবে, যেখানে আমরা শীর্ষে struct নোড বলতে যা 889 00:41:02,120 --> 00:41:06,770 আমাদের এই বর্ণনা আর উপায় দেয় জিনিস, আমরা struct নোড বলে তারপর ভিতরে, 890 00:41:06,770 --> 00:41:09,560 এবং তারপর খুব শেষ লাইন এ আমরা বলতে, ঠিক আছে, সি, উপায় দ্বারা, 891 00:41:09,560 --> 00:41:12,060 শুধু এই গোটা অভিশাপ কল জিনিস একটি নোড এবং বন্ধ 892 00:41:12,060 --> 00:41:14,360 পুরাপুরি শব্দ struct ব্যবহার. 893 00:41:14,360 --> 00:41:18,030 সুতরাং এই মাত্র সাজানোর একটি অন্বিত হয় শেষ পর্যন্ত আমাদের তৈরি করতে দেয় যে কৌতুক 894 00:41:18,030 --> 00:41:21,370 ঠিক এই মত কিছু. 895 00:41:21,370 --> 00:41:25,010 >> আমরা এখন অনুমান যদি আমরা করতে পারেন, তাই সি এই জিনিস বাস্তবায়ন, 896 00:41:25,010 --> 00:41:28,040 কিভাবে আসলে আমরা কি এই ঘোরা শুরু? 897 00:41:28,040 --> 00:41:32,360 ওয়েল, আসলে, আমরা যা করতে হবে সব হয় ডান এবং মাত্র বাম থেকে বারবার 898 00:41:32,360 --> 00:41:35,960 ধরনের নোড সন্নিবেশ বা নোড মুছে অথবা আমরা চাই যেখানে জিনিষ জন্য অনুসন্ধান, 899 00:41:35,960 --> 00:41:39,560 কিন্তু এই কাজ করতে, আমি কি এগিয়ে যান এবং করতে দিন জিনিষ একটু বেশি বাস্তব এই কারণ 900 00:41:39,560 --> 00:41:42,560 এখন পর্যন্ত সুপার নিম্নস্তরের হয়েছে. 901 00:41:42,560 --> 00:41:45,700 কেউ আক্ষরিক প্রথম হতে চান? 902 00:41:45,700 --> 00:41:46,200 ঠিক আছে. 903 00:41:46,200 --> 00:41:47,092 চলো. 904 00:41:47,092 --> 00:41:47,800 তোমার নাম কি? 905 00:41:47,800 --> 00:41:48,499 >> ডেভিড: ডেভিড. 906 00:41:48,499 --> 00:41:49,290 DAVID Malan: ডেভিড. 907 00:41:49,290 --> 00:41:49,998 দেখা হওয়ায় খুশী হলাম. 908 00:41:49,998 --> 00:41:50,960 আমিও. 909 00:41:50,960 --> 00:41:52,450 ঠিক আছে. 910 00:41:52,450 --> 00:41:53,990 আর আমরা একটি সংখ্যা 9 প্রয়োজন. 911 00:41:53,990 --> 00:41:55,240 হিসাবে ভাল না প্রথম হিসাবে, সম্ভবত. 912 00:41:55,240 --> 00:41:56,430 ঠিক আছে, সংখ্যা 9. 913 00:41:56,430 --> 00:41:59,667 একটি সংখ্যা 17, দয়া করে. 914 00:41:59,667 --> 00:42:01,000 আমাকে একটু অধিকতর ফিরে যাওয়া যাক. 915 00:42:01,000 --> 00:42:03,980 সংখ্যা 22, অনুগ্রহ করে, এবং কিভাবে অধিকতর সম্পর্কে 916 00:42:03,980 --> 00:42:06,344 আমি কোনো হাত দেখতে পারেন যদি সব আলো বা কোনো সাথে. 917 00:42:06,344 --> 00:42:08,010 কেউ ঠিক আছে স্বেচ্ছাপূর্বক হচ্ছে. 918 00:42:08,010 --> 00:42:08,968 আপনি চিন্তা করতে চান না? 919 00:42:08,968 --> 00:42:10,450 আপনার হস্ত জোরপূর্বক আপ যাচ্ছে. 920 00:42:10,450 --> 00:42:12,340 17 ঠিক আছে. 921 00:42:12,340 --> 00:42:13,690 22. 922 00:42:13,690 --> 00:42:15,120 26 নিচে আসছে. 923 00:42:15,120 --> 00:42:18,450 অন্য কেউ চাই forcefully-- উপর আসা. 924 00:42:18,450 --> 00:42:21,030 একটি প্রকৃত স্বেচ্ছাসেবক. 925 00:42:21,030 --> 00:42:23,330 >> তাই খুব দ্রুত, তাহলে আপনাকে বলছি ব্যবস্থা করতে পারে 926 00:42:23,330 --> 00:42:26,550 নিজেদের ঠিক মত পর্দায় নোড. 927 00:42:26,550 --> 00:42:27,510 তোমাকে ধন্যবাদ. 928 00:42:27,510 --> 00:42:29,234 আর আপনি 26 হবেন. 929 00:42:29,234 --> 00:42:30,650 ঠিক আছে এবং দ্রুত প্রচলন. 930 00:42:30,650 --> 00:42:32,139 তাই আমি ডেভিড আছি এবং আপনার কাছে আছে? 931 00:42:32,139 --> 00:42:32,680 ডেভিড: ডেভিড. 932 00:42:32,680 --> 00:42:33,721 DAVID Malan: আর তুমি? 933 00:42:33,721 --> 00:42:34,229 জেক: জেক. 934 00:42:34,229 --> 00:42:34,729 Sue: আদালতে অভিযুক্ত করা. 935 00:42:34,729 --> 00:42:35,229 ALEX: অ্যালেক্স. 936 00:42:35,229 --> 00:42:36,475 রাফায়েল: রাফায়েল. 937 00:42:36,475 --> 00:42:37,100 টেলর টেলর. 938 00:42:37,100 --> 00:42:37,466 DAVID Malan: টেলর. 939 00:42:37,466 --> 00:42:37,590 চমৎকার. 940 00:42:37,590 --> 00:42:39,810 সুতরাং এই আমাদের স্বেচ্ছাসেবকদের হয় জন্য আজ এবং এগিয়ে যান 941 00:42:39,810 --> 00:42:43,090 এবং, যে ভাবে একটু নামান এবং শুধু এগিয়ে যান এবং রাখা 942 00:42:43,090 --> 00:42:47,024 আপনি বা আপনার যেমন আপনার জোত নম্বর প্রথম লক্ষণ এবং আপনার বাম হাত ব্যবহার করে, 943 00:42:47,024 --> 00:42:48,940 এগিয়ে যান এবং শুধু বাস্তবায়ন তিরগুলো, শুধু 944 00:42:48,940 --> 00:42:51,360 আপনার বাম হাত আক্ষরিক অর্থ হল, যাতে আপনি নির্দেশ করা উচিত যাই হোক না কেন এ ইশারা 945 00:42:51,360 --> 00:42:54,610 , এবং নিজেকে যাতে কিছু রুম দিতে আমরা দৃশ্যত আসলে আপনার অস্ত্র দেখতে পারেন 946 00:42:54,610 --> 00:42:58,120 প্রতি নির্দেশ, এবং আপনি শুধু নির্দেশ করতে পারেন সাজান ছুতোয় এ জরিমানা. 947 00:42:58,120 --> 00:43:03,040 >> তাই আমরা এখানে, এক একটি লিঙ্ক তালিকা আছে দুই, তিন, চার, পাঁচ নোড প্রাথমিকভাবে, 948 00:43:03,040 --> 00:43:05,860 এবং আমরা এই বিশেষ আছে বিজ্ঞপ্তি কে শুরুতে পয়েন্টার 949 00:43:05,860 --> 00:43:09,770 কী আমরা ট্র্যাক রাখা আছে, কারণ পুরো দৈর্ঘ্যের তালিকার একরকম. 950 00:43:09,770 --> 00:43:13,590 তারা বাকি করছি যদিও এই ছেলেরা ডানে, ফিরে মেমরি ব্যাক, 951 00:43:13,590 --> 00:43:15,950 তারা আসলে কোন জায়গায় হতে পারে কম্পিউটার এর মেমরি. 952 00:43:15,950 --> 00:43:18,240 তাই এইসব বলছি হতে পারে মঞ্চে কোথাও স্থায়ী 953 00:43:18,240 --> 00:43:20,960 এবং যে পর্যন্ত না তারা করছি, সূক্ষ্ম আসলে একে অপরের দিকে নির্দেশ 954 00:43:20,960 --> 00:43:22,770 কিন্তু জিনিষ রাখতে পরিষ্কার এবং সহজ, আমরা করব 955 00:43:22,770 --> 00:43:25,728 শুধু তাদের আঁকা মত ডান থেকে বাম এই, কিন্তু ব্যাপক ফাঁক আছে হতে পারে 956 00:43:25,728 --> 00:43:26,790 ঐ নোডের মধ্যে এ. 957 00:43:26,790 --> 00:43:30,710 >> এখন, আমি আসলে কিছু সন্নিবেশ করতে চান তাহলে নতুন মূল্য, আসুন এগিয়ে যান এবং এই কাজ করা যাক. 958 00:43:30,710 --> 00:43:33,720 আমরা এখন একটি সুযোগ আছে অন্য নোড নিন. 959 00:43:33,720 --> 00:43:39,820 এর 55 mallocing সাথে চলতে শুরু করা যাক বলুন. 960 00:43:39,820 --> 00:43:41,320 কেউ যদি malloc হচ্ছে কিছু মনে করবে? 961 00:43:41,320 --> 00:43:42,280 ঠিক আছে, চলো. 962 00:43:42,280 --> 00:43:42,992 তোমার নাম কি? 963 00:43:42,992 --> 00:43:43,700 রেনবো: রেনবো. 964 00:43:43,700 --> 00:43:44,050 DAVID Malan: রেনবো? 965 00:43:44,050 --> 00:43:44,810 ঠিক আছে. 966 00:43:44,810 --> 00:43:46,600 Malloc রেনবো. 967 00:43:46,600 --> 00:43:47,450 চলো. 968 00:43:47,450 --> 00:43:51,610 তাই এখন আমরা নিজেদেরকে জিজ্ঞাসা আছে algorithmically, আমরা 55 লাগাতে পারেন যেখানে. 969 00:43:51,610 --> 00:43:53,610 তাই আমাদের সব জানি, একথাও ঠিক যে, যেখানে তিনি সম্ভবত 970 00:43:53,610 --> 00:43:55,401 আমরা চেষ্টা করছি জন্যে এই সাজানো রাখা 971 00:43:55,401 --> 00:43:58,299 এবং আপনাকে বলছি এক গ্রহণ করতে পারে যদি একধাপ পিছনে তাই আমরা খসা না 972 00:43:58,299 --> 00:43:59,590 পর্যায়, যে মহান হতে হবে. 973 00:43:59,590 --> 00:44:01,420 তাই আসলে, রেনবো, আমার সাথে এখানে ওভার শুরু, 974 00:44:01,420 --> 00:44:04,200 কারণ আমরা এখন যা করতে পারেন হিসাবে কম্পিউটার শুধুমাত্র একটি সময়ে এক পরিবর্তনশীল দেখতে. 975 00:44:04,200 --> 00:44:05,190 এই প্রথম নোডের হয় তাহলে তাই. 976 00:44:05,190 --> 00:44:07,160 তিনি একটি নোড না লক্ষ্য করুন তিনি শুধু একটি পয়েন্টার 977 00:44:07,160 --> 00:44:10,270 তিনি হতে টানা যে কেন একটি পয়েন্টার শুধুমাত্র আকার, না 978 00:44:10,270 --> 00:44:11,780 যারা পুরো আয়তক্ষেত্র এক. 979 00:44:11,780 --> 00:44:16,650 সুতরাং আমরা প্রতিটি পরীক্ষা করতে যাচ্ছেন পুনরাবৃত্তির 9 চেয়ে 55 কম? 980 00:44:16,650 --> 00:44:17,150 না. 981 00:44:17,150 --> 00:44:19,060 17 তুলনায় 55 কম? 982 00:44:19,060 --> 00:44:19,720 না. 983 00:44:19,720 --> 00:44:20,800 22 এর চেয়ে কম? 984 00:44:20,800 --> 00:44:22,020 26 এর চেয়ে কম? 985 00:44:22,020 --> 00:44:23,390 34 এর চেয়ে কম? 986 00:44:23,390 --> 00:44:25,890 আর তাই এখন স্পষ্টত রেনবো শেষে জন্যে. 987 00:44:25,890 --> 00:44:27,270 সুতরাং স্পষ্ট হতে পারে, এবং তা করতে আপনার নাম, টেলর ছিলেন? 988 00:44:27,270 --> 00:44:27,895 >> টেলর টেলর. 989 00:44:27,895 --> 00:44:32,510 DAVID Malan: টেলর এর মধ্যে সেরকম বাম হাত এবং এখানে রামধনু এর হাত, 990 00:44:32,510 --> 00:44:38,324 যার হাতে কি এ নির্দেশ প্রয়োজন এই তালিকার মধ্যে 55 সন্নিবেশ করাতে? 991 00:44:38,324 --> 00:44:39,240 আমাদেরকে কি করতে হবে? 992 00:44:39,240 --> 00:44:39,700 হ্যা? 993 00:44:39,700 --> 00:44:41,140 >> শ্রোতা: টেলর এর হাত বাম নির্দেশ প্রয়োজন. 994 00:44:41,140 --> 00:44:41,680 >> DAVID Malan: ঠিক. 995 00:44:41,680 --> 00:44:43,800 সুতরাং একটি নোডের মধ্যে ঢোকাতে তালিকার শেষে মধ্যে 996 00:44:43,800 --> 00:44:47,140 বেশ সহজ, কারণ টেলর শুধু মাঠে পরিবর্তে, নির্দেশ আছে 997 00:44:47,140 --> 00:44:49,640 অথবা আমরা, নাল ডাকবো নাল অনুপস্থিতিতে সাজানোর 998 00:44:49,640 --> 00:44:51,640 একটি পয়েন্টার বা বিশেষ শূন্য পয়েন্টার, আপনি আছেন 999 00:44:51,640 --> 00:44:53,740 আপনার বাম সাথে নির্দেশ করে যাচ্ছে হাত রেনবো এবং তারপর রেনবো এ, 1000 00:44:53,740 --> 00:44:55,910 যেখানে আপনার বাম উচিত হাত সম্ভবত নির্দেশ? 1001 00:44:55,910 --> 00:44:56,570 নিচে. 1002 00:44:56,570 --> 00:45:00,140 তার হাত সাজান যদি এটা ভালো নয় এখানে অথবা সাজান কোন বন্ধ ইশারা 1003 00:45:00,140 --> 00:45:00,640 কোন দিকে. 1004 00:45:00,640 --> 00:45:02,407 যে বিবেচিত হবে একটি আবর্জনা মান, 1005 00:45:02,407 --> 00:45:04,240 কিন্তু সে স্থানটিকে কিছু পরিচিত মান, আমরা করব 1006 00:45:04,240 --> 00:45:07,360 শূন্য বা নাল কল, এটা ঠিক আছে আমরা এই একটি শব্দ আছে, কারণ 1007 00:45:07,360 --> 00:45:09,390 এবং আমরা এটা তালিকায় এখন সম্পূর্ণ জানি. 1008 00:45:09,390 --> 00:45:11,550 >> তাই কি অন্য এর অপেক্ষাকৃত সহজ ক্ষেত্রে? 1009 00:45:11,550 --> 00:45:13,125 আমরা 5 malloc পারে? 1010 00:45:13,125 --> 00:45:14,010 চলো. 1011 00:45:14,010 --> 00:45:14,782 তোমার নাম কি? 1012 00:45:14,782 --> 00:45:15,490 Tiffany: কাম. 1013 00:45:15,490 --> 00:45:16,000 DAVID Malan: আমি দুঃখিত? 1014 00:45:16,000 --> 00:45:16,470 Tiffany: কাম. 1015 00:45:16,470 --> 00:45:16,880 DAVID Malan: কাম. 1016 00:45:16,880 --> 00:45:17,110 ঠিক আছে. 1017 00:45:17,110 --> 00:45:19,071 Tiffany malloced হয়েছে মূল্য 5. 1018 00:45:19,071 --> 00:45:19,570 চলো. 1019 00:45:19,570 --> 00:45:23,820 এই এক, অত্যন্ত তুলনামূলকভাবে সহজ কিন্তু এর এখন অপারেশন আদেশ বিবেচনা করা যাক. 1020 00:45:23,820 --> 00:45:25,820 এটা বেশ সহজ ছিল শেষে টেলর. 1021 00:45:25,820 --> 00:45:30,302 সংখ্যা 5, অবশ্যই কম 9 হয় এবং তাই আমরা কাম আছে, ডেভিড আছে 1022 00:45:30,302 --> 00:45:31,260 এবং আপনার নাম কি ছিল? 1023 00:45:31,260 --> 00:45:31,680 >> জেক: জেক. 1024 00:45:31,680 --> 00:45:32,470 >> DAVID Malan: জেক. 1025 00:45:32,470 --> 00:45:34,300 Tiffany, জেক, এবং ডেভিড. 1026 00:45:34,300 --> 00:45:36,580 যাঁর হাতে প্রথম আপডেট করা উচিত? 1027 00:45:36,580 --> 00:45:39,260 1028 00:45:39,260 --> 00:45:40,590 আপনি কি এখানে কাজ করতে চান না? 1029 00:45:40,590 --> 00:45:45,244 দুয়েক সম্ভাব্য উপায় আছে, কিন্তু একটি অথবা আরও বেশি ভুল পথে পা বাড়ানো রয়েছে. 1030 00:45:45,244 --> 00:45:46,620 >> শ্রোতা: একেবারে বামের দিয়ে শুরু করুন. 1031 00:45:46,620 --> 00:45:47,800 >> DAVID Malan: একেবারে বামের দিয়ে শুরু করুন. 1032 00:45:47,800 --> 00:45:49,008 অতঃপর এখানে একেবারে বামের কী? 1033 00:45:49,008 --> 00:45:49,700 শ্রোতা: প্রথম. 1034 00:45:49,700 --> 00:45:50,366 >> ডেভিড MALAN: ঠিক আছে. 1035 00:45:50,366 --> 00:45:53,781 সুতরাং প্রথম দিয়ে শুরু এবং আপনি যেখানে কাজ ডেভিড এর হাত হতে আপডেট করতে চান? 1036 00:45:53,781 --> 00:45:54,780 শ্রোতা: 5 দিকে. 1037 00:45:54,780 --> 00:45:55,446 ডেভিড MALAN: ঠিক আছে. 1038 00:45:55,446 --> 00:45:59,026 এ পাঁচটি তাই দায়ূদ পয়েন্ট অথবা Tiffany এখানে, এবং এখন? 1039 00:45:59,026 --> 00:46:01,072 >> শ্রোতা: Tiffany 9 স্থানটিকে? 1040 00:46:01,072 --> 00:46:04,030 DAVID Malan: পারফেক্ট, Binky এর ছাড়া মাথা ঠিক ধরনের অধিকার, খসে পড়ল? 1041 00:46:04,030 --> 00:46:06,820 সাথে কি ভুল কারণ আক্ষরিক এই ছবি? 1042 00:46:06,820 --> 00:46:08,070 শ্রোতা: কিছুই প্রতি নির্দেশ করা হয়. 1043 00:46:08,070 --> 00:46:09,945 DAVID Malan: কিছুই হয় এখন জেক প্রতি নির্দেশ. 1044 00:46:09,945 --> 00:46:13,360 আমরা আক্ষরিক 9 এতিম করেছি এবং 17, এবং আমরা আক্ষরিক করেছি 1045 00:46:13,360 --> 00:46:18,450 , এই মেমরি সব ফাঁস করে কারণ প্রথম দায়ূদের হাতে আপডেট, যে 1046 00:46:18,450 --> 00:46:21,660 এটি সঠিকভাবে হিসাবে যতটা সূক্ষ্ম এখন Tiffany এ ইশারা, 1047 00:46:21,660 --> 00:46:25,410 কিন্তু কেউ ছিল জেক এ নির্দেশ দূরদর্শিতা, 1048 00:46:25,410 --> 00:46:27,490 তারপর আমরা হারিয়ে ফেলেছি যে তালিকায় সম্পূর্ণতা. 1049 00:46:27,490 --> 00:46:28,200 সুতরাং আসুন পূর্বাবস্থা করা যাক. 1050 00:46:28,200 --> 00:46:30,950 সুতরাং যে একটা ভাল জিনিস ছিল ট্রিপ কিন্তু এর এখন সঠিক দিন. 1051 00:46:30,950 --> 00:46:33,624 আমরা কি প্রথম পরিবর্তে কি করা উচিত? 1052 00:46:33,624 --> 00:46:34,124 হ্যা? 1053 00:46:34,124 --> 00:46:35,791 >> শ্রোতা: Tiffany 9 এ নির্দেশ করা উচিত? 1054 00:46:35,791 --> 00:46:37,582 DAVID Malan: আমি পারবো না আপনি যে বন্ধ পেতে. 1055 00:46:37,582 --> 00:46:38,720 9 এ কে নির্দেশ করা উচিত? 1056 00:46:38,720 --> 00:46:39,220 >> শ্রোতা: কাম. 1057 00:46:39,220 --> 00:46:39,390 >> DAVID Malan: ঠিক আছে. 1058 00:46:39,390 --> 00:46:41,200 তাই Tiffany 9 প্রথমে নির্দেশ করা উচিত. 1059 00:46:41,200 --> 00:46:43,550 তাই কাম নিতে হবে একটি অভিন্ন মান 1060 00:46:43,550 --> 00:46:45,820 দায়ূদকে, যা মনে হয় একটি মুহূর্ত জন্য অপ্রয়োজনীয়, 1061 00:46:45,820 --> 00:46:48,820 কিন্তু যে দ্বিতীয়, কারণ এখন সূক্ষ্ম ধাপে আমরা দাউদের হাত আপডেট করতে পারেন 1062 00:46:48,820 --> 00:46:52,680 Tiffany এ, এবং তারপর যদি নির্দেশ আমরা শুধু এই ধরনের জিনিস পরিষ্কার আপ 1063 00:46:52,680 --> 00:46:55,740 এই বসন্ত মত ধরনের হিসাবে যদিও, এখন যে একটি সঠিক সন্নিবেশ আছে. 1064 00:46:55,740 --> 00:46:56,700 এত চমৎকার. 1065 00:46:56,700 --> 00:46:57,970 তাই এখন আমরা প্রায় হয়ে এসেছে. 1066 00:46:57,970 --> 00:47:01,075 এর এক চূড়ান্ত সন্নিবেশ করা যাক মূল্য 20 মত মান. 1067 00:47:01,075 --> 00:47:03,010 আমরা এক চূড়ান্ত স্বেচ্ছাসেবক malloc পারে তাহলে? 1068 00:47:03,010 --> 00:47:04,140 চলো. 1069 00:47:04,140 --> 00:47:06,224 তাই এই এক একটি সামান্য আরো চতুর. 1070 00:47:06,224 --> 00:47:08,390 কিন্তু সত্যিই, আমরা কোড আছেন লেখা, মৌখিকভাবে যদ্যপি 1071 00:47:08,390 --> 00:47:10,610 শুধু একটি গুচ্ছ থাকার মত হয় এখন অবস্থা, ডান যদি? 1072 00:47:10,610 --> 00:47:12,318 আমরা একটি শর্ত ছিল এটি জন্যে যদি চেক 1073 00:47:12,318 --> 00:47:13,840 শেষ, হয়তো শুরুতে. 1074 00:47:13,840 --> 00:47:15,940 আমরা লুপ কিছু প্রয়োজন মাঝখানে স্পট খুঁজে. 1075 00:47:15,940 --> 00:47:17,400 সুতরাং আসুন আপনার নাম কি দিয়ে যে কি? 1076 00:47:17,400 --> 00:47:17,700 >> ERIC: এরিক. 1077 00:47:17,700 --> 00:47:18,340 >> DAVID Malan: এরিক? 1078 00:47:18,340 --> 00:47:18,660 এরিক. 1079 00:47:18,660 --> 00:47:19,368 দেখা হওয়ায় খুশী হলাম. 1080 00:47:19,368 --> 00:47:20,490 তাই আমরা 20 আছে. 1081 00:47:20,490 --> 00:47:21,220 পাঁচটি কম? 1082 00:47:21,220 --> 00:47:21,530 না. 1083 00:47:21,530 --> 00:47:22,160 নয়টি কম? 1084 00:47:22,160 --> 00:47:22,410 না. 1085 00:47:22,410 --> 00:47:23,050 17 এর চেয়ে কম? 1086 00:47:23,050 --> 00:47:23,550 না. 1087 00:47:23,550 --> 00:47:23,740 ঠিক আছে. 1088 00:47:23,740 --> 00:47:25,701 তিনি এখানে জন্যে এবং আপনার নাম আবার হয়? 1089 00:47:25,701 --> 00:47:26,200 Sue: আদালতে অভিযুক্ত করা. 1090 00:47:26,200 --> 00:47:26,880 DAVID Malan: আদালতে অভিযুক্ত করা. 1091 00:47:26,880 --> 00:47:27,379 ALEX: অ্যালেক্স. 1092 00:47:27,379 --> 00:47:28,790 DAVID Malan: আবেদন, আলেক্স, এবং? 1093 00:47:28,790 --> 00:47:29,290 ERIC: এরিক. 1094 00:47:29,290 --> 00:47:30,120 DAVID Malan: এরিক. 1095 00:47:30,120 --> 00:47:32,140 তিনি, যাঁর হাতে প্রথম আপডেট পেতে চান? 1096 00:47:32,140 --> 00:47:32,930 >> শ্রোতা: এরিক. 1097 00:47:32,930 --> 00:47:33,429 ঠিক আছে. 1098 00:47:33,429 --> 00:47:35,200 সুতরাং এরিকের যেখানে এ নির্দেশ করা উচিত? 1099 00:47:35,200 --> 00:47:35,930 22 এ. 1100 00:47:35,930 --> 00:47:36,430 ভাল. 1101 00:47:36,430 --> 00:47:38,180 আর এখন কি করব? 1102 00:47:38,180 --> 00:47:40,800 আদালতে অভিযুক্ত তারপর এরিক এ নির্দেশ করতে পারেন এবং এখন, যদি আপনি না ঠিক 1103 00:47:40,800 --> 00:47:44,077 যা সূক্ষ্ম কিছু রুম, করতে দৃশ্যত, এখন আমরা সন্নিবেশ করেছেন. 1104 00:47:44,077 --> 00:47:47,160 তাই আসুন এখন একটি প্রশ্ন বিবেচনা করা যাক কিন্তু আমাদের স্বেচ্ছাসেবকদের জন্য আপনাকে অনেক ধন্যবাদ. 1105 00:47:47,160 --> 00:47:48,090 অনেক ভালো করেছ. 1106 00:47:48,090 --> 00:47:50,831 যদি আপনি চান আপনি, যারা রাখতে পারেন. 1107 00:47:50,831 --> 00:47:54,140 আর আমরা একটি সুদৃশ্য উপহারের অংশ যদি আছে আপনি প্রতিটি একটি চাপ বল নিতে চাই. 1108 00:47:54,140 --> 00:47:56,030 আমাকে শুধু এই ডাউন পাস করা যাক. 1109 00:47:56,030 --> 00:47:58,430 তাই এই নিয়ে Takeaway কি? 1110 00:47:58,430 --> 00:48:02,430 এই আশ্চর্যজনক মনে করা হয় আমরা এখন আছে সাপেক্ষে 1111 00:48:02,430 --> 00:48:06,360 একটি একটি বিকল্প চালু তাই সীমাবদ্ধ নয় যে অ্যারে 1112 00:48:06,360 --> 00:48:07,780 কিছু নির্দিষ্ট আকার একটি অ্যারের. 1113 00:48:07,780 --> 00:48:09,380 তারা পরিবর্তনশীল অবধি প্রসারণ করা সম্ভব. 1114 00:48:09,380 --> 00:48:13,220 >> কিন্তু আমরা অনেক ভালো সপ্তাহের মধ্যে দেখা করেছি অতীতে, আমরা বিনামূল্যে জন্য কিছু পাবেন না 1115 00:48:13,220 --> 00:48:15,740 ভালো নিশ্চয় এখানে একটি ট্রেড বন্ধ আছে. 1116 00:48:15,740 --> 00:48:18,890 একটি লিঙ্ক একটি গোলমালে সঙ্গে তাই তালিকায়, এই গতিশীলতা হয়? 1117 00:48:18,890 --> 00:48:21,590 এই ক্ষমতা, অকপটে এবং হত্তয়া যাও আমরা মুছে ফেলতে কাজ করতে পারে 1118 00:48:21,590 --> 00:48:23,570 হিসাবে প্রয়োজন এবং আমরা সঙ্কুচিত পারে. 1119 00:48:23,570 --> 00:48:24,710 আমরা কি মূল্য পরিশোধ করা হয়? 1120 00:48:24,710 --> 00:48:28,510 1121 00:48:28,510 --> 00:48:30,340 সব দুইবার প্রথম অনেক স্থান হিসাবে. 1122 00:48:30,340 --> 00:48:34,010 আপনি ছবি তাকান, আর আমি পূর্ণসংখ্যার একটি তালিকা সংরক্ষণ. 1123 00:48:34,010 --> 00:48:36,740 আমি একটি তালিকা সংরক্ষণ করছি পূর্ণসংখ্যার প্লাস পয়েন্টার. 1124 00:48:36,740 --> 00:48:38,240 তাই আমি স্থানের পরিমাণ দ্বিত্ব করছি. 1125 00:48:38,240 --> 00:48:40,740 এখন, হয়তো যে যেমন নয় একটি বড় চুক্তি 4 বাইট, 8 বাইট, 1126 00:48:40,740 --> 00:48:43,160 কিন্তু এটা অবশ্যই যোগ করতে পারে বৃহৎ তথ্য সেটের জন্য আপ. 1127 00:48:43,160 --> 00:48:45,570 অন্য একটি downside কি? 1128 00:48:45,570 --> 00:48:46,070 হ্যা? 1129 00:48:46,070 --> 00:48:48,010 >> শ্রোতা: আমরা আছে তাদের এক দ্বারা এক, তর্ক. 1130 00:48:48,010 --> 00:48:48,760 ডেভিড MALAN: হ্যাঁ. 1131 00:48:48,760 --> 00:48:50,260 আমরা তাদের এক দ্বারা এক, তর্ক আছে. 1132 00:48:50,260 --> 00:48:53,860 আপনি এই সুপার আপ দিয়েছেন কি, জানি বর্গাকার বন্ধনী সুবিধাজনক বৈশিষ্ট্য 1133 00:48:53,860 --> 00:48:57,240 স্বরলিপি, আরো সঠিকভাবে রেণ্ডম এক্সেস হিসাবে পরিচিত, 1134 00:48:57,240 --> 00:48:59,280 আমরা শুধু তিড়িং লাফ পারেন যেখানে একজন ব্যক্তি উপাদানে 1135 00:48:59,280 --> 00:49:01,470 কিন্তু এখন আমি এখনও ছিল এখানে আমার স্বেচ্ছাসেবীদের 1136 00:49:01,470 --> 00:49:04,660 আমি খুঁজে পেতে চেয়েছিলেন সংখ্যা 22, আমি ঠিক করতে পারেন না 1137 00:49:04,660 --> 00:49:06,620 বন্ধনী কিছু কিছু ঝাঁপ. 1138 00:49:06,620 --> 00:49:10,530 আমি অনেক, তালিকা ধরে পর্যবেক্ষণ আছে সুসংগত আমাদের অনুসন্ধানের উদাহরণ মত, 1139 00:49:10,530 --> 00:49:12,260 সংখ্যা 22 এটি. 1140 00:49:12,260 --> 00:49:14,340 তাই আমরা সেখানে একটি দাম দেওয়া হয়েছে বলে মনে হচ্ছে. 1141 00:49:14,340 --> 00:49:16,430 কিন্তু আমরা তবু পারেন অন্যান্য সমস্যার সমাধান. 1142 00:49:16,430 --> 00:49:18,587 >> আসলে, আমার পরিচয় করিয়ে দেওয়া ভিজ্যুয়াল মাত্র কয়েক. 1143 00:49:18,587 --> 00:49:20,920 আপনি নিচে আপনি করে থাকেন তাহলে তাই মাথের এর ডাইনিং হলের সম্প্রতি, 1144 00:49:20,920 --> 00:49:23,320 আপনি যে প্রত্যাহার করব তাদের এই মত ট্রে এর stacks, 1145 00:49:23,320 --> 00:49:26,300 আমরা আপনার কাছ থেকে এই ধার বর্গ আগে Annenberg এ. 1146 00:49:26,300 --> 00:49:28,930 সুতরাং ট্রে এই স্ট্যাকের, যদিও, প্রতিনিধি আসলে 1147 00:49:28,930 --> 00:49:30,860 একটি কম্পিউটার বিজ্ঞান তথ্য কাঠামো. 1148 00:49:30,860 --> 00:49:32,910 একটি ডাটা স্ট্রাকচার নেই কম্পিউটার বিজ্ঞান মধ্যে 1149 00:49:32,910 --> 00:49:38,010 একটি স্ট্যাক হিসাবে পরিচিত যা খুব সুন্দরভাবে ঠিক এই চাক্ষুষ নিজেকে ধার দেয়. 1150 00:49:38,010 --> 00:49:41,380 এই ট্রে প্রতিটি একটি নয় যদি তাই ট্রে কিন্তু একটি সংখ্যা মত এবং আমি চেয়েছি 1151 00:49:41,380 --> 00:49:45,010 নম্বর সংরক্ষণ করতে, আমি এখানে এক দমন করা যেতে পারে, 1152 00:49:45,010 --> 00:49:48,320 এবং আমি এখানে অন্য দমন করা যেতে পারে এবং সংখ্যার stacking অবিরত 1153 00:49:48,320 --> 00:49:53,180 এক অন্য, এবং কি উপরে এই সম্পর্কে সম্ভাব্য সহায়ক 1154 00:49:53,180 --> 00:49:55,450 কি সংশ্লেষ যে হয় এই তথ্য কাঠামো? 1155 00:49:55,450 --> 00:49:58,045 আমি উঠিয়ে ফেলা যাবে, যা সংখ্যা প্রথম সবচেয়ে সুবিধামত? 1156 00:49:58,045 --> 00:50:00,640 1157 00:50:00,640 --> 00:50:03,030 সেখানে অতি সম্প্রতি এক করা. 1158 00:50:03,030 --> 00:50:06,430 >> তাই এই আমরা কল করবে কি কম্পিউটার বিজ্ঞান একটি LIFO ডাটা স্ট্রাকচার. 1159 00:50:06,430 --> 00:50:08,070 , প্রথম আউট গত. 1160 00:50:08,070 --> 00:50:10,800 আর আমরা দীর্ঘ কেন আগে দেখতে পাবেন যে, এখন দরকারী কিন্তু হতে পারে 1161 00:50:10,800 --> 00:50:12,200 শুধু সম্পত্তি বিবেচনা. 1162 00:50:12,200 --> 00:50:15,158 আপনি যদি মনে করেন এবং এটা কোন ধরনের বোকামি ডাইনিং হল এটা কিভাবে সম্পর্কে. 1163 00:50:15,158 --> 00:50:17,910 প্রতিটি সময় তারা পরিষ্কার ট্রে এবং উপরে নবীনতম বেশী করা, 1164 00:50:17,910 --> 00:50:22,160 আপনি পূর্বে পরিষ্কার হতে পারে কিন্তু শেষ পর্যন্ত খুব ময়লা এবং ধূলিমলিন 1165 00:50:22,160 --> 00:50:24,360 খুব নীচে ট্রে আপনি যদি না আসলে 1166 00:50:24,360 --> 00:50:26,820 যে নীচে পেতে স্ট্যাক, আপনাকে কারণ শুধু 1167 00:50:26,820 --> 00:50:29,380 নতুন বসিয়ে রাখা এবং এটি উপরে পরিষ্কার বেশী. 1168 00:50:29,380 --> 00:50:31,840 একই জিনিস ঘটতে পারে একটি সুপারমার্কেট মধ্যে খুব. 1169 00:50:31,840 --> 00:50:35,450 আপনি একটি প্রদর্শনের ক্ষেত্রে থাকে দুধ এবং প্রত্যেক সময় জীবনবৃত্তান্ত এর 1170 00:50:35,450 --> 00:50:37,610 অথবা অধিক দুধ কেবা পায়, আপনি শুধু milks ঠেলা 1171 00:50:37,610 --> 00:50:39,880 আপনি ইতিমধ্যে ফিরে আছে এবং আপনি, সামনে নতুন করা 1172 00:50:39,880 --> 00:50:43,088 আপনি কিছু প্রশংসনীয় কদর্য আছে চলুন ডাটা স্ট্রাকচার শেষে দুধ, 1173 00:50:43,088 --> 00:50:46,390 এটা নীচে সবসময় কারণ বা equivalently এটা পিছে সর্বদাই. 1174 00:50:46,390 --> 00:50:50,407 >> কিন্তু আমার মনে হয় অন্য উপায় আছে তথ্য ও উদাহরণস্বরূপ, এই আবরণের আপ. 1175 00:50:50,407 --> 00:50:53,490 আপনি যাদের মধ্যে একজন হন তাহলে যারা লেগেছে অ্যাপল স্টোর বাইরে রেখায় আপ 1176 00:50:53,490 --> 00:50:55,610 যখন একটি নতুন পণ্য আসে আউট, আপনি সম্ভবত করছি 1177 00:50:55,610 --> 00:50:58,780 একটি স্ট্যাক তথ্য ব্যবহার করে না কাঠামো আপনাকে কারণ 1178 00:50:58,780 --> 00:51:03,070 বাকিদের কে স্বভাববহিভুত হবে আবরণের আপ কিছু নতুন খেলনা ক্রয়. 1179 00:51:03,070 --> 00:51:06,610 বরং, আপনি সম্ভবত ব্যবহার করছি ডাটা স্ট্রাকচার কি ধরনের 1180 00:51:06,610 --> 00:51:10,050 সিস্টেমের বা কি ধরনের প্রকৃত বিশ্বে? 1181 00:51:10,050 --> 00:51:13,493 আশা রাখি, এটা একটা লাইন, বা আরো সঠিকভাবে বা আরো ব্রিটিশ-মত, একটি কিউ. 1182 00:51:13,493 --> 00:51:17,700 আর এটি একটি কিউ একটি সক্রিয় আউট কম্পিউটার বিজ্ঞান মধ্যে ডাটা স্ট্রাকচার, 1183 00:51:17,700 --> 00:51:19,700 কিন্তু একটি সারিতে একটি খুব আছে বিভিন্ন সম্পত্তি. 1184 00:51:19,700 --> 00:51:20,820 এটা LIFO না. 1185 00:51:20,820 --> 00:51:21,990 , প্রথম আউট গত. 1186 00:51:21,990 --> 00:51:22,800 ঈশ্বরের নিষেধ. 1187 00:51:22,800 --> 00:51:24,280 এটা পরিবর্তে FIFO এর. 1188 00:51:24,280 --> 00:51:26,110 প্রথমে ঢুকবে প্রথমে বেরুবে. 1189 00:51:26,110 --> 00:51:27,970 এবং যে একটা ভাল জিনিস সততা 'অনুরোধে জন্য 1190 00:51:27,970 --> 00:51:30,428 অবশ্যই যখন আপনি আবরণের করছি সকালে ঘুম থেকে সুপার তাড়াতাড়ি. 1191 00:51:30,428 --> 00:51:33,400 আপনি প্রথম সেখানে পেতে যদি প্রথম আউট হিসাবে ভাল পেতে চান. 1192 00:51:33,400 --> 00:51:35,880 >> আর তাই এই তথ্য সব কাঠামো, queues এবং stacks 1193 00:51:35,880 --> 00:51:39,220 এবং অন্যদের মধ্যে bunches, আপনি দেখা যাচ্ছে এই হিসাবে শুধু একটি অ্যারের মনে করতে পারেন. 1194 00:51:39,220 --> 00:51:41,820 এই হয়তো, একটি অ্যারে একটি নির্দিষ্ট মাপ 4, কিন্তু এটা চাই 1195 00:51:41,820 --> 00:51:44,990 আমরা শুধু পাইল পারে তাহলে ধরনের সুন্দর হতে ট্রে প্রায় অসীম লম্বা আমরা যদি 1196 00:51:44,990 --> 00:51:46,780 যে অনেক ট্রে বা নম্বর আছে. 1197 00:51:46,780 --> 00:51:48,840 তাই হয়তো আমরা করতে চান এখানে একটি লিঙ্ক তালিকা ব্যবহার, 1198 00:51:48,840 --> 00:51:51,800 কিন্তু ট্রেড বন্ধ হতে যাচ্ছে সম্ভাব্য আমরা আরো মেমরি প্রয়োজন যে, 1199 00:51:51,800 --> 00:51:55,930 একটু বেশি সময় লাগে, কিন্তু আমরা স্ট্যাকের উচ্চতা সীমাবদ্ধ না, 1200 00:51:55,930 --> 00:51:59,550 অনেক মাথের এর প্রদর্শনের ক্ষেত্রে মত স্ট্যাকের আকার সীমাবদ্ধ হতে পারে, 1201 00:51:59,550 --> 00:52:03,117 এবং তাই এই নকশা সিদ্ধান্ত বা হয় শেষ পর্যন্ত আমাদের জন্য উপলব্ধ বিকল্প. 1202 00:52:03,117 --> 00:52:04,950 এই তথ্য দিয়ে তাই কাঠামো, আমরা শুরু করেছি 1203 00:52:04,950 --> 00:52:09,360 সম্ভাব্য নতুন উপরের কোট দেখা কি উপর পূর্বে সুপার ফাস্ট ছিল 1204 00:52:09,360 --> 00:52:11,260 এবং আমরা ছেড়ে দেব যেখানে বন্ধ আজ এবং যেখানে 1205 00:52:11,260 --> 00:52:13,200 আমরা পেতে আশা করি পাবেন বুধবার, আমরা করব 1206 00:52:13,200 --> 00:52:15,740 একটি তথ্য তাকান শুরু আমাদের অনুসন্ধান করতে দেয় যে কাঠামো 1207 00:52:15,740 --> 00:52:18,260 পাসওয়ার্ড ভুলে গেছেন? শেষ সময়ে তথ্য মাধ্যমে আবার. 1208 00:52:18,260 --> 00:52:21,470 আর আমরা শুন্য সপ্তাহ মধ্যে প্রত্যাহার, যে দেখেছি বাইনারি অনুসন্ধান বা ডিভাইড সঙ্গে এবং এক 1209 00:52:21,470 --> 00:52:22,180 এবং বশীভূত. 1210 00:52:22,180 --> 00:52:26,240 এটা এখনো ফিরে এবং ভাল আসছে এই বুধবার পবিত্র ঈপ্সিত বস্তু 1211 00:52:26,240 --> 00:52:29,510 সঙ্গে আসা পর্যন্ত হতে হবে সত্যিই যে চালায় ডাটা স্ট্রাকচার 1212 00:52:29,510 --> 00:52:32,070 বা তাত্ত্বিক মধ্যে ধ্রুব সময়, যদ্দ্বারা 1213 00:52:32,070 --> 00:52:34,760 এটি কতগুলি কোন ব্যাপার না লক্ষ লক্ষ বা জিনিষ বিলিয়ান 1214 00:52:34,760 --> 00:52:38,470 আমরা তথ্য কাঠামো আছে, এটা করবে না আমাদের ধ্রুবক সময় লাগবে, হয়তো এক ধাপ 1215 00:52:38,470 --> 00:52:41,387 বা দুই ধাপ বা 10 ধাপ, কিন্তু ধাপের ধ্রুব সংখ্যা 1216 00:52:41,387 --> 00:52:42,970 যে তথ্য কাঠামো মাধ্যমে আপনাকে. 1217 00:52:42,970 --> 00:52:46,300 যে প্রকৃতপক্ষে পবিত্র ঈপ্সিত বস্তু হতে হবে কিন্তু বুধবার যে আরও. 1218 00:52:46,300 --> 00:52:49,045 তারপর আগে দেখুন. 1219 00:52:49,045 --> 00:52:53,704 >> [সঙ্গীত বাজাচ্ছি] 1220 00:52:53,704 --> 00:56:08,448