1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [সপ্তাহ 6] 2 00:00:02,000 --> 00:00:04,000 [ডেভিড জে Malan] [হার্ভার্ড বিশ্ববিদ্যালয়] 3 00:00:04,000 --> 00:00:08,000 [এটি CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> এটি CS50, এবং এই সপ্তাহ 6 শুরু, 5 00:00:12,000 --> 00:00:16,000 তাই নতুন সরঞ্জামের একটি দম্পতি এখন উপলব্ধ করার জন্য আপনাকে উপকারিতা নিতে, 6 00:00:16,000 --> 00:00:19,000 যার প্রথম CS50 স্টাইল বলা হয়. 7 00:00:19,000 --> 00:00:22,000 অডস হয় যদি আপনার সম্পর্কে বা শিক্ষণ ফেলোগণ কোনো ভালো থাকেন, 8 00:00:22,000 --> 00:00:26,000 আপনি সম্ভবত করেছি একটি প্রোগ্রাম যার শৈলী একটি ভালো সামান্য কিছু চেহারা দেখা যায়. 9 00:00:26,000 --> 00:00:30,000 হতে পারে আপনি শুরু কিছু কোণ রাত্রিতে কাটা, বা আপনি পরে এটা মোকাবেলা করব, 10 00:00:30,000 --> 00:00:32,000 এবং তারপর একটি TF CA অথবা অফিসে কাজের সময় আসে না. 11 00:00:32,000 --> 00:00:34,000 তারপর এটা হার্ড জন্য আমাদের পড়তে. 12 00:00:34,000 --> 00:00:38,000 ওয়েল, এই কোড একটি চিহ্নগুলি সিন্টেক্সের ক্ষেত্রে সঠিক, এবং এটা কম্পাইল করা, এবং এটি আসলে চালানো হবে. 13 00:00:38,000 --> 00:00:40,000 কিন্তু এটা স্পষ্টভাবে শৈলী জন্য একটি 5 হইনি. 14 00:00:40,000 --> 00:00:45,000 >> কিন্তু এখন, যদি আমরা এই ডিরেক্টরির মধ্যে যেতে এখানে- 15 00:00:45,000 --> 00:00:48,000 এবং লক্ষ্য করা যে আমি conditions2.c-আছে 16 00:00:48,000 --> 00:00:55,000 এবং আমি এই ফাইলটি conditions2.c এই নতুন কমান্ড, style50, রান, লিখুন, 17 00:00:55,000 --> 00:00:57,000 বিজ্ঞপ্তি যে এটি সম্পর্কে অবগত যে এটি stylized হয়েছে. 18 00:00:57,000 --> 00:01:00,000 Gedit লক্ষ্য করেছি যে ফাইলটি ডিস্কে পরিবর্তিত হয়েছে, 19 00:01:00,000 --> 00:01:08,000 এবং যদি আমি রিলোড ক্লিক করুন, এখন আপনার সব সমস্যা স্বয়ংক্রিয়রূপে করা হয়. 20 00:01:08,000 --> 00:01:15,000 [সাধুবাদ] 21 00:01:15,000 --> 00:01:17,000 যে জিনিস আমরা কি এই সপ্তাহান্তে এক. 22 00:01:17,000 --> 00:01:20,000 এটা অপূর্ণ বুঝতে পারছি না কারণ কিছু কিছু কোড আছে 23 00:01:20,000 --> 00:01:23,000 যে সহজভাবে তা পুরোপুরি stylize সক্ষম হবেন না, হবে 24 00:01:23,000 --> 00:01:26,000 কিন্তু বুঝতে পারছি এটা এখন একটি হাতিয়ার আপনার সুবিধা গ্রহণ করতে পারেন 25 00:01:26,000 --> 00:01:33,000 যদি শুধুমাত্র আরো errantly স্থাপিত কোঁকড়া ধনুর্বন্ধনী সম্পর্কে পরিষ্কার কিছু করতে চান. 26 00:01:33,000 --> 00:01:36,000 >> কিন্তু এখন আরো আকর্ষক হয় CS50 চেক. 27 00:01:36,000 --> 00:01:39,000 CS50 চেক সঙ্গে, আপনি আসলে একই শুদ্ধতা পরীক্ষা সম্পাদন করতে পারবেন না 28 00:01:39,000 --> 00:01:42,000 আপনার নিজস্ব কোড যে শিক্ষণ ফেলোগণ সক্ষম হয়. 29 00:01:42,000 --> 00:01:44,000 এটি একটি কমান্ড লাইন থেকে ব্যবহারযোগ্য যন্ত্রপাতি মধ্যে যে এখন আসে 30 00:01:44,000 --> 00:01:46,000 যত তাড়াতাড়ি আপনি প্রতি হিসাবে একটি update50 না 31 00:01:46,000 --> 00:01:49,000 pset 4 বিবরণ এবং আপনার ব্যবহার করা ভালো মূলত এটি. 32 00:01:49,000 --> 00:01:51,000 আপনি কমান্ড চালানোর check50. 33 00:01:51,000 --> 00:01:56,000 তারপর আপনি একটি কমান্ড লাইন আর্গুমেন্ট প্রেরণ করতে, অথবা একটি সুইচ বা একটি পতাকা হিসাবে আরো সাধারণভাবে পরিচিত. 34 00:01:56,000 --> 00:01:58,000 সাধারণভাবে, যে হাইফেন আছে একটি সুইচ বলা হয় 35 00:01:58,000 --> 00:02:02,000 একটি কমান্ড লাইন প্রোগ্রাম, তাই নির্দিষ্ট করে-c করা 36 00:02:02,000 --> 00:02:04,000 চেক করতে হবে যে আপনার চালাতে চান. 37 00:02:04,000 --> 00:02:07,000 >> পরীক্ষা যে আপনি চালাতে চান এককভাবে এই স্ট্রিং দ্বারা সনাক্ত করা হয়, 38 00:02:07,000 --> 00:02:10,000 2012/pset4/resize. 39 00:02:10,000 --> 00:02:13,000 অন্য কথায়, যে মাত্র একটি অবাধ কিন্তু অনন্য স্ট্রিংটি 40 00:02:13,000 --> 00:02:18,000 যে আমরা এককভাবে pset 4 এর শুদ্ধতা পরীক্ষা চিহ্নিত করে. 41 00:02:18,000 --> 00:02:21,000 এবং তারপর আপনি একটি ফাইলের পৃথক তালিকা নির্দিষ্ট স্থান যে আপনি আপলোড করতে ইচ্ছুক 42 00:02:21,000 --> 00:02:24,000 যাও বিশ্লেষণের জন্য CS50 চেক. 43 00:02:24,000 --> 00:02:29,000 উদাহরণস্বরূপ, যদি আমি আমার সমাধান ঢোকা এখানে জন্য resize.c- 44 00:02:29,000 --> 00:02:31,000 আমাকে একটি উইন্ডো-বড় টার্মিনাল খুলুন 45 00:02:31,000 --> 00:02:42,000 এবং আমি এগিয়ে যান এবং এর যাক চালানো বলতে check50 করে-c করা 2012/pset4/resize, 46 00:02:42,000 --> 00:02:46,000 এবং তারপর আমি এগিয়ে যান এবং ফাইলের নাম উল্লেখ, 47 00:02:46,000 --> 00:02:49,000 resize.c, তারপর লিখুন এবং আঘাত, এটি সংকোচন, 48 00:02:49,000 --> 00:02:53,000 এটি আপলোড, এটি পরীক্ষা করা, এবং আমি একটি পরীক্ষা আভা ব্যর্থ হয়েছে. 49 00:02:53,000 --> 00:02:59,000 লাল উপরের বাম এক বলছেন যে resize.c এবং bmp বিদ্যমান. 50 00:02:59,000 --> 00:03:01,000 যে ছিল পরীক্ষা. প্রশ্ন ছিল যে আমরা জিজ্ঞাসা. 51 00:03:01,000 --> 00:03:04,000 এবং এটা অখুশী ছিলেন কারণ উত্তর মিথ্যা. 52 00:03:04,000 --> 00:03:08,000 এটি নীচের সাদা টেক্সট বলেছেন প্রত্যাশিত অস্তিত্ব bmp.h, এবং যে কেবল আমার ভুল. 53 00:03:08,000 --> 00:03:11,000 আমি এটি আপলোড ভুলে গেছি, তাই আমি উভয় ফাইল আপলোড করার জন্য প্রয়োজন, 54 00:03:11,000 --> 00:03:14,000 resize.c এবং bmp.h. 55 00:03:14,000 --> 00:03:17,000 কিন্তু এখন অন্যান্য সকল পরীক্ষার হলুদ হয় কারণ তারা না চালানোর আছে বিজ্ঞপ্তি, 56 00:03:17,000 --> 00:03:21,000 এবং তাই স্মাইলি মুখ উল্লম্ব কারণ তিনি এর ত্ত খুশি না দু: খিত, 57 00:03:21,000 --> 00:03:25,000 কিন্তু আমরা লাল যে সমস্যাটি আগে অন্যান্য চেক চালানো হবে প্রতিকার আছে. 58 00:03:25,000 --> 00:03:27,000 >> আমাকে এই সমাধানের জন্য. 59 00:03:27,000 --> 00:03:30,000 সম্পর্কে জুম আউট এবং এই পুন: প্রকাশ করা যাক bmp.h সঙ্গে এই সময় এছাড়াও, 60 00:03:30,000 --> 00:03:34,000 কমান্ড লাইন,, লিখুন এবং এখন যদি সব ঠিক যায়, 61 00:03:34,000 --> 00:03:38,000 তা চেক করুন ও তারপরে ফলে ফিরে আপনার-রাখা যাচ্ছে উত্তেজনাকর 62 00:03:38,000 --> 00:03:42,000 সমস্ত সবুজ, যার অর্থ আমি pset 4 ব্যবহার করছি সেটা সত্যিই ভাল এ পর্যন্ত. 63 00:03:42,000 --> 00:03:44,000 আপনি এখানে দেখতে ও বর্ণনামূলক লেখা থেকে আবিষ্কার করতে পারেন 64 00:03:44,000 --> 00:03:47,000 ঠিক কি এটা আমরা পরীক্ষিত. 65 00:03:47,000 --> 00:03:49,000 আমরা পরীক্ষিত প্রথম ফাইল উপস্থিত নয়? 66 00:03:49,000 --> 00:03:51,000 এরপর আমরা পরীক্ষিত resize.c কম্পাইল করে? 67 00:03:51,000 --> 00:03:58,000 তারপর আমরা পরীক্ষা কিন্তু যখন হবে, পুনরায় মাপ ফ্যাক্টর, 1 মাপ পরিবর্তন একটি 1x1-পিক্সেল BMP না. 68 00:03:58,000 --> 00:04:01,000 এখন, যদি আপনি কোন ধারণা কি n হল আছে, আপনি একবার pset 4 মধ্যে আপনি আকর্ষণীয় হবে, 69 00:04:01,000 --> 00:04:04,000 কিন্তু শুধু যে একটি বৈধতা পরীক্ষা করে নিশ্চিত করুন যে আপনি resizing পারব না করা 70 00:04:04,000 --> 00:04:08,000 একটি চিত্র এ সব যদি পুনরায় মাপ ফ্যাক্টর হয় 1. 71 00:04:08,000 --> 00:04:14,000 বৈসাদৃশ্য দ্বারা যদি,, এটি একটি একটি 1x1 পিক্সেল BMP যাও 1x1 পিক্সেল resizes 2x2 সঠিকভাবে যাও 72 00:04:14,000 --> 00:04:19,000 যখন n হল 2 পরে, একভাবে, খনি ফর্ম অনুসারে. 73 00:04:19,000 --> 00:04:22,000 >> সংক্ষেপে, এই, এক বোঝানো হয়, মোড় নিতে আঙ্গুলের 74 00:04:22,000 --> 00:04:25,000 ডানদিকে আপনি আগে সমীকরণ আউট আপনার pset জমা দিন. 75 00:04:25,000 --> 00:04:28,000 আপনি ঠিক কি শীঘ্রই আপনার TF জানতে হবে জানতে হবে 76 00:04:28,000 --> 00:04:30,000 যখন আপনি এই সমস্যা সেট কিছু জমা দেওয়ার চেষ্টা করা, 77 00:04:30,000 --> 00:04:34,000 এবং এছাড়াও পণ্ডিতিপনামূলক প্রেরণা সত্যিই প্রয়োগ করা 78 00:04:34,000 --> 00:04:37,000 আপনি সামনে সুযোগ যাতে যখন আপনি অবরোহমার্গী জানা 79 00:04:37,000 --> 00:04:39,000 যে বাগ এবং আপনার কোড মধ্যে যে পরীক্ষা পাস করা হচ্ছে না হয় আছে, 80 00:04:39,000 --> 00:04:43,000 আপনি আরো কার্যকর সময় সামনে যারা সমস্যার সমাধান করা যেতে পারে 81 00:04:43,000 --> 00:04:45,000 বরং পয়েন্ট হারাবেন, আপনার TF থেকে প্রতিক্রিয়া পাওয়া, 82 00:04:45,000 --> 00:04:48,000 এবং তারপর, যান "Ahh," আমি ভালো মূর্তিযুক্ত যে বার করা উচিত. 83 00:04:48,000 --> 00:04:50,000 এখন অন্তত একটি টুল আপনি যে খুঁজে পেতে সহায়তা করতে পারে. 84 00:04:50,000 --> 00:04:52,000 এটি বাতলান যেখানে বাগ হয়, যাচ্ছে না কিন্তু এটা আপনাকে বলতে হবে 85 00:04:52,000 --> 00:04:54,000 এটা লাক্ষণিক কি হয়. 86 00:04:54,000 --> 00:04:57,000 >> এখন বুঝতে পরীক্ষা অগত্যা সম্পূর্ণ হয় না. 87 00:04:57,000 --> 00:04:59,000 কেবলমাত্র একটি পর্দা সবুজ স্মাইলি মুখগুলির পূর্ণ পেতে 88 00:04:59,000 --> 00:05:02,000 কিন্তু আপনার কোড হল নিখুঁত, না মানে কিন্তু এটা মানে না 89 00:05:02,000 --> 00:05:06,000 যে এটা কিছু কিছু বৈশিষ্ট দ্বারা নির্ধারিত পরীক্ষা পাস করেনি. 90 00:05:06,000 --> 00:05:08,000 কখনও কখনও আমরা চেক মুক্তি হবে না. 91 00:05:08,000 --> 00:05:10,000 উদাহরণস্বরূপ, রহস্যময় গল্প, pset 4 বিষয়, 92 00:05:10,000 --> 00:05:15,000 হতাশাদায়ক ধরনের হয় যদি আমরা আপনাকে 93 00:05:15,000 --> 00:05:18,000 কি এটা, এবং উপায় প্রকাশ করা একটি নম্বর আছে হিসাবে উত্তর 94 00:05:18,000 --> 00:05:21,000 যে লাল গোলমালের মধ্যে যারা ব্যক্তি. 95 00:05:21,000 --> 00:05:24,000 ফটকা খেলা সর্বদা ভবিষ্যতে pset 5 অনওয়ার্ড জন্য নির্দিষ্ট করা 96 00:05:24,000 --> 00:05:26,000 পরীক্ষা কি আপনার জন্য বিদ্যমান. 97 00:05:26,000 --> 00:05:28,000 আপনি এই নীচে সাদা URL-এ আছে বিজ্ঞপ্তি পাবেন. 98 00:05:28,000 --> 00:05:30,000 এখন, এই শুধু ডায়গনিস্টিক আউটপুট. 99 00:05:30,000 --> 00:05:33,000 যদি আপনি যে URL-এ যান, আপনি একটি ছবি, একটি সাঙ্কেতিক বার্তা আভা পাবেন 100 00:05:33,000 --> 00:05:36,000 আপনি মাধ্যমে সন্ধান স্বাগত, কিন্তু তা কর্মীদের জন্য এর বেশিরভাগই 101 00:05:36,000 --> 00:05:41,000 যাতে আমরা এবং check50 নিজেই বাগ ডিবাগ নির্ণয় করতে পারেন. 102 00:05:41,000 --> 00:05:46,000 >> হৈচৈ ছাড়া, আসুন যাও যেখানে আমরা বাম বন্ধ যান. 103 00:05:46,000 --> 00:05:48,000 CS50 গ্রন্থাগারের আমরা গ্রহণ কিছু সপ্তাহের জন্য জন্য দেয়া হয়, 104 00:05:48,000 --> 00:05:52,000 কিন্তু পরে গত সপ্তাহে, আমরা শুরু পিলিং এটা এক স্তর ফিরে. 105 00:05:52,000 --> 00:05:55,000 আমরা শুরু নির্বাণ কি পরিবর্তে পক্ষে স্ট্রিং সরাইয়া? 106 00:05:55,000 --> 00:05:57,000 [ছাত্রদের] চর. 107 00:05:57,000 --> 00:05:59,000 চর *, যা একটি গৃহস্থালি * হয়েছে সব সময় এই করেনি, 108 00:05:59,000 --> 00:06:03,000 কিন্তু এখন আমরা যে এটি একটি প্রকৃত তথ্য টাইপ স্ট্রিং জাহির করতে হবে না. 109 00:06:03,000 --> 00:06:06,000 বরঞ্চ, এটি গৃহস্থালি * জন্য ছিল প্রকারের একটি প্রতিশব্দ, 110 00:06:06,000 --> 00:06:09,000 এবং একটি স্ট্রিংটি অক্ষরের একটি অনুক্রম, 111 00:06:09,000 --> 00:06:14,000 তাই কেন এটি ইন্দ্রিয় জন্য গৃহস্থালি * গুলি স্ট্রিং হিসাবে চিত্রিত করা হয়েছে? 112 00:06:14,000 --> 00:06:20,000 কি একটি গৃহস্থালি * একটি পংক্তি এই ধারণার প্রেক্ষিতে প্রতিনিধিত্ব করছে? 113 00:06:20,000 --> 00:06:23,000 হাঁ. >> [ছাত্র] প্রথম অক্ষর. 114 00:06:23,000 --> 00:06:25,000 গুড, প্রথম অক্ষর, কিন্তু পুরোপুরি প্রথম অক্ষর. 115 00:06:25,000 --> 00:06:27,000 এটা-[শিক্ষার্থীরা] ঠিকানা. 116 00:06:27,000 --> 00:06:29,000 গুড, প্রথম অক্ষরটি ঠিকানা. 117 00:06:29,000 --> 00:06:33,000 সমস্ত যে একটি কম্পিউটার এর মেমরির মধ্যে একটি স্ট্রিং প্রতিনিধিত্ব প্রয়োজন 118 00:06:33,000 --> 00:06:36,000 শুধুমাত্র তার খুব প্রথম বাইট অনন্য ঠিকানা. 119 00:06:36,000 --> 00:06:38,000 আপনি কতদিন এটা জানা আছে না 120 00:06:38,000 --> 00:06:42,000 কারণ আপনি কিভাবে যে আউট পরিবর্তনশীল জিনিসটা করতে পারেন? 121 00:06:42,000 --> 00:06:44,000 [ছাত্র] স্ট্রিং দ্বারা. 122 00:06:44,000 --> 00:06:48,000 আপনার স্ট্রিং দ্বারা, চমৎকার, কিন্তু কিভাবে স্ট্রিং দ্বারা কাজ করে কল করতে পারেন? 123 00:06:48,000 --> 00:06:50,000 কি করব? হাঁ. 124 00:06:50,000 --> 00:06:52,000 [ছাত্র] আপাতত পর্যন্ত আপনি নাল চরিত্র পেতে রাখুন. 125 00:06:52,000 --> 00:06:54,000 হ্যাঁ ঠিক,, এটি একটি লুপ জন্য শুধু iterates, যখন লুপ, 126 00:06:54,000 --> 00:06:57,000 যাহা থেকে * শেষে, এবং শেষ প্রতিনিধিত্ব করা হয় 127 00:06:57,000 --> 00:07:01,000 দ্বারা \ 0, তথাকথিত nul অক্ষর, nul, 128 00:07:01,000 --> 00:07:05,000 নাল, যা একটি পয়েন্টার দিয়ে বিভ্রান্ত করা হবে না, 129 00:07:05,000 --> 00:07:07,000 যা কথোপকথন আসে আবার আজ হবে. 130 00:07:07,000 --> 00:07:11,000 >> আমরা peeled ফিরে GetInt একটি স্তর, এবং তারপর আমরা GetString কটাক্ষপাত নেন, 131 00:07:11,000 --> 00:07:14,000 এবং যে যারা উভয় কর্ম, বা সত্যিই প্রত্যাহার, 132 00:07:14,000 --> 00:07:18,000 GetString, ছিল একটি নির্দিষ্ট ফাংশন ব্যবহার করে 133 00:07:18,000 --> 00:07:21,000 প্রকৃতপক্ষে পার্স করতে, যে, বা না পড়া বিশ্লেষণ ব্যবহারকারীর ইনপুট,. 134 00:07:21,000 --> 00:07:25,000 এবং কি ছিল যে নতুন ফাংশন? 135 00:07:25,000 --> 00:07:27,000 Scanf বা sscanf. এটা আসলে কয়েক ভিন্ন স্বাদে আসে. 136 00:07:27,000 --> 00:07:31,000 Scanf আছে, sscanf আছে, fscanf আছে. 137 00:07:31,000 --> 00:07:35,000 এখন জন্য যদিও, এবার এর এক সবচেয়ে সহজে সচিত্র ফোকাস, 138 00:07:35,000 --> 00:07:38,000 এবং আমাকে এগিয়ে যান এবং যন্ত্রপাতি আপ খুলুন 139 00:07:38,000 --> 00:07:41,000 ভালো একটি ফাইল, scanf1.c. 140 00:07:41,000 --> 00:07:43,000 এটি একটি সুপার সহজ প্রোগ্রাম, 141 00:07:43,000 --> 00:07:46,000 কিন্তু যে কোন কিছু যে আমরা কখনও কাজ করেছি আছে 142 00:07:46,000 --> 00:07:48,000 ছাড়া CS50 গ্রন্থাগারের সাহায্য. 143 00:07:48,000 --> 00:07:51,000 এই ব্যবহারকারী একটি থেকে কোন int পায়. কিভাবে এটি কাজ করে? 144 00:07:51,000 --> 00:07:53,000 ওয়েল, লাইন 16 আছে, 145 00:07:53,000 --> 00:07:56,000 আমরা যে কোন int x নামক ডিক্লেয়ার বিজ্ঞপ্তি, এবং এ গল্প এই বিন্দু, 146 00:07:56,000 --> 00:07:58,000 x এর মান কি হয়? 147 00:07:58,000 --> 00:08:00,000 [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] 148 00:08:00,000 --> 00:08:02,000 [ডেভিড এম] ঠিক আছে, কে জানে, কিছু আবর্জনা সম্ভাব্য মান 17 করে, তাই, আমরা শুধুমাত্র ব্যবহারকারী বলুন 149 00:08:02,000 --> 00:08:06,000 সম্পর্কে একটি নম্বর দিতে, দয়া করে, এবং 18 ধাপ হল যেখানে সেটা আকর্ষণীয়. 150 00:08:06,000 --> 00:08:11,000 Scanf যাও printf থেকে একটি ধারণা যে এটি কোট এই বিন্যাসে কোড ব্যবহার করে ধার করা হচ্ছে. 151 00:08:11,000 --> 00:08:13,000 % D অবশ্যই একটি দশমিক সংখ্যা. 152 00:08:13,000 --> 00:08:21,000 কিন্তু কেন আমি & x এর পরিবর্তে শুধু x এর মধ্যে am পার? 153 00:08:21,000 --> 00:08:24,000 সাবেক সঠিক. হাঁ. 154 00:08:24,000 --> 00:08:26,000 [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] 155 00:08:26,000 --> 00:08:31,000 ঠিক, যদি এই প্রোগ্রামের উদ্দেশ্য হল, ভালো ফাংশন GetInt নিজেই, 156 00:08:31,000 --> 00:08:34,000 ব্যবহারকারী যাও না থেকে কোন int পেতে আমি ফাংশন পাস করতে পারেন 157 00:08:34,000 --> 00:08:38,000 সব ভেরিয়েবল ব্যবহার করতে চাই, কিন্তু যদি আমি তাদের দ্বারা উল্লেখ না পাশ 158 00:08:38,000 --> 00:08:41,000 দ্বারা বা ঠিকানা বা পয়েন্টার, আজ এর উদ্দেশ্যে সব সমার্থক, 159 00:08:41,000 --> 00:08:46,000 তারপর যে ফাংশন যে পরিবর্তনশীল বিষয়বস্তু পরিবর্তন কোন ক্ষমতা আছে. 160 00:08:46,000 --> 00:08:49,000 এই একটি কপি, ঠিক swap-র সংস্করণ বগী মত পাশ করানো যাবে 161 00:08:49,000 --> 00:08:51,000 যে আমরা এখন কয়েক বার স্বপ্ন করেছি. 162 00:08:51,000 --> 00:08:54,000 >> কিন্তু এর পরিবর্তে করছেন & x এর দ্বারা,, আমি আক্ষরিক কী করছি পার? 163 00:08:54,000 --> 00:08:57,000 [ছাত্র] ঠিকানা. X ঠিকানা >>. 164 00:08:57,000 --> 00:09:01,000 এটা ফাংশন বলা scanf জন্য একটি মানচিত্র অঙ্কন এবং বলছে এখানে মত, 165 00:09:01,000 --> 00:09:04,000 এই কম্পিউটারে নির্দেশ মেমরি চাঙ্গড় যাও 166 00:09:04,000 --> 00:09:07,000 যেটায় আপনার কিছু পূর্ণসংখ্যা সঞ্চয় যেতে পারেন 167 00:09:07,000 --> 00:09:10,000 ইন অর্ডার এখন জন্য sscanf যে না 168 00:09:10,000 --> 00:09:13,000 কি অপারেটর, বাক্য গঠন কি টুকরা এটা ব্যবহার করতে হবে 169 00:09:13,000 --> 00:09:19,000 যদিও আমরা এটি কারণ অন্য কেউ এই ফাংশন লিখেছে দেখতে পারে না? 170 00:09:19,000 --> 00:09:21,000 অন্য কথায় - কি যে? 171 00:09:21,000 --> 00:09:23,000 [ছাত্র] এক্স পড়া. 172 00:09:23,000 --> 00:09:27,000 গিয়ে কিছু পড়া আছে, কিন্তু এর সাথে শুধুমাত্র এক্স এখানে বিষয়ে. 173 00:09:27,000 --> 00:09:30,000 যদি scanf হচ্ছে x ঠিকানা পাস, 174 00:09:30,000 --> 00:09:35,000 চিহ্নগুলি সিন্টেক্সের ক্ষেত্রে, কি অপারেটর কোথাও অস্তিত্ব আবদ্ধ হয় 175 00:09:35,000 --> 00:09:38,000 ভিতর scanf এর বাস্তবায়ন যাতে scanf 176 00:09:38,000 --> 00:09:42,000 যে ঠিকানা প্রকৃতপক্ষে একটি সংখ্যা 2 লিখতে পারেন? 177 00:09:42,000 --> 00:09:44,000 হাঁ, যাতে *. 178 00:09:44,000 --> 00:09:47,000 যে প্রত্যাহার * আমাদের dereference অপারেটর, যা মূলত অর্থ সেখানে যান. 179 00:09:47,000 --> 00:09:50,000 >> আপনি একবার করছি একটি ঠিকানা হস্তান্তর, হিসাবে এইখানে কেস, 180 00:09:50,000 --> 00:09:53,000 scanf সম্ভবত, যদি না আমরা আসলে তার আশেপাশে তাকিয়ে সোর্স কোড- 181 00:09:53,000 --> 00:09:59,000 হয় * x অথবা সমতুল্য আসলে যে ঠিকানায় যান এবং সেখানে কিছু মান রাখা করছেন. 182 00:09:59,000 --> 00:10:02,000 এখন, কিভাবে হিসাবে জন্য scanf কীবোর্ড থেকে ইনপুট পায়, 183 00:10:02,000 --> 00:10:04,000 আমরা আজকের জন্য আমাদের হাত তরঙ্গ আউট করব. 184 00:10:04,000 --> 00:10:07,000 শুধু অনুমান যে অপারেটিং সিস্টেম এর সাহায্যে কথা বলার sscanf 185 00:10:07,000 --> 00:10:11,000 ব্যবহারকারী যাও এর কীবোর্ড, কিন্তু এই সময়ে এখন লাইন 19, 186 00:10:11,000 --> 00:10:14,000 যখন আমরা কেবল এক্স প্রিন্ট আউট, এই কেস বলে মনে হয় 187 00:10:14,000 --> 00:10:17,000 যে scanf x এর মধ্যে করেনি কোন int করা. 188 00:10:17,000 --> 00:10:19,000 এটা ঠিক কিভাবে scanf কাজ, এবং গত সপ্তাহে প্রত্যাহার 189 00:10:19,000 --> 00:10:25,000 যে ঠিক কিভাবে GetString এবং GetInt এবং তার কর্ম পরিবারের অন্যান্য 190 00:10:25,000 --> 00:10:28,000 পরিণামে কাজ sscanf মত অসম্মান ভ্যারিয়েন্স সঙ্গে, যদিও, 191 00:10:28,000 --> 00:10:31,000 যার মানে পরিবর্তে কীবোর্ড একটি স্ট্রিং স্ক্যান. 192 00:10:31,000 --> 00:10:33,000 কিন্তু যাক এর একটি এই সামান্য ভ্যারিয়েন্স কটাক্ষপাত করা. 193 00:10:33,000 --> 00:10:37,000 Scanf2 ইন, আসলে আমি মাতাল আপ. 194 00:10:37,000 --> 00:10:42,000 ভুল-এবং কি আমি মন্তব্য নেই যে হিসাবে অনেক-ব্যাখ্যা করব লুকান 195 00:10:42,000 --> 00:10:47,000 এটা কি এই প্রোগ্রামের সাথে ভুল, সংস্করণ 2? 196 00:10:47,000 --> 00:10:55,000 সম্ভব হিসাবে এই সময় হিসাবে প্রযুক্তিগত হবে. 197 00:10:55,000 --> 00:10:57,000 আর দেখতেও ভাল প্রশংসনীয়. 198 00:10:57,000 --> 00:11:03,000 এটা চমত্কারভাবে এর সংভৃত, কিন্তু- 199 00:11:03,000 --> 00:11:07,000 ঠিক আছে, এর সম্পর্কে কিভাবে যাক এটি আলুবোখারা খাটো প্রশ্নগুলির ডাউন? 200 00:11:07,000 --> 00:11:17,000 লাইন 16. লাইন 16 সুনির্দিষ্ট কিন্তু প্রযুক্তিগত ইংরেজি করছেন কি? 201 00:11:17,000 --> 00:11:20,000 পথ একটু অসুবিধাজনক. হ্যাঁ, মাইকেল. 202 00:11:20,000 --> 00:11:25,000 [ছাত্র] এটি একটি স্ট্রিং প্রথম অক্ষরটি এর প্রতি নির্দেশ করে. 203 00:11:25,000 --> 00:11:27,000 >> ঠিক আছে, বন্ধ. আমাকে যে অল্প খামচি. 204 00:11:27,000 --> 00:11:33,000 এর স্ট্রিং এর প্রথম অক্ষর নির্দেশক, আপনি একটি পরিবর্তনশীল নামক বাফার ঘোষণা করা হয় 205 00:11:33,000 --> 00:11:36,000 যে একটি স্ট্রিং প্রথম ঠিকানা নির্দেশ করা, 206 00:11:36,000 --> 00:11:39,000 অথবা এর পরিবর্তে, যে আরো নির্দিষ্টভাবে একটি গৃহস্থালি নির্দেশ করুন. 207 00:11:39,000 --> 00:11:42,000 এটি আসলে কোথাও প্রতি নির্দেশ না কারণ কোন আরোপিত অপারেটর আছে লক্ষ্য করুন. 208 00:11:42,000 --> 00:11:46,000 উপমা সাইন নেই, সুতরাং আমরা সমস্ত করছেন পরিবর্তনশীল তথাকথিত বাফার বণ্টন. 209 00:11:46,000 --> 00:11:49,000 এটি 32 বিট হতে ঘটবে না কারণ এটি একটি পয়েন্টার, 210 00:11:49,000 --> 00:11:52,000 এবং বাফার বিষয়বস্তু সম্ভবতঃ ঘটনাক্রমে 211 00:11:52,000 --> 00:11:57,000 একটি গৃহস্থালি একটি ঠিকানা থাকে, কিন্তু এখন কি জন্য, বাফার থাকতে হবে না? 212 00:11:57,000 --> 00:11:59,000 শুধু কিছু বাজে, কে জানে, কিছু আবর্জনা মান, 213 00:11:59,000 --> 00:12:03,000 কারণ আমরা এটি সক্রিয়া করা স্পষ্টভাবে না, তাই আমরা কিছু না অনুমান করা উচিত. 214 00:12:03,000 --> 00:12:06,000 ঠিক আছে, তাই এখন লাইন 17-কি হয় না লাইন 17 করবেন? 215 00:12:06,000 --> 00:12:08,000 হতে পারে যে এই গরম করা হবে. 216 00:12:08,000 --> 00:12:10,000 এটি একটি স্ট্রিং ছাপে অধিকার,? 217 00:12:10,000 --> 00:12:12,000 সেটা ছাপে স্ট্রিং দয়া করে. 218 00:12:12,000 --> 00:12:15,000 >> লাইন 18 হল পরিচিত ধরনের এখন যে আমরা এই একটি ভ্যারিয়েন্স দেখেছি 219 00:12:15,000 --> 00:12:18,000 কিন্তু সঙ্গে একটি ভিন্ন কোড বিন্যাস, তাই লাইন 18, 220 00:12:18,000 --> 00:12:23,000 আমরা scanf করছি এখানে কহন মেমরি একটি খণ্ড ঠিকানা. 221 00:12:23,000 --> 00:12:27,000 আমি আপনাকে একটি স্ট্রিং এ, রিং% s দ্বারা হিসাবে উহ্য করতে চান, 222 00:12:27,000 --> 00:12:32,000 কিন্তু সমস্যা হল এখানে আমরা সম্পন্ন জিনিষ কয়েক নি. 223 00:12:32,000 --> 00:12:35,000 সমস্যা কি? 224 00:12:35,000 --> 00:12:38,000 [ছাত্র] এটি একটি নাল পয়েন্টার dereference এর চেষ্টা. 225 00:12:38,000 --> 00:12:41,000 গুড, নাল বা অন্যথায় শুধুমাত্র অজানা পয়েন্টার দেয়া হল. 226 00:12:41,000 --> 00:12:45,000 আপনি কোনো ঠিকানা হস্তান্তর scanf, সেটি কিন্তু আপনি শুধু বলেন, একটি মুহূর্ত আগে 227 00:12:45,000 --> 00:12:49,000 যে ঠিকানা হল কিছু আবর্জনা মান কারণ আমরা কিছু এটা আসলে দায়িত্ব অর্পণ করা হয় নি, 228 00:12:49,000 --> 00:12:53,000 এবং যাতে আপনি scanf কার্যকরভাবে একটি স্ট্রিং এখানে করা যেতে বলছে করছি, 229 00:12:53,000 --> 00:12:56,000 কিন্তু আমরা যেখানে এখনও এখানে হয় না, 230 00:12:56,000 --> 00:12:59,000 তাই আমরা বাফার জন্য মেমরি বরাদ্দ আসলে আছে না. 231 00:12:59,000 --> 00:13:03,000 তাছাড়া, কি এছাড়াও আপনি scanf এমনকি বলছে না? 232 00:13:03,000 --> 00:13:06,000 ধরুন এই ছিল মেমরি একটি খণ্ড, এবং এটি একটি গার্বেজ মান ছিল না, 233 00:13:06,000 --> 00:13:09,000 কিন্তু এখনও আপনি কিছু গুরুত্বপূর্ণ করছি scanf বলছে না. 234 00:13:09,000 --> 00:13:12,000 [ছাত্র] কোথায় আসলে এটি হল, ampersand. 235 00:13:12,000 --> 00:13:15,000 Ampersand এই ক্ষেত্রে, তাই, এটা ঠিক. 236 00:13:15,000 --> 00:13:18,000 কারণ একটি পয়েন্টার বাফার হিসাবে ইতিমধ্যে ঘোষিত হয় 237 00:13:18,000 --> 00:13:22,000 এর সিনট্যাক্স * টুকরা সঙ্গে, আমরা ampersand ব্যবহার করার প্রয়োজন হবে না 238 00:13:22,000 --> 00:13:25,000 কারণ এটি ইতিমধ্যেই একটি ঠিকানা, কিন্তু আমি মনে করি আমি এটা এখানে শোনা. 239 00:13:25,000 --> 00:13:27,000 [ছাত্র] এটা কত বড়? 240 00:13:27,000 --> 00:13:29,000 গুড, আমরা কত বড় এই বাফার হয় কহন scanf না থাকেন, 241 00:13:29,000 --> 00:13:32,000 যার মানে এমনকি যদি বাফার ছিল একটি পয়েন্টার, 242 00:13:32,000 --> 00:13:35,000 আমরা scanf করছি বলছে, একটি স্ট্রিং এখানে রাখুন, 243 00:13:35,000 --> 00:13:38,000 কিন্তু এখানে 2 বাইট হতে পারে, এটি 10 ​​বাইট হতে পারে, এটি একটি megabyte হতে পারে. 244 00:13:38,000 --> 00:13:41,000 Scanf কোন ধারণা আছে, এবং কারণ এটি মেমরি চাঙ্গড় 245 00:13:41,000 --> 00:13:43,000 সম্ভবতঃ, এটি একটি স্ট্রিং এখনো না. 246 00:13:43,000 --> 00:13:48,000 এটি কেবলমাত্র একটি পংক্তি একবার আপনি অক্ষর এবং একটি মেমরি যে তাল যাও \ 0 লিখুন. 247 00:13:48,000 --> 00:13:51,000 এখন এটি শুধু মেমরির কিছু খণ্ড. 248 00:13:51,000 --> 00:13:55,000 Scanf লেখার যে ঠিকানা থেকে বিরত না হবে. 249 00:13:55,000 --> 00:13:59,000 >> আপনি যদি পূর্বে কিছু উদাহরণ যেখানে আমি এলোমেলোভাবে কীবোর্ড টাইপ প্রত্যাহার 250 00:13:59,000 --> 00:14:03,000 চেষ্টা করছে একটি বাফার ওভারফ্লো, এবং শুক্রবার আমরা ঠিক যে সম্পর্কে বললাম. 251 00:14:03,000 --> 00:14:07,000 যদি একটি প্রতিদ্বন্দ্বী একরকম আপনার প্রোগ্রামের মধ্যে একটি অনেক বড় শব্দ injects 252 00:14:07,000 --> 00:14:10,000 বা বাক্য বা শব্দগুচ্ছ তাহলে আপনি আশা করতে পারেন পদদলিত করা হয়েছে 253 00:14:10,000 --> 00:14:13,000 মেমরির একটি খণ্ড, যা খারাপ পরিণাম হতে পারে, 254 00:14:13,000 --> 00:14:15,000 ভালো পুরো প্রোগ্রাম নিজেই করে থা. 255 00:14:15,000 --> 00:14:17,000 আমরা একরকম এই স্থির করা প্রয়োজন. 256 00:14:17,000 --> 00:14:20,000 আমাকে জুম আউট এবং এই প্রোগ্রামের সংস্করণ 3 ঢোকা. 257 00:14:20,000 --> 00:14:22,000 এটা একটি অল্প ভাল. 258 00:14:22,000 --> 00:14:24,000 এই সংস্করণের মধ্যে পার্থক্য লক্ষ্য করা. 259 00:14:24,000 --> 00:14:27,000 লাইন 16 ইঞ্চি, আবার আমি একটি পরিবর্তনশীল নামক বাফার ঘোষণা করছি, 260 00:14:27,000 --> 00:14:29,000 কিন্তু এখন এটা কি হয়? 261 00:14:29,000 --> 00:14:33,000 এটা 16 অক্ষরের একটা সুবিন্যস্ত. 262 00:14:33,000 --> 00:14:36,000 এটা ভালো কারণ এই অর্থ আমি এখন scanf বলতে পারেন 263 00:14:36,000 --> 00:14:39,000 এখানে একটি প্রকৃত মেমরি তাল. 264 00:14:39,000 --> 00:14:42,000 আপনি প্রায় অ্যারে হচ্ছে এখন পয়েন্টার হিসাবে মনে করতে পারেন, 265 00:14:42,000 --> 00:14:44,000 যদিও তারা আসলে সমতুল্য পারব না. 266 00:14:44,000 --> 00:14:47,000 তারা বিভিন্ন প্রেক্ষাপটে ভিন্নভাবে আচরণ করা হবে. 267 00:14:47,000 --> 00:14:50,000 কিন্তু এটা অবশ্যই এর ক্ষেত্রে যে বাফার উল্লেখ করা হয় 268 00:14:50,000 --> 00:14:53,000 16 সংলগ্ন অক্ষর কারণ এর যে কোন একটি অ্যারের হয় 269 00:14:53,000 --> 00:14:55,000 এবং এখন কিছু সপ্তাহ যাবত করেনি. 270 00:14:55,000 --> 00:14:59,000 >> এখানে, আমি scanf কহন এখানে am এর মেমরি তাল. 271 00:14:59,000 --> 00:15:01,000 এই সময়, এটি একটি প্রকৃত মেমরির একটি খণ্ড, 272 00:15:01,000 --> 00:15:07,000 কিন্তু এখনও কেন এই প্রোগ্রাম exploitable? 273 00:15:07,000 --> 00:15:11,000 ভুল কি এখনও? 274 00:15:11,000 --> 00:15:14,000 আমি সম্পর্কে কিন্তু-16 বাইট দিতে বলেন করেছি 275 00:15:14,000 --> 00:15:16,000 [ছাত্র] যদি তারা অধিক 16 টাইপ? 276 00:15:16,000 --> 00:15:20,000 ঠিক, কি যদি ব্যবহারকারী 17 টি অক্ষর বা 1700 অক্ষর ধরনের? 277 00:15:20,000 --> 00:15:23,000 বস্তুত, আসুন যদি আমরা এই ভুল উপর ট্রিপ করতে পারেন না এখন দেখুন. 278 00:15:23,000 --> 00:15:25,000 এটা ভাল কিন্তু না নিখুঁত. 279 00:15:25,000 --> 00:15:28,000 আমাকে এগিয়ে যান এবং scanf3 এই প্রোগ্রাম কম্পাইল করার জন্য রান. 280 00:15:28,000 --> 00:15:34,000 সম্পর্কে scanf3 চালানো যাক, স্ট্রিং দয়া করে: হ্যালো, এবং আমরা ঠিক আছে মনে হয়. 281 00:15:34,000 --> 00:15:37,000 আমাকে একটু লম্বা, হ্যালো চেষ্টা আছে. 282 00:15:37,000 --> 00:15:42,000 ঠিক আছে, হ্যালো এর দেওয়া আছে কেমন আছেন আজ না, লিখুন. 283 00:15:42,000 --> 00:15:54,000 ভাগ্যবান ধরনের এখানে পথ, যাক এর হ্যালো বলুন সেখানে কেমন আছেন. 284 00:15:54,000 --> 00:15:56,000 এটা অভিশাপ. 285 00:15:56,000 --> 00:16:03,000 ঠিক আছে, তাই আমরা পেয়েছিলাম ভাগ্যবান. চলুন আমরা যদি এই না দেখতে পারবো. 286 00:16:03,000 --> 00:16:06,000 না, এটা সম্পর্কে কপি দেওয়া যাচ্ছে না. 287 00:16:06,000 --> 00:16:09,000 আসুন আবার এই চেষ্টা. 288 00:16:09,000 --> 00:16:12,000 সমস্ত অধিকার, পাশে দাঁড়ানো. 289 00:16:12,000 --> 00:16:20,000 আমরা কতদিন আমি যদিও এই কাজ ফোকাস করতে পারবেন দেখতে পাবেন. 290 00:16:20,000 --> 00:16:23,000 এটা অভিশাপ. এটা বরং যথাযথ আসলে,. 291 00:16:23,000 --> 00:16:26,000 এখন পর্যন্ত আমরা যেতে. 292 00:16:26,000 --> 00:16:30,000 পয়েন্ট হয়েছে. 293 00:16:30,000 --> 00:16:34,000 >> এই, হতবুদ্ধিকর যদিও এটা, এটা মহান বিভ্রান্তির উৎস এক 294 00:16:34,000 --> 00:16:38,000 যখন প্রোগ্রাম যে বাগ আছে লেখার কারণ তারা নিজেদের সুস্পষ্ট 295 00:16:38,000 --> 00:16:40,000 শুধুমাত্র একবার একটি কখনও কখনও যখন. 296 00:16:40,000 --> 00:16:43,000 বাস্তবতা হল যে যদি আপনার কোড সম্পূর্ণরূপে নষ্ট হয়ে গেছে, 297 00:16:43,000 --> 00:16:46,000 এটি শুধুমাত্র হতে পারে একটি সম্পূর্ণ করা হবে যখন ভেঙ্গে একবার 298 00:16:46,000 --> 00:16:49,000 কারণ কখনও কখনও মূলত, কি হল অপারেটিং সিস্টেম বরাদ্দ 299 00:16:49,000 --> 00:16:52,000 আপনি একটু বেশী মেমরি প্রকৃতপক্ষে কোন কারনের জন্য প্রয়োজন, 300 00:16:52,000 --> 00:16:57,000 এবং তাই কোনও কেউ ডান 16 অক্ষরের পরে আপনার চাঙ্গড় মেমরি ব্যবহার করছে, 301 00:16:57,000 --> 00:17:01,000 তাই আপনি যদি 17, 18, 19, যাই হোক না কেন, এটা যেমন একটি বড় চুক্তি না যেতে. 302 00:17:01,000 --> 00:17:04,000 এখন, কম্পিউটার, যদিও তা এক পর্যায়ে বিপর্যস্ত না, 303 00:17:04,000 --> 00:17:09,000 অন্য কোন কিছু অবশেষে বাইট নম্বর 17 বা 18 বা 19 ব্যবহার করতে পারে, 304 00:17:09,000 --> 00:17:14,000 যা আপনার তথ্য নির্দেশ করুন অতীব দীর্ঘ যদ্যপি যে আপনি সেখানে রাখা,, 305 00:17:14,000 --> 00:17:18,000 কিছু অন্যান্য ফাংশন দ্বারা পেতে সম্ভাব্য মুছে ফেলা হবে. 306 00:17:18,000 --> 00:17:21,000 এটা অক্ষত থাকা অগত্যা যাচ্ছে না, 307 00:17:21,000 --> 00:17:23,000 কিন্তু অগত্যা এটি একটি seg দোষ না কারণ হবে. 308 00:17:23,000 --> 00:17:26,000 কিন্তু এই ক্ষেত্রে, পরিশেষে আমি যথেষ্ট অক্ষর প্রদান 309 00:17:26,000 --> 00:17:29,000 মূলত আমি যে মেমরি আমার সেগমেন্ট সীমা ছাড়িয়ে, এবং bam, 310 00:17:29,000 --> 00:17:33,000 অপারেটিং সিস্টেম বলেন, "দুঃখিত, যে কোন ভাল, সেগমেন্টেশন ফল্ট." 311 00:17:33,000 --> 00:17:38,000 >> দিন এর এখন দেখুন কি যদি আমার এখানে অবশেষ নির্দেশিকা- 312 00:17:38,000 --> 00:17:40,000 বিজ্ঞপ্তি যে আমি এই ফাইলটি এখানে আছে, কোর. 313 00:17:40,000 --> 00:17:42,000 উল্লেখ্য, আবার এই একটি কোর ডাম্প বলা হয়. 314 00:17:42,000 --> 00:17:46,000 এটি মূলত একটি ফাইল যা আপনার প্রোগ্রাম এর মেমরি রয়েছে কন্টেন্ট 315 00:17:46,000 --> 00:17:48,000 সময়ে সময়ে তা ক্র্যাশ, 316 00:17:48,000 --> 00:17:51,000 এবং শুধু এখানে একটু চেষ্টা করুন যেমন আমাকে এখানে যান 317 00:17:51,000 --> 00:17:57,000 এবং scanf3 উপর সময় gdb এবং তারপর চালানোর একটি তৃতীয় যুক্তি নামক কোর নির্দিষ্ট, 318 00:17:57,000 --> 00:18:01,000 এবং এখানে লক্ষ্য করা যে যদি আমি কোড তালিকা, 319 00:18:01,000 --> 00:18:06,000 আমরা সময় gdb করা স্বাভাবিক হিসাবে সক্ষম এই প্রোগ্রামের মাধ্যমে হাঁটা শুরু করব, 320 00:18:06,000 --> 00:18:10,000 এবং আমি এটি চালানোর হিসাবে আমি আঘাত হিসাবে পদার্পণ কমান্ড এবং যত তাড়াতাড়ি পারেন সময় gdb- 321 00:18:10,000 --> 00:18:13,000 যত তাড়াতাড়ি আমি একটি বিশাল স্ট্রিং টাইপ পরে সম্ভাব্য বগী লাইন আঘাত, 322 00:18:13,000 --> 00:18:16,000 আমি আসলে এখানে এটি সনাক্ত করতে সক্ষম হবেন. 323 00:18:16,000 --> 00:18:19,000 আরো এই, যদিও, কোর ডাম্প মধ্যে শর্তাবলী অধ্যায় 324 00:18:19,000 --> 00:18:22,000 এবং চাই যাতে আপনি এমন অকর্মা কোর ডাম্প প্রায় ভিতরে পারেন 325 00:18:22,000 --> 00:18:27,000 এবং দেখতে পান কি লাইন প্রোগ্রাম আপনাকে ব্যর্থ হয়েছে. 326 00:18:27,000 --> 00:18:32,000 তারপর পয়েন্টার এবং ঠিকানাগুলি কোন প্রশ্ন? 327 00:18:32,000 --> 00:18:36,000 কারণ আজ, আমরা গ্রহণ জন্য দেয়া হয় যে এইসব জিনিস বিদ্যমান শুরু চলুন 328 00:18:36,000 --> 00:18:40,000 এবং আমরা জানি না ঠিক কি তারা. 329 00:18:40,000 --> 00:18:42,000 হ্যাঁ. 330 00:18:42,000 --> 00:18:46,000 >> [ছাত্র] কিভাবে আসতে আপনাকে একটি ampersand রাখতে হত না পরের অংশ- 331 00:18:46,000 --> 00:18:48,000 ভাল প্রশ্ন. 332 00:18:48,000 --> 00:18:51,000 কিভাবে আসা আমি একটি ampersand পরের অক্ষরে প্রকাশ করা অ্যারে হিসাবে আমি পূর্বে না 333 00:18:51,000 --> 00:18:53,000 আমাদের সাথে উদাহরণ অধিকাংশ? 334 00:18:53,000 --> 00:18:55,000 সংক্ষিপ্ত উত্তরটি অ্যারে হয় একটু বিশেষ. 335 00:18:55,000 --> 00:18:59,000 আপনি প্রায় আসলে হচ্ছে একটি ঠিকানা হিসাবে একটি বাফার মনে করতে পারেন, 336 00:18:59,000 --> 00:19:03,000 এবং শুধু তাই কেস করা যে গুরুবন্ধনী স্বরলিপি 337 00:19:03,000 --> 00:19:06,000 একটি সুবিধার্থে যাতে আমরা বন্ধনী 0, 1 বন্ধনী মধ্যে যেতে পারেন, 338 00:19:06,000 --> 00:19:10,000 বন্ধনী 2, যাও * নোটেশন ব্যবহার ছাড়াই. 339 00:19:10,000 --> 00:19:13,000 যে একটি সাদা মিথ্যা একটি বিট কারণ অ্যারে এবং পয়েন্টার 340 00:19:13,000 --> 00:19:17,000 সত্য হয়, সামান্য কিছুটা আলাদা, কিন্তু তারা সবসময় প্রায়ই কিন্তু না অদলবদল করে ব্যবহার করা যাবে. 341 00:19:17,000 --> 00:19:21,000 সংক্ষেপে, যখন একটি ফাংশন মেমরি চাঙ্গড় একটি পয়েন্টার হয় আশা, 342 00:19:21,000 --> 00:19:24,000 আপনি হয় পাস একটি ঠিকানা যে malloc দ্বারা উৎপন্ন হত এটা করতে পারেন, 343 00:19:24,000 --> 00:19:29,000 এবং আমরা দীর্ঘ আগে malloc আবার দেখুন, অথবা আপনি পাবেন একটি অ্যারের নামের এটি পাস করতে পারেন. 344 00:19:29,000 --> 00:19:32,000 আপনি অ্যারে সঙ্গে ampersand না কারণ তারা ইতিমধ্যেই না 345 00:19:32,000 --> 00:19:34,000 মূলত ঠিকানা চাই. 346 00:19:34,000 --> 00:19:36,000 এটা এক ব্যতিক্রম. 347 00:19:36,000 --> 00:19:39,000 বর্গাকার বন্ধনী জন্য তাদের বিশেষ. 348 00:19:39,000 --> 00:19:41,000 >> একটি ampersand আপনি পরের যাও বাফার করা যায়নি? 349 00:19:41,000 --> 00:19:43,000 . এই ক্ষেত্রে নেই 350 00:19:43,000 --> 00:19:46,000 এই যে কোণ ক্ষেত্রে কাজ কারণ, আবার না, হবে 351 00:19:46,000 --> 00:19:49,000 যেখানে অ্যারে হয় ঠিকানাগুলি পুরোপুরি এমন নয়. 352 00:19:49,000 --> 00:19:54,000 কিন্তু আমরা সম্ভবত যে আগে দীর্ঘ অন্যান্য উদাহরণ দিয়ে ফিরে পাবেন. 353 00:19:54,000 --> 00:19:56,000 চলুন এখানে একটি সমস্যা সমাধানের চেষ্টা করুন. 354 00:19:56,000 --> 00:20:00,000 আমরা একটি তথ্য কাঠামো, যা আমরা কিছু সময় একটি অ্যারে হিসাবে পরিচিত হয়েছে ব্যবহার করেছি আছে. 355 00:20:00,000 --> 00:20:02,000 একটা উদাহরণ হল, তাই আমরা ঠিক ছিল. 356 00:20:02,000 --> 00:20:04,000 কিন্তু অ্যারে কিছু upsides এবং downsides আছে. 357 00:20:04,000 --> 00:20:06,000 অ্যারেগুলির হয় সুন্দর কেন? 358 00:20:06,000 --> 00:20:11,000 এক দৌড় আপনি চান অ্যারে-সম্পর্কে অ্যারে চান-জিনিস যে আপনি কি? 359 00:20:11,000 --> 00:20:13,000 তাদের বিষয়ে সুবিধাজনক কি? বাধ্যকারী কি? 360 00:20:13,000 --> 00:20:18,000 কেন আমরা কখন প্রথম স্থানে তাদের পরিচয় করিয়ে দিতে? 361 00:20:18,000 --> 00:20:20,000 হাঁ. 362 00:20:20,000 --> 00:20:27,000 [ছাত্র] তারা অনেক তথ্য সংরক্ষণ, এবং আপনি একটি সম্পূর্ণ জিনিস ব্যবহার না করতে পারেন. 363 00:20:27,000 --> 00:20:29,000 আপনি একটি অধ্যায় ব্যবহার করতে পারেন. 364 00:20:29,000 --> 00:20:32,000 গুড, সঙ্গে একটি অ্যারের আপনি অনেক তথ্য সংরক্ষণ করতে পারেন, 365 00:20:32,000 --> 00:20:35,000 এবং আপনি তা সব ব্যবহার করার প্রয়োজন হবে না, যাতে আপনি overallocate করতে পারেন, 366 00:20:35,000 --> 00:20:39,000 যা সুবিধাজনক যদি আপনি আগে থেকে কিছু কিভাবে আশা অনেক জানি না হতে পারে. 367 00:20:39,000 --> 00:20:41,000 >> GetString একটি নিখুঁত উদাহরণ. 368 00:20:41,000 --> 00:20:44,000 GetString, আমাদের না, তার কোন ধারণা নেই কিভাবে অনেক অক্ষর আশা আছে, 369 00:20:44,000 --> 00:20:48,000 তাই সত্য যে আমরা সংলগ্ন মেমরির অংশ বরাদ্দ করতে পারেন ভাল. 370 00:20:48,000 --> 00:20:51,000 অ্যারেগুলির এছাড়াও একটি সমস্যা আমরা দেখেছি এখন কয়েক সপ্তাহ আগে সমাধান 371 00:20:51,000 --> 00:20:54,000 যেখানে আপনার কোড কিছু খুব দুর্বল পরিকল্পিত মধ্যে বর্তা যাও আরম্ভ করা হয়. 372 00:20:54,000 --> 00:20:57,000 পুনরাহ্বান যে আমি একজন ছাত্র গঠন নামক ডেভিড তৈরি, 373 00:20:57,000 --> 00:21:00,000 এবং তারপর যে আসলে ছিল একটি বিকল্প, যদিও, 374 00:21:00,000 --> 00:21:04,000 একটি পরিবর্তনশীল নামক নাম এবং অন্য পরিবর্তনশীল বলা হয়, আমি মনে করি, ঘর আছে, 375 00:21:04,000 --> 00:21:08,000 এবং অন্য পরিবর্তনশীল নামক আইডি কারণ যে বিবরণ আমি তখন অন্য কিছু পরিচয় করিয়ে দিতে চেয়েছিল 376 00:21:08,000 --> 00:21:11,000 প্রোগ্রাম Rob চান, অতএব আমি এক মিনিট অপেক্ষা করার সিদ্ধান্ত নিয়েছে, 377 00:21:11,000 --> 00:21:13,000 আমি এইসব ভেরিয়েবল নামান্তর প্রয়োজন. 378 00:21:13,000 --> 00:21:16,000 চলুন শুরু করা যাক খনি NAME1, ID1, house1 কল. 379 00:21:16,000 --> 00:21:20,000 চলুন শুরু করা যাক রব এর NAME2, house2, ID2 কল. 380 00:21:20,000 --> 00:21:22,000 কিন্তু কি টমি সম্পর্কে মিনিট অপেক্ষা করুন,? 381 00:21:22,000 --> 00:21:24,000 তারপর আমরা আরো তিনটি ভেরিয়েবলের ছিল. 382 00:21:24,000 --> 00:21:27,000 আমরা অন্য কারোর, ভেরিয়েবল চারটি সেট চালু. 383 00:21:27,000 --> 00:21:30,000 বিশ্বের নোংরা পেতে খুব তাড়াতাড়ি শুরু, 384 00:21:30,000 --> 00:21:33,000 তাই আমরা structs চালু, এবং কি এর একটি struct সম্পর্কে বাধ্যতামূলক? 385 00:21:33,000 --> 00:21:39,000 কি একটি সি struct আপনাকে কি? 386 00:21:39,000 --> 00:21:42,000 এটা সত্যিই কেবলা আজ. 387 00:21:42,000 --> 00:21:44,000 কি? >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] 388 00:21:44,000 --> 00:21:47,000 হাঁ, বিশেষত typedef আপনি একটি নতুন তথ্য টাইপ তৈরি করা যাবে, 389 00:21:47,000 --> 00:21:51,000 এবং struct, struct অভিব্যক্তি, আপনি encapsulate করতে পারবেন 390 00:21:51,000 --> 00:21:54,000 তথ্য ধারণার সাথে সম্পর্কিত একসঙ্গে টুকরা 391 00:21:54,000 --> 00:21:56,000 এবং তারপরে একটা ভালো কিছু ছাত্র তাদের কল. 392 00:21:56,000 --> 00:21:58,000 >> যে ছিল ভাল, কারণ এখন আমরা মডেল পারেন 393 00:21:58,000 --> 00:22:03,000 এর আরো অনেক কিছু সাজানোর ধারণার সামঞ্জস্যপূর্ণ একজন ছাত্র একটি পরিবর্তনশীল মধ্যে ধারণা 394 00:22:03,000 --> 00:22:07,000 বরং ইচ্ছামত এক একটি পংক্তি জন্য, একটি আইডি জন্য এক হচ্ছে, এবং তাই ঘোষণা. 395 00:22:07,000 --> 00:22:10,000 অ্যারেগুলির হয় সুন্দর, কারণ তারা আমাদের পরিষ্কার আমাদের কোড আরম্ভ করার অনুমতি দেয়. 396 00:22:10,000 --> 00:22:13,000 কিন্তু কি একটি অ্যারের এখন একটি downside? 397 00:22:13,000 --> 00:22:15,000 আপনি কি পারেন না? হাঁ. 398 00:22:15,000 --> 00:22:17,000 [ছাত্র] আপনি কিভাবে বড় এটা জানা আছে. 399 00:22:17,000 --> 00:22:19,000 আপনি কিভাবে বড় এটা জানা আছে, তাই ব্যাথা ধরনের. 400 00:22:19,000 --> 00:22:21,000 আপনি যারা পূর্বে প্রোগ্রামিং অভিজ্ঞতা সঙ্গে জানেন যে সব ভাষায় অনেক, 401 00:22:21,000 --> 00:22:24,000 জাভা ভালো, আপনি মেমরি একটি খণ্ড, বিশেষভাবে একটি অ্যারের জন্য অনুরোধ করতে পারেন, 402 00:22:24,000 --> 00:22:28,000 কিভাবে বড় হয় দৈর্ঘ্য, সম্পত্তি, তাই কথা বলতে সঙ্গে আপনি,, এবং যে সত্যিই সুবিধাজনক. 403 00:22:28,000 --> 00:22:32,000 সি, আপনি এমন কি একটি জেনেরিক শৃঙ্খলার strlen কল করতে পারবেন না 404 00:22:32,000 --> 00:22:35,000 strlen কারণ, শব্দ হিসাবে বোঝা শুধুমাত্র স্ট্রিং জন্য, 405 00:22:35,000 --> 00:22:39,000 এবং আপনাকে একটি স্ট্রিং এর কারণ এই প্রথার দ্বারা মানুষের চিন্তা করতে পারেন 406 00:22:39,000 --> 00:22:43,000 একটি \ 0, কিন্তু একটি অ্যারে হচ্ছে, আরো জেনেরিক, শুধুমাত্র মেমরির একটি খণ্ড. 407 00:22:43,000 --> 00:22:46,000 এটি যদি ints একটি শ্রেণীবিন্যাস, যাচ্ছে কিছু বিশেষ অক্ষর আছে এর না 408 00:22:46,000 --> 00:22:48,000 আপনার জন্য অপেক্ষা শেষে. 409 00:22:48,000 --> 00:22:50,000 আপনি একটি অ্যারের দ্বারা স্মরণে রাখতে হবে. 410 00:22:50,000 --> 00:22:54,000 একটি অ্যারের আরেকটি downside নিজেই GetString তার মাথা লালিত. 411 00:22:54,000 --> 00:22:59,000 একটি অ্যারের অন্য downside কি? 412 00:22:59,000 --> 00:23:01,000 স্যার, আপনি এবং সম্পর্কে আজ. 413 00:23:01,000 --> 00:23:04,000 [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> এটা কি? 414 00:23:04,000 --> 00:23:06,000 এই স্ট্যাকের উপর ঘোষিত এর. 415 00:23:06,000 --> 00:23:09,000 ঠিক আছে স্ট্যাক, ঘোষিত. কেন যে কি আপনি চান না? 416 00:23:09,000 --> 00:23:13,000 [ছাত্র] যেহেতু এটি পাতাগুলো ব্যবহৃত হয়. 417 00:23:13,000 --> 00:23:15,000 এটা পাতাগুলো ব্যবহৃত হয়. 418 00:23:15,000 --> 00:23:18,000 ঠিক আছে, আপনি যদি মেমরি বরাদ্দ করা একটি অ্যারে ব্যবহার, 419 00:23:18,000 --> 00:23:21,000 আপনি, উদাহরণস্বরূপ করতে পারেন না, কারণ এটি এটি স্ট্যাকের উপর এর প্রত্যাবর্তন. 420 00:23:21,000 --> 00:23:23,000 ঠিক আছে, যে এর একটি অসুবিধা. 421 00:23:23,000 --> 00:23:25,000 এবং কিভাবে আমার এক একটি অ্যারের সাথে অন্যান্য? 422 00:23:25,000 --> 00:23:28,000 আপনি একবার এটা বরাদ্দ, আপনি ধরনের মাতাল যদি আপনি আরও জায়গা দরকার 423 00:23:28,000 --> 00:23:30,000 যে অ্যারে আছে. 424 00:23:30,000 --> 00:23:34,000 >> তারপর আমরা চালু রিকল, malloc, যা দিয়েছে পরিবর্তনশীলরূপে মেমরি বরাদ্দ করার ক্ষমতা আমাদের,. 425 00:23:34,000 --> 00:23:37,000 যদি কি তবে আমরা চেষ্টা সর্বতোভাবে একটি আলাদা পৃথিবী? 426 00:23:37,000 --> 00:23:40,000 যদি আমরা এই সমস্যার একটি সমাধান চেয়েছিলেন দম্পতি 427 00:23:40,000 --> 00:23:45,000 তাই আমার পরিবর্তে আমরা পেন অবশ নিপতিত এখানে-করেনি 428 00:23:45,000 --> 00:23:51,000 ? কি যদি আমরা পরিবর্তে মূলত একটি বিশ্বের যে ভালো আর তৈরী করতে চান 429 00:23:51,000 --> 00:23:56,000 এটি একটি অ্যারের, এবং, অবশ্যই, এই ধরণের deteriorates একবার আমরা অ্যারের শেষ আঘাত, 430 00:23:56,000 --> 00:24:00,000 এবং এখন আমি আর অন্য কোনো পূর্ণসংখ্যা বা অন্য অক্ষরের জন্য স্থান আছে. 431 00:24:00,000 --> 00:24:03,000 , যদি আমরা ভাল ধরণের preemptively বলে কেন আমরা শিথিল না 432 00:24:03,000 --> 00:24:07,000 এই প্রয়োজন যে সমস্ত মেমরির অংশ এইসব সংলগ্ন ফিরে যাও ব্যাক করা, 433 00:24:07,000 --> 00:24:10,000 এবং কেন আমি যখন কোন int অথবা একটি গৃহস্থালির কাজ করা প্রয়োজন, না, 434 00:24:10,000 --> 00:24:12,000 শুধু তাদের জন্য এক দিতে স্থান সম্পর্কে? 435 00:24:12,000 --> 00:24:14,000 এবং যখন আমি অন্য কোনো প্রয়োজন, আমাকে আরেকটা স্থান দিতে, 436 00:24:14,000 --> 00:24:16,000 এবং যখন আমি অন্য কোনো প্রয়োজন, আমাকে আরেকটা স্থান দিতে. 437 00:24:16,000 --> 00:24:19,000 যা এখন সুবিধা হল যে যদি কারোর 438 00:24:19,000 --> 00:24:21,000 এখানে উপর মেমরি, কোন বড় চুক্তি লাগে. 439 00:24:21,000 --> 00:24:25,000 আমি এই মেমরি অতিরিক্ত মোটা টুকরা নিতে এখানে এবং তারপর এই এক পাবেন. 440 00:24:25,000 --> 00:24:28,000 >> এখন, শুধুমাত্র এখানে ধরা হয় যে প্রায় এই মতানুযায়ী আমি ভালো আছে 441 00:24:28,000 --> 00:24:30,000 একটি বিভিন্ন ভেরিয়েবল আভা. 442 00:24:30,000 --> 00:24:33,000 এই পাঁচটি পৃথক সম্ভাব্য ভেরিয়েবল ভালো মনে. 443 00:24:33,000 --> 00:24:36,000 কিন্তু আমরা যদি কি স্ট্রিং থেকে চুরি করা একটি ধারণা 444 00:24:36,000 --> 00:24:41,000 তদ্দ্বারা একরকম আমরা এইসব জিনিসগুলি নিয়ে একসাথে লিঙ্ক ধারণার দিক থেকে, এবং কি যদি আমি এই কি? 445 00:24:41,000 --> 00:24:44,000 এটা আমার খুব দুর্বল টানা তীর. 446 00:24:44,000 --> 00:24:46,000 কিন্তু অনুমান যে মেমরি এই অংশ প্রতিটি 447 00:24:46,000 --> 00:24:52,000 তীক্ষ্ন অন্যান্য যাও, এবং এই লোক, যারা তার ডান কোন ভাইবোন আছে, 448 00:24:52,000 --> 00:24:54,000 আছে যেমন তীর কোন. 449 00:24:54,000 --> 00:24:56,000 এই সত্যটি কি যুক্ত তালিকা নামক এর মধ্যে হয়. 450 00:24:56,000 --> 00:25:00,000 এটি একটি নতুন তথ্য কাঠামো, যা আমাদের মেমরি অঞ্চলে ধার্য করতে পারবেন, 451 00:25:00,000 --> 00:25:03,000 তারপর আরেকটি, তারপর আরেকটি, তারপর আরেকটি, কোন সময় আমরা চাই 452 00:25:03,000 --> 00:25:07,000 একটি প্রোগ্রাম সময়, এবং আমরা মনে রাখবেন, যে তারা সব একরকম সম্পর্কিত 453 00:25:07,000 --> 00:25:11,000 আক্ষরিক chaining দ্বারা তাদের একসঙ্গে, এবং আমরা যে কি pictorially এখানে সঙ্গে তীর. 454 00:25:11,000 --> 00:25:15,000 কিন্তু কোড, কি ব্যবস্থার মাধ্যমে আপনি সংযোগ করতে পারেনি যা একরকম হবে, 455 00:25:15,000 --> 00:25:20,000 প্রায় লেগেছে শয়তান, অন্য এক খণ্ড খণ্ড? 456 00:25:20,000 --> 00:25:22,000 আমরা একটি পয়েন্টার ব্যবহার, অধিকার হতে পারে? 457 00:25:22,000 --> 00:25:25,000 কারণ যে উপরের বাম তীর বর্গ থেকে যাচ্ছে, 458 00:25:25,000 --> 00:25:31,000 এই এই এক লোক এখানে, এই বর্গক্ষেত্র এর ভিতর থাকতে পারে 459 00:25:31,000 --> 00:25:34,000 কিছু ঠিক ints না, শুধু কিছু টুকিটাকি কাজ না, কিন্তু যদি আমি আসলে বরাদ্দ 460 00:25:34,000 --> 00:25:37,000 একটু অতিরিক্ত স্থান যাতে এখন, 461 00:25:37,000 --> 00:25:41,000 প্রতিটি মেমরির অংশ আমার মধ্যে, যদিও এই সম্পর্কে কত খরচ হবে, 462 00:25:41,000 --> 00:25:45,000 এখন দেখায় একটু আরো আয়তক্ষেত্রাকার যেখানে মেমরির অংশ এক 463 00:25:45,000 --> 00:25:47,000 একটি নম্বর জন্য ব্যবহৃত হয়, যেমন সংখ্যা 1, 464 00:25:47,000 --> 00:25:50,000 এবং তারপর যদি এই লোক সংখ্যা 2 সঞ্চয়, 465 00:25:50,000 --> 00:25:52,000 এই মেমরি অন্যান্য অঞ্চলে একটি তীর জন্য ব্যবহৃত হয়, 466 00:25:52,000 --> 00:25:54,000 অথবা আরো concretely, একটি পয়েন্টার. 467 00:25:54,000 --> 00:25:59,000 এবং আমি অনুমান এখানে ওভার 3 নম্বর যখন আমি এই যে লোক এ নির্দেশ ব্যবহার সঞ্চয়, 468 00:25:59,000 --> 00:26:02,000 এবং এখন এই লোক, আমি কি অনুমান আমি কেবল তিনটি মেমরি যেমন অংশ করতে চান. 469 00:26:02,000 --> 00:26:05,000 আমি যে মাধ্যমে একটি লাইন, আঁকা নাল ইঙ্গিত করব. 470 00:26:05,000 --> 00:26:07,000 কোন অতিরিক্ত অক্ষর পর্যন্ত. 471 00:26:07,000 --> 00:26:10,000 >> প্রকৃতপক্ষে, এই ভাবে আমরা রূপায়ণকারী যেতে পারবেন 472 00:26:10,000 --> 00:26:12,000 কিছু যে একটি তালিকা সংযুক্ত বলা হচ্ছে. 473 00:26:12,000 --> 00:26:18,000 একটি লিঙ্ক তালিকা একটি নতুন তথ্য গঠন, এবং এটি একটি দিকে পাথর পদবিন্যাস 474 00:26:18,000 --> 00:26:21,000 অনেক কল্পনাকারী ডাটা স্ট্রাকচার যে সমস্যার সমাধান আরম্ভ করার জন্য 475 00:26:21,000 --> 00:26:23,000 বরাবর ফেসবুক টাইপ সমস্যার লাইন এবং Google-এর টাইপ সমস্যা 476 00:26:23,000 --> 00:26:26,000 যেখানে আপনি বিপুল তথ্য সেট আছে, এবং তা আর মধ্যেও 477 00:26:26,000 --> 00:26:29,000 যাও contiguously সব সঞ্চয় এবং রৈখিক অনুসন্ধান মত ব্যবহার 478 00:26:29,000 --> 00:26:31,000 অথবা এমনকি বাইনারি অনুসন্ধান মত. 479 00:26:31,000 --> 00:26:33,000 আপনি আরও ভাল করে চলমান সময় চান. 480 00:26:33,000 --> 00:26:37,000 আসলে, এক পবিত্র Grails আমরা পরে এই সপ্তাহে বা পরের সম্পর্কে কথা বলতে পারবেন 481 00:26:37,000 --> 00:26:41,000 একটি অ্যালগরিদম, যার চলমান সময় ধ্রুবক. 482 00:26:41,000 --> 00:26:44,000 অন্য কথায়, সবসময় সময় একই পরিমাণ কোন ব্যাপার লাগে 483 00:26:44,000 --> 00:26:47,000 কিভাবে ইনপুট বড় হয়, এবং যে প্রকৃতপক্ষে করা বাধ্যতামূলক হবে, 484 00:26:47,000 --> 00:26:49,000 এমনকি আরো বেশী, তাই কিছু লগারিদমিক. 485 00:26:49,000 --> 00:26:51,000 কি পর্দায় এটি এখানে কেন? 486 00:26:51,000 --> 00:26:55,000 Rectangles প্রত্যেকটি ঠিক কি আমি হাত দ্বারা সৃষ্টি. 487 00:26:55,000 --> 00:26:59,000 কিন্তু জিনিস সব বাম উপায় হল একটি বিশেষ পরিবর্তনশীল. 488 00:26:59,000 --> 00:27:02,000 এটি একটি একক পয়েন্টার হতে যাচ্ছে কারণ এক gotcha এর 489 00:27:02,000 --> 00:27:04,000 সঙ্গে একটি লিঙ্ক তালিকা, এই জিনিষ হিসাবে বলা হয়, 490 00:27:04,000 --> 00:27:09,000 আপনি যে লিঙ্ক তালিকার এক প্রান্ত সম্মুখের স্তব্ধ হয়ে আছে. 491 00:27:09,000 --> 00:27:13,000 >> একটি স্ট্রিং এর মতো, আপনি প্রথম গৃহস্থালির কাজ ঠিকানা জানা আছে. 492 00:27:13,000 --> 00:27:15,000 সংযুক্ত তালিকার জন্য একই চুক্তি. 493 00:27:15,000 --> 00:27:19,000 আপনি মেমরি প্রথম খণ্ড ঠিকানা জানা আছে 494 00:27:19,000 --> 00:27:25,000 কারণ থেকে থাকে, আপনার প্রতি অন্য এক পৌঁছতে পারে. 495 00:27:25,000 --> 00:27:27,000 Downside. 496 00:27:27,000 --> 00:27:30,000 মূল্য কি আমরা একটি পরিবর্তনশীল থাকার জন্য এই বহুমুখিতা অর্থপ্রদানকারী 497 00:27:30,000 --> 00:27:34,000 বৃহদাকার তথ্য কাঠামো, যা কখনও যদি আমরা আরো মেমরি প্রয়োজন, সূক্ষ্ম, 498 00:27:34,000 --> 00:27:37,000 শুধু এক খণ্ড এবং আরো বরাদ্দ করা একটি পয়েন্টার থেকে আঁকা 499 00:27:37,000 --> 00:27:39,000 তালিকার নতুন লেঙ্গুড় পুরানো? 500 00:27:39,000 --> 00:27:41,000 হাঁ. 501 00:27:41,000 --> 00:27:43,000 [ছাত্র] প্রায় দ্বিগুণ হিসাবে অনেক জায়গা নেয়. 502 00:27:43,000 --> 00:27:45,000 এটা দুবার হিসাবে অনেক জায়গা নেয়, যাতে স্পষ্টভাবে এর একটি downside, এবং আমরা এই দেখা করেছি 503 00:27:45,000 --> 00:27:48,000 মধ্যবর্তী সময় এবং স্থান এবং নমনীয়তা আগে tradeoff 504 00:27:48,000 --> 00:27:51,000 যেখানে এখন দ্বারা, আমরা প্রয়োজন এই সংখ্যার প্রতিটি জন্য 32 বিট না. 505 00:27:51,000 --> 00:27:57,000 আমরা সত্যিই 64 নম্বর জন্য, 32 এবং 32 পয়েন্টার জন্য প্রয়োজন. 506 00:27:57,000 --> 00:27:59,000 কিন্তু মনে হয়, আমার RAM-র 2 গিগাবাইট আছে. 507 00:27:59,000 --> 00:28:02,000 অন্য 32 বিট এখানে এবং এখানে যোগ করার পদ্ধতি যে একটি চুক্তি বড় মনে হয় না. 508 00:28:02,000 --> 00:28:05,000 কিন্তু বৃহৎ তথ্য সেটের জন্য, স্পষ্টভাবে এটা আক্ষরিক হিসাবে দুইবার অনেক অ্যাডস আপ. 509 00:28:05,000 --> 00:28:09,000 অন্য downside কি এখন এর, বা কি বৈশিষ্ট্য আমরা পরিত্যাগ করা, 510 00:28:09,000 --> 00:28:12,000 যদি আমরা একটি লিঙ্ক তালিকা এবং হইনি একটি অ্যারের সঙ্গে জিনিসের তালিকা প্রতিনিধিত্ব করেন? 511 00:28:12,000 --> 00:28:14,000 [ছাত্র] আপনি পিছন দিকে এটি তর্ক করতে পারবেন না. 512 00:28:14,000 --> 00:28:16,000 আপনি পিছন দিকে এটি তর্ক না করতে পারেন, যাতে আপনি ধরনের মাতাল যদি আপনি হাঁটা করছি 513 00:28:16,000 --> 00:28:19,000 বামদিক থেকে ডানদিকে লুপ বা করার জন্য একটি লুপ ব্যবহার 514 00:28:19,000 --> 00:28:21,000 এবং তারপর আপনি বুঝতে, "ওহ, আমি তালিকার শুরুতে ফিরে যেতে চাই." 515 00:28:21,000 --> 00:28:26,000 কারণ আপনি এই পয়েন্টার বাম থেকে ডানে শুধুমাত্র হইনি হিসাবে তীর চিহ্ন হতে পারে এবং এ যান. 516 00:28:26,000 --> 00:28:29,000 >> এখন, আপনি অন্য পরিবর্তনশীল দিয়ে তালিকা শুরু মনে রাখতে পারে, 517 00:28:29,000 --> 00:28:31,000 কিন্তু যে এর একটি জটিলতা মন রাখতে. 518 00:28:31,000 --> 00:28:35,000 একটি অ্যারের, সেটা ব্যাপার নয় আপনি কতদূর যান, সবসময় কি বিয়োগ, বিয়োগ, বিয়োগ, বিয়োগ করতে পারেন 519 00:28:35,000 --> 00:28:37,000 এবং সেখান হইতে আপনি এসেছিলেন থেকে ফিরে যান. 520 00:28:37,000 --> 00:28:40,000 অন্য downside কি এখানে? হাঁ. 521 00:28:40,000 --> 00:28:43,000 [শ্রবণাতীত ছাত্র প্রশ্ন] 522 00:28:43,000 --> 00:28:47,000 আপনি তাই, আপনি করতে পারে নি আসলে করেছি শুধুমাত্র একটি ডাটা স্ট্রাকচার নামক একটি তালিকা দোকর লিঙ্ক প্রস্তাব, 523 00:28:47,000 --> 00:28:50,000 এবং সত্যিই, আপনি অন্য পয়েন্টার এই rectangles প্রতিটি যোগ দিন 524 00:28:50,000 --> 00:28:53,000 যে অন্যান্য অভিমুখ যায়, যা সম্পূর্ণ বিপর্যস্ত 525 00:28:53,000 --> 00:28:55,000 হয় এখন আপনি পিছনে, তর্ক করতে পারেন, 526 00:28:55,000 --> 00:28:59,000 যা downside এখন আপনাকে অনেক মেমরি হিসাবে ব্যবহার করছি তিনবার হিসাবে আমরা ব্যবহার 527 00:28:59,000 --> 00:29:04,000 এবং এছাড়াও কোড শর্তাবলী জটিলতা যোগ আপনি ডান এটি পেতে লিখুন আছে. 528 00:29:04,000 --> 00:29:08,000 কিন্তু এই সমস্ত সম্ভবত খুব যুক্তিসঙ্গত tradeoffs, যদি উলটাপালটা হয় আরো গুরুত্বপূর্ণ. 529 00:29:08,000 --> 00:29:10,000 হাঁ. 530 00:29:10,000 --> 00:29:12,000 [ছাত্র] এছাড়াও আপনি একটি 2D যুক্ত তালিকা থাকতে পারে না. 531 00:29:12,000 --> 00:29:16,000 গুড, সত্যিই আপনি একটা 2D লিঙ্ক তালিকা থাকতে পারে না. 532 00:29:16,000 --> 00:29:18,000 আপনি করতে পারে. এটা প্রায় হিসাবে একটি অ্যারে হিসাবে সহজ না. 533 00:29:18,000 --> 00:29:21,000 একটি অ্যারের ভালো লেগেছে, আপনাকে খোলা বন্ধনী, বদ্ধ বন্ধনী, খোলা বন্ধনী, বন্ধনী বন্ধ করবেন, 534 00:29:21,000 --> 00:29:23,000 এবং আপনি কিছু 2-মাত্রিক গঠন পেতে. 535 00:29:23,000 --> 00:29:26,000 আপনি একটি 2-মাত্রিক লিঙ্ক তালিকা বাস্তবায়ন হতে পারে 536 00:29:26,000 --> 00:29:29,000 যদি আপনি অ্যাড হিসাবে আপনি এই জিনিষ প্রতিটি তৃতীয় পয়েন্টার-একটি প্রস্তাব, না 537 00:29:29,000 --> 00:29:34,000 এবং আপনি যদি আপনার অন্য তালিকা সম্পর্কে মনে 3D শৈলী আসছে 538 00:29:34,000 --> 00:29:40,000 পর্দা থেকে আমাদের, যা শুধু কিছু বাছাই করা অন্য চেন. 539 00:29:40,000 --> 00:29:45,000 আমরা না, কিন্তু এটি খোলা বন্ধনী, বর্গাকার বন্ধনী টাইপ হিসাবে হিসাবে সহজ না পারে. হাঁ. 540 00:29:45,000 --> 00:29:48,000 [শ্রবণাতীত ছাত্র প্রশ্ন] 541 00:29:48,000 --> 00:29:50,000 গুড, তাই এই একটি বাস্তব পদাঘাতকারী. 542 00:29:50,000 --> 00:29:54,000 >> এই আলগোরিদিম যা আমরা, বেশী ভালো উহু, বাইনারি অনুসন্ধান pined করেছি, 543 00:29:54,000 --> 00:29:57,000 আপনি বোর্ডে সংখ্যার একটি অ্যারের অনুসন্ধান করতে পারেন 544 00:29:57,000 --> 00:30:01,000 অথবা একটি ফোন বই এত আরো দ্রুত যদি আপনি ব্যবহার এবং বিভক্ত করা জিতা 545 00:30:01,000 --> 00:30:05,000 এবং একটি বাইনারি অনুসন্ধান অ্যালগোরিদম, কিন্তু বাইনারি অনুসন্ধান দুই ধারনাগুলো প্রয়োজন. 546 00:30:05,000 --> 00:30:09,000 এক, যে তথ্য অনুসারে সাজানো ছিল. 547 00:30:09,000 --> 00:30:11,000 এখন, সম্ভবতঃ আমরা রাখা এই অনুসারে বাছাই করতে পারেন, 548 00:30:11,000 --> 00:30:14,000 তাই হয়তো যে, কিন্তু কোনো উদ্বেগ না বাইনারি অনুসন্ধান এছাড়াও অধিকৃত 549 00:30:14,000 --> 00:30:18,000 আপনি যে সংখ্যার তালিকা র্যান্ডম এক্সেস ছিল, 550 00:30:18,000 --> 00:30:21,000 এবং একটি অ্যারের আপনি রেন্ডোম অ্যাকসেস করতে সক্ষম হবেন, এবং দ্বারা র্যান্ডম এক্সেস, 551 00:30:21,000 --> 00:30:24,000 আমি বলতে চাচ্ছি আপনি যদি একটি অ্যারের দেওয়া করছেন কত সময়, এটা আপনার লাগবে 552 00:30:24,000 --> 00:30:26,000 বন্ধনী 0 পেতে? 553 00:30:26,000 --> 00:30:29,000 এক অপারেশন, আপনি [0] ব্যবহার করে এবং আপনি অধিকার আছে. 554 00:30:29,000 --> 00:30:33,000 কতগুলি পদক্ষেপ এটা অবস্থান 10 পেতে সময় লাগবে? 555 00:30:33,000 --> 00:30:36,000 এক ধাপ, আপনি ঠিক [10] এ যান এবং সেখানে আপনি হন. 556 00:30:36,000 --> 00:30:40,000 বিপরীতভাবে, একবার আপনি কিভাবে একটি লিঙ্ক তালিকায় 10th পূর্ণসংখ্যা যাও পেতে পারি? 557 00:30:40,000 --> 00:30:42,000 আপনি শুরুতে শুরু আছে কারণ শুধুমাত্র আপনি মনে করছেন 558 00:30:42,000 --> 00:30:45,000 একটি লিঙ্ক তালিকা শুধু একটি স্ট্রিং ভালো শুরুতে, মনে হচ্ছে 559 00:30:45,000 --> 00:30:48,000 তার প্রথম গৃহস্থালির কাজ ঠিকানা দ্বারা, এবং যে 10 int-খুঁজে পায় 560 00:30:48,000 --> 00:30:53,000 অথবা যে একটি স্ট্রিং মধ্যে 10 অক্ষর, আপনি পুরো জঘন্য জিনিস অনুসন্ধান আছে. 561 00:30:53,000 --> 00:30:55,000 >> আবার, আমরা আমাদের সব সমস্যার সমাধান করছি না. 562 00:30:55,000 --> 00:31:00,000 আমরা নতুন কিছু করছি পরিচায়ক, কিন্তু এটি কি আপনার জন্য ডিজাইন করার চেষ্টা করছি উপর নির্ভর করে. 563 00:31:00,000 --> 00:31:04,000 এই রূপায়ণকারী নিরিখে আমরা যে ছাত্র কাঠামো থেকে একটি ধারণা ধার নিতে পারেন. 564 00:31:04,000 --> 00:31:07,000 সিনট্যাক্স এখন ছাড়া খুব অনুরূপ,, একটি সামান্য ধারণা আরো বিমূর্ত 565 00:31:07,000 --> 00:31:09,000 তুলনায় ঘর এবং নাম এবং আইডি. 566 00:31:09,000 --> 00:31:13,000 কিন্তু আমি উত্থাপন করা যে আমরা একটি সি ডাটা স্ট্রাকচার পারে 567 00:31:13,000 --> 00:31:17,000 যে নোড বলা হয়, হিসাবে স্লাইডে শেষ কথা সুপারিশ, 568 00:31:17,000 --> 00:31:21,000 একটি নোডের অভ্যন্তরে, এবং একটি নোডের মধ্যে শুধুমাত্র একটি কম্পিউটার বিজ্ঞান মধ্যে জেনেরিক ধারক. 569 00:31:21,000 --> 00:31:25,000 এটি একটি বৃত্ত অথবা একটি বর্গক্ষেত্র বা আয়তক্ষেত্র হিসাবে আমরা সম্পন্ন করেছি হিসাবে সাধারণত এর টানা. 570 00:31:25,000 --> 00:31:27,000 এবং এই তথ্য কাঠামো, আমরা কোন int, পা আছে, 571 00:31:27,000 --> 00:31:29,000 যাতে এর সংখ্যা আমি ধারণ করতে চান. 572 00:31:29,000 --> 00:31:36,000 কিন্তু কি এই দ্বিতীয় লাইন, struct নোড * পরের? 573 00:31:36,000 --> 00:31:40,000 কেন এই সঠিক, বা কি ভূমিকা আছে এই জিনিস খেলা, 574 00:31:40,000 --> 00:31:42,000 যদিও এটি প্রথম নজরে কিছুটা রহস্যময়? 575 00:31:42,000 --> 00:31:44,000 হাঁ. 576 00:31:44,000 --> 00:31:46,000 [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] 577 00:31:46,000 --> 00:31:50,000 ঠিক তাই, এর spoils * সাজানোর যে এটা কিছু ধরণের একটি পয়েন্টার. 578 00:31:50,000 --> 00:31:53,000 এই পয়েন্টার নাম হচ্ছে ইচ্ছামত পরবর্তী, 579 00:31:53,000 --> 00:32:00,000 কিন্তু আমরা কিছু বলা যেতে পারে এটা আমরা চাই, কিন্তু কি আছে এই পয়েন্টার বিন্দু? 580 00:32:00,000 --> 00:32:03,000 [ছাত্র] আরেকটি নোড. >> যথাযথভাবে, এটি অন্য ধরনের নোডের স্থানটিকে. 581 00:32:03,000 --> 00:32:05,000 >> এখন, এই হল সি একটি কৌতুহল সাজান 582 00:32:05,000 --> 00:32:09,000 পুনরাহ্বান যে একটি সি কম্পাইলার নীচে শীর্ষ দ্বারা, পড়া বাকি অধিকার হয়, 583 00:32:09,000 --> 00:32:13,000 যার মানে যদি এই হল একটু কি আমরা ছাত্র সঙ্গে কি থেকে পৃথক. 584 00:32:13,000 --> 00:32:16,000 যখন আমরা একটি ছাত্র সংজ্ঞায়িত করা হয়, আসলে আমরা সেখানে রাখা হয়নি একটি শব্দ না. 585 00:32:16,000 --> 00:32:18,000 এটা ঠিক বলেছেন typedef. 586 00:32:18,000 --> 00:32:20,000 তারপর আমরা int-আইডি, স্ট্রিং নাম, স্ট্রিং ঘর ছিল, 587 00:32:20,000 --> 00:32:23,000 এবং তারপর struct নীচে ছাত্র. 588 00:32:23,000 --> 00:32:26,000 এই ঘোষণার একটি সামান্য ভিন্ন কারণ, 589 00:32:26,000 --> 00:32:28,000 আবার, C কম্পাইলার একটি সামান্য বোবা. 590 00:32:28,000 --> 00:32:30,000 এটা কেবল এর উপরে নীচে পড়া যাচ্ছে, 591 00:32:30,000 --> 00:32:33,000 তাই এটি যদি 2nd লাইন এখানে পৌছানোর 592 00:32:33,000 --> 00:32:37,000 যেখানে পরবর্তী ঘোষণা এবং এটি সূচিত হয়, উহু, এখানে একটি পরিবর্তনশীল নামক পরের. 593 00:32:37,000 --> 00:32:39,000 এটা একটা struct নোডের একটি পয়েন্টার. 594 00:32:39,000 --> 00:32:42,000 কম্পাইলার কি একটি নোড struct বুঝতে হবে? 595 00:32:42,000 --> 00:32:44,000 আমি এই জিনিস আগে শুনিনি কখনও করেছি, 596 00:32:44,000 --> 00:32:47,000 কারণ অন্যথায় শব্দ নোডের প্রদর্শিত হতে পারে 597 00:32:47,000 --> 00:32:49,000 নিচ পর্যন্ত, তাই এই অতিরেক নেই. 598 00:32:49,000 --> 00:32:53,000 আপনি এখানে struct নোড বলার আছে, যা আপনি পরে খাটো করতে পারেন 599 00:32:53,000 --> 00:32:56,000 নিচে এখানে ধন্যবাদ typedef যাও, কিন্তু এই হল কারণ 600 00:32:56,000 --> 00:33:02,000 আমরা ভিতরে গঠন কাঠামো নিজেই উল্লেখ করা হয়. 601 00:33:02,000 --> 00:33:05,000 এটা এক gotcha আছে. 602 00:33:05,000 --> 00:33:07,000 >> কিছু মজার সমস্যা উঠা যাচ্ছে. 603 00:33:07,000 --> 00:33:09,000 আমরা সংখ্যার একটি তালিকা আছে. কিভাবে আমরা না তা সন্নিবেশ? 604 00:33:09,000 --> 00:33:11,000 কীভাবে আমরা এটি অনুসন্ধান? আমরা কিভাবে এটা থেকে মুছে দিতে চান? 605 00:33:11,000 --> 00:33:13,000 বিশেষ করে এখন যে আমরা এই পয়েন্টার সমস্ত পরিচালনা আছে. 606 00:33:13,000 --> 00:33:15,000 আপনি চিন্তা পয়েন্টার ছিল মন-নমন কতকাংশে 607 00:33:15,000 --> 00:33:17,000 যখন আপনি ছিল তাদের মধ্যে একজন মাত্র এটা কোন int পড়ার চেষ্টা. 608 00:33:17,000 --> 00:33:20,000 এখন আমরা একটি সম্পূর্ণ তালিকা এর মূল্য নিপূণভাবে আছে. 609 00:33:20,000 --> 00:33:22,000 কেন আমাদের 5 মিনিটের বিরতি নিতে আমরা এখানে না, এবং তারপর আমরা আনা হবে 610 00:33:22,000 --> 00:33:34,000 উপর পর্যায় পর্যন্ত কিছু ভাবেন যে ঠিক না. 611 00:33:34,000 --> 00:33:36,000 >> C হল আরো অনেক মজার যখন এটি অভিনীত হয়. 612 00:33:36,000 --> 00:33:39,000 আক্ষরিক কে প্রথম হতে চান? 613 00:33:39,000 --> 00:33:41,000 ঠিক আছে, উপরে আসা. আপনি প্রথম. 614 00:33:41,000 --> 00:33:44,000 চান কে 9 হবে? ঠিক আছে, 9. 615 00:33:44,000 --> 00:33:46,000 কেমন 9? 17? 616 00:33:46,000 --> 00:33:51,000 একটু এখানে উপদল. 22 যে সামনের সারিতে এবং 26. 617 00:33:51,000 --> 00:33:53,000 এবং সেটা কিভাবে সম্পর্কে কেউ ওখানে এ তীক্ষ্ন করা হচ্ছে. 618 00:33:53,000 --> 00:33:57,000 আপনি 34. ঠিক আছে, তার উপরে 34, আসা. 619 00:33:57,000 --> 00:33:59,000 প্রথম ওইদিকে. ঠিক আছে, আপনি না চারটি. 620 00:33:59,000 --> 00:34:01,000 এবং যারা আমরা কি 9 জন্য বলে? 621 00:34:01,000 --> 00:34:04,000 9 আমাদের কে? 622 00:34:04,000 --> 00:34:07,000 সত্যিই কে 9 হতে চায়? সমস্ত অধিকার, চলো, 9 হতে. 623 00:34:07,000 --> 00:34:10,000 আমরা শুরু করছি. 624 00:34:10,000 --> 00:34:13,000 34, আমরা দেখা ওইখানে পাবেন. 625 00:34:13,000 --> 00:34:17,000 প্রথম অংশ নিজের মত চেহারা করা হয়. 626 00:34:17,000 --> 00:34:21,000 26, 22, 17, ভাল. 627 00:34:21,000 --> 00:34:25,000 যদি আপনি পাশ দাঁড়াবার জন্য বন্ধ, কারণ আমরা একটি মুহূর্ত আপনাকে malloc চলুন পারেন. 628 00:34:25,000 --> 00:34:29,000 >> ভাল, ভাল. 629 00:34:29,000 --> 00:34:32,000 ঠিক আছে, চমৎকার, তাই এর প্রশ্ন এখানে কয়েক জিজ্ঞাসা করা যাক. 630 00:34:32,000 --> 00:34:34,000 এবং প্রকৃতপক্ষে, কি আপনার নাম? >> অনিতা. 631 00:34:34,000 --> 00:34:37,000 অনিতা, ঠিক আছে, এখানে উপর চলো. 632 00:34:37,000 --> 00:34:41,000 অনিতা আমাদের ধরণের প্রথম মধ্যে সমাধান করা মোটামুটি সহজ প্রশ্ন এক সাহায্য যাচ্ছে, 633 00:34:41,000 --> 00:34:44,000 যা আপনি কিভাবে করবেন কিনা বা না একটি মূল্য তালিকা হয় খুঁজে পেতে? 634 00:34:44,000 --> 00:34:48,000 এখন, প্রথম লক্ষ্য করা যে, এখানে প্রতিনিধিত্ব দ্বারা লুকাস, 635 00:34:48,000 --> 00:34:52,000 একটি সামান্য ভিন্ন, এবং তাই কাগজ তার অংশ ইচ্ছাকৃতভাবে পার্শ্বাভিমুখ 636 00:34:52,000 --> 00:34:55,000 কারণ এটা না এবং আপ নিতে অনেক বিট হিসাবে না বেশ লম্বা হইনি, 637 00:34:55,000 --> 00:34:58,000 যদিও টেকনিক্যালি সে কাগজ একই আকার মাত্র আবর্তিত হয়েছে. 638 00:34:58,000 --> 00:35:01,000 কিন্তু তিনি কিছুটা আলাদা যে তিনি একটা পয়েন্টার জন্য শুধুমাত্র 32 বিট, 639 00:35:01,000 --> 00:35:05,000 এবং এই সব না হয় 64 বিট, অর্ধেক যার মধ্যে একটি সংখ্যা, যার অর্দ্ধ্বেক একটি পয়েন্টার. 640 00:35:05,000 --> 00:35:08,000 কিন্তু পয়েন্টার, তাই ফোটানো হয় না যদি না আপনি কিছুটা awkwardly পারা 641 00:35:08,000 --> 00:35:12,000 আপনার বাম হাত ব্যক্তি পরের আপনাকে এ নির্দেশ ব্যবহার. 642 00:35:12,000 --> 00:35:14,000 এবং আপনি নম্বর 34. আপনার নাম কি? 643 00:35:14,000 --> 00:35:16,000 Ari. 644 00:35:16,000 --> 00:35:19,000 Ari, তাই আসলে, আপনার ডান হাতে কাগজ, রাখা এবং বাঁ হাত সোজা নিচে চলে যায়. 645 00:35:19,000 --> 00:35:21,000 আপনি বাম দিকের প্রতিনিধিত্বকারী নাল. 646 00:35:21,000 --> 00:35:24,000 >> এখন আমাদের মানুষের ছবি খুব সামঞ্জস্যপূর্ণ. 647 00:35:24,000 --> 00:35:26,000 আসলে এই পয়েন্টার কিভাবে কাজ. 648 00:35:26,000 --> 00:35:29,000 এবং যদি আপনি এই ভাবে কিছুক্ষন scrunch তাই আমি আপনার উপায় না পারেন. 649 00:35:29,000 --> 00:35:34,000 অনিতা এখানে, আমার 22 নম্বর খুঁজতে, 650 00:35:34,000 --> 00:35:40,000 কিন্তু অধিষ্ঠিত কাগজের টুকরা মানুষের না পর্যন্ত বাধ্যতা অনুমান, 651 00:35:40,000 --> 00:35:43,000 কিন্তু এই একটি তালিকা, এবং আপনি শুধুমাত্র লুকাস সঙ্গে শুরু করতে 652 00:35:43,000 --> 00:35:46,000 কারণ তিনি আক্ষরিক প্রথম পয়েন্টার. 653 00:35:46,000 --> 00:35:51,000 মনে করুন আপনি নিজেকে একজন পয়েন্টার, এবং তাই খুব আপনি কিছু এ নির্দেশ করার ক্ষমতা আছে. 654 00:35:51,000 --> 00:35:56,000 কেন আপনি ঠিক কি নির্দেশ করা হয় লুকাস নির্দেশ দ্বারা শুরু হয় না? 655 00:35:56,000 --> 00:35:58,000 গুড, এবং আমাকে এখানে উপর এই আইন পাস করা. 656 00:35:58,000 --> 00:36:04,000 শুধু আলোচনার জন্য দোহাই, আমাকে একটি ফাঁকা পাতা বৈঠাচালনা এখানে আপ. 657 00:36:04,000 --> 00:36:06,000 আপনি কিভাবে আপনার নাম? বানান >> অনিতা. 658 00:36:06,000 --> 00:36:08,000 ঠিক আছে, অনিতা. 659 00:36:08,000 --> 00:36:18,000 চলুন শুরু করা যাক নোড * anita = Lucas বলে. 660 00:36:18,000 --> 00:36:22,000 ভাল, আমরা আপনাকে Lucas কল করা উচিত নয়. আমরা আপনাকে প্রথম ডাকা উচিত. 661 00:36:22,000 --> 00:36:25,000 কেন আসলে বাস্তবতা এখানে সঙ্গে সামঞ্জস্যপূর্ণ হয় এই? 662 00:36:25,000 --> 00:36:27,000 প্রথম ওয়ান, ইতিমধ্যেই বিদ্যমান. 663 00:36:27,000 --> 00:36:30,000 প্রথম সম্ভবতঃ করেনি বরাদ্দ কোথাও আপ করা হয়েছে এখানে. 664 00:36:30,000 --> 00:36:35,000 নোড * প্রথম, এবং এটি করা হয়েছে একটি তালিকা একরকম বরাদ্দ. 665 00:36:35,000 --> 00:36:37,000 আমি কিভাবে যে কি আমি জানি না. যা কোনভাবে আগে ক্লাস শুরু. 666 00:36:37,000 --> 00:36:40,000 এই মানুষের লিঙ্ক তালিকা তৈরি হয়েছে. 667 00:36:40,000 --> 00:36:44,000 এবং এখন গল্প-এ এই সমস্ত ফেসবুকে যাচ্ছে দৃশ্যত এই পয়েন্ট পরে- 668 00:36:44,000 --> 00:36:49,000 গল্পের এই পর্যায়ে, অনিতা সমান প্রথম হতে সক্রিয়া করা হয়েছে, 669 00:36:49,000 --> 00:36:51,000 যা লুকাস সময়ে অনিতা পয়েন্ট মানে এই নয়. 670 00:36:51,000 --> 00:36:53,000 বরং, সে কি তিনি এ স্থানটিকে এ স্থানটিকে 671 00:36:53,000 --> 00:36:57,000 কারণ একই ঠিকানা যে লুকাস এর 32 বিট এর ভিতরে - 1, 2, 3 - 672 00:36:57,000 --> 00:37:01,000 হয় এখন Anita এর 32 বিট এছাড়াও ভিতরে - 1, 2, 3. 673 00:37:01,000 --> 00:37:05,000 >> এখন 22 খুঁজতে. কিভাবে আপনি এই কাজ করার চেষ্টা করা হবে? 674 00:37:05,000 --> 00:37:07,000 যে যাই হোক না কেন যাও? >> পয়েন্ট কি. 675 00:37:07,000 --> 00:37:11,000 যাই হোক না কেন নির্দেশ, তাই এগিয়ে যান এবং এটি কাজ হিসাবে আপনি ভাল করতে পারেন এখানে. 676 00:37:11,000 --> 00:37:15,000 ভাল, ভাল, এবং এখন আপনি প্রতি নির্দেশ করে যাচ্ছি-কি 22 এর সাথে আপনার নাম? 677 00:37:15,000 --> 00:37:18,000 Ramon. >> Ramon, তাই Ramon 22 অধিষ্ঠিত আপ করা হয়. 678 00:37:18,000 --> 00:37:20,000 আপনি এখন চেক করতে পেরেছেন. 679 00:37:20,000 --> 00:37:24,000 কি Ramon == 22, এবং উদাহরণস্বরূপ, যদি তাই হয়, আমরা সত্য ফিরে আসতে পারেন. 680 00:37:24,000 --> 00:37:26,000 সম্পর্কে-সময় যাক এইসব বলছি এখানে দাঁড়ানো কিছুটা awkwardly- 681 00:37:26,000 --> 00:37:32,000 সম্পর্কে কিছু করতে দ্রুত bool মত খুঁজে দিন. 682 00:37:32,000 --> 00:37:37,000 আমি এগিয়ে যান এবং বলতে যাচ্ছে (নোড * তালিকা, int n) করছি. 683 00:37:37,000 --> 00:37:39,000 আমি আপনাকে বলছি করা অধিকার ফিরে পাবেন. আমি শুধু কিছু কোড লিখুন আছে. 684 00:37:39,000 --> 00:37:45,000 এবং এখন আমি এগিয়ে যান এবং এই, নোড * anita = তালিকা করতে যাচ্ছি. 685 00:37:45,000 --> 00:37:51,000 এবং আমি এগিয়ে যান এবং বলতে যাচ্ছে সময় (anita! = শূন্য). করছি 686 00:37:51,000 --> 00:37:57,000 >> এখানে রূপক একটু প্রসারিত হয়ে চলেছে, কিন্তু হয় যখন (anita! = শূন্য) কি, আমি কি করতে চান? 687 00:37:57,000 --> 00:38:03,000 আমি উল্লেখ করার একটি উপায় সন্ধান প্রয়োজন 688 00:38:03,000 --> 00:38:05,000 পূর্ণসংখ্যা যে অনিতা নির্দেশ করা হয়. 689 00:38:05,000 --> 00:38:08,000 ইন অতীত, যখন আমরা কাঠামো ছিল, যা একটি নোড হল, 690 00:38:08,000 --> 00:38:11,000 আমরা বিন্দু স্বরলিপি ব্যবহৃত, এবং আমরা এরকম কিছু একটা বলতে হবে 691 00:38:11,000 --> 00:38:15,000 anita.n, কিন্তু এখানে সমস্যা হল অনিতা একটি struct অপরিহার্যভাবে হয় না. 692 00:38:15,000 --> 00:38:17,000 সে কি? 693 00:38:17,000 --> 00:38:21,000 তিনি একজন পয়েন্টার, সত্যিই তাই, যদি আমরা এই বিন্দুর ব্যবহার করতে চান স্বরলিপি- 694 00:38:21,000 --> 00:38:23,000 এবং এই যাও ইচ্ছাকৃতভাবে একটু তাকান যাচ্ছে রহস্যপূর্ণ- 695 00:38:23,000 --> 00:38:28,000 আমরা যাহা Anita এর বাম হাত যাওয়ার মত কিছু একটা আছে নির্দেশ করা হয় 696 00:38:28,000 --> 00:38:31,000 এবং তারপর ক্ষেত্র বলা হবে পেতে. 697 00:38:31,000 --> 00:38:35,000 অনিতা একটি পয়েন্টার, কিন্তু কি হবে * anita? 698 00:38:35,000 --> 00:38:38,000 আপনি কি যখন আপনি কি অনিতা নির্দেশ না যেতে খুঁজে পেতে? 699 00:38:38,000 --> 00:38:42,000 একটি struct, একটি নোড, এবং একটি নোড, রিকল, একটি ক্ষেত্র নামক করা হয়েছে 700 00:38:42,000 --> 00:38:47,000 কারণ এটি, প্রত্যাহার করেনি, এই 2 ক্ষেত্র, এবং পরের n, 701 00:38:47,000 --> 00:38:50,000 আমরা দেখেছি যে একটি মুহূর্ত আগে ডান এখানে. 702 00:38:50,000 --> 00:38:53,000 >> প্রকৃতপক্ষে এই কোড নকল করা, 703 00:38:53,000 --> 00:39:02,000 আমরা এই কাজ করতে এবং বলতে পারে যদি ((* anita). == n ঢ), এন যে আমি খুঁজছি. 704 00:39:02,000 --> 00:39:04,000 উল্লেখ্য, ফাংশানের নম্বর আমি গুরুত্বপূর্ণ প্রেরণ করা হত. 705 00:39:04,000 --> 00:39:10,000 তারপর আমি এগিয়ে যান এবং ফিরে ভালো কিছু সত্য করতে পারেন. 706 00:39:10,000 --> 00:39:12,000 অন্যথায়, যদি এই ক্ষেত্রে না কি, আমি কি করতে চান? 707 00:39:12,000 --> 00:39:19,000 আমি কিভাবে কি অনিতা তালিকা মাধ্যমে হাঁটা দ্বারা কি তাই intuitively কোড অনুবাদ? 708 00:39:19,000 --> 00:39:26,000 আমি কি এখানে আপ অনিতা বাম যাও যে পদক্ষেপ গ্রহণ, যে পদক্ষেপ বাম যাও অনুকরণ করা উচিত? 709 00:39:26,000 --> 00:39:28,000 [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> কি যে? 710 00:39:28,000 --> 00:39:30,000 [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] 711 00:39:30,000 --> 00:39:34,000 ভালো, খারাপ ধারণা নয় অতীতে, কিন্তু, যখন আমরা এই সম্পন্ন করেছি, আমরা সম্পন্ন করেছি anita + 712 00:39:34,000 --> 00:39:37,000 কারণ যে সংখ্যা 1 অনিতা যুক্ত হবে, 713 00:39:37,000 --> 00:39:40,000 যা সাধারণত ব্যক্তি পরবর্তী সময়ে Ramon ভালো নির্দেশ, হবে, 714 00:39:40,000 --> 00:39:44,000 বা ব্যক্তির পাশে তাকে, অথবা পরের তাকে ব্যক্তির লাইন ডাউন. 715 00:39:44,000 --> 00:39:49,000 কিন্তু এখানে যে এর কারণ কি এই জিনিস মেমরি মত বেশ ভাল না? 716 00:39:49,000 --> 00:39:54,000 নেই যে. আমরা যে নিষ্ক্রিয় আছে. 717 00:39:54,000 --> 00:40:00,000 এটা ভালো দেখায় মেমরি, এবং এমনকি যদিও আমি 1 এবং 2 এবং 3 ঘনিষ্ঠ এক অন্য টানা করেছি, 718 00:40:00,000 --> 00:40:03,000 যদি সত্যিই আমরা অনুকরণ না আপনি, এই-পারেন যদিও একই ব্যক্তিদের নির্দেশ করে, 719 00:40:03,000 --> 00:40:07,000 একটি র্যান্ডম ধাপে ফিরে, কিছু আপনি সম্মুখে একটি র্যান্ডম ধাপে আপনি কিছু সময় লাগতে পারে? 720 00:40:07,000 --> 00:40:10,000 >> এই জগাখিচুড়ি এখনও একটি তালিকা সংযুক্ত, 721 00:40:10,000 --> 00:40:13,000 কিন্তু এই না কোথাও মেমরি হতে পারে, 722 00:40:13,000 --> 00:40:15,000 তাই anita + যাও কেন কাজ করে যাচ্ছে না? 723 00:40:15,000 --> 00:40:19,000 অবস্থান anita এ কি +? 724 00:40:19,000 --> 00:40:21,000 কে জানে. 725 00:40:21,000 --> 00:40:24,000 এটা অন্য কোনো মান যাতে ঠিক এরকম করা interposed যাও 726 00:40:24,000 --> 00:40:28,000 সুযোগ দ্বারা এই নোডের মধ্যে সমস্ত কারণ আমরা একটি অ্যারে ব্যবহার করছি না. 727 00:40:28,000 --> 00:40:30,000 আমরা এই নোডের প্রতিটি পৃথকভাবে বরাদ্দ. 728 00:40:30,000 --> 00:40:32,000 ঠিক আছে, যদি না আপনি নিজেকে পরিষ্কার ব্যাক আপ করতে পারেন. 729 00:40:32,000 --> 00:40:37,000 আমাকে যে পরিবর্তে anita + + ', পরিবর্তে আমরা anita এর উত্থাপন করা পায়- 730 00:40:37,000 --> 00:40:42,000 ভাল, কেন আমরা যাহা অনিতা নির্দেশ করা হয় না এবং তারপর যান না না. পরের? 731 00:40:42,000 --> 00:40:45,000 অন্য কথায়, আমরা Ramon, যারা 22 এর হোল্ডিং নম্বর যান, 732 00:40:45,000 --> 00:40:51,000 এবং তারপর. পরবর্তী হিসাবে যদিও অনিতা অনুলিপি তার বাম হাত ইশারা করা হবে. 733 00:40:51,000 --> 00:40:54,000 কিন্তু সে তুলনায় অধিকতর Ramon যান না, কারণ আমরা 22 পাওয়া যাবে. 734 00:40:54,000 --> 00:40:56,000 কিন্তু যে ধারণা হবে. এখন, এই একটি সাংঘাতিক জগাখিচুড়ি. 735 00:40:56,000 --> 00:40:59,000 সত্যি বলতে, কেউ কখনও এই বাক্য গঠন, এবং মনে রাখা হবে যাতে সৌভাগ্যক্রমে 736 00:40:59,000 --> 00:41:04,000 এটা আসলে কিছুটা ইচ্ছাকৃত-উহু, আপনি কি আমার লেখা দেখতে আসলে না. 737 00:41:04,000 --> 00:41:08,000 এই আরো আকর্ষক যদি পারা যাবে. Voila! 738 00:41:08,000 --> 00:41:10,000 >> পর্দার পিছনের, আমি এই সমস্যা সমাধানের উপায় ছিল. 739 00:41:10,000 --> 00:41:14,000 অনিতা, বামে যাও যে পদক্ষেপ গ্রহণ করা, 740 00:41:14,000 --> 00:41:18,000 প্রথমে, আমরা ঠিকানা যাও যে অনিতা নির্দেশ না যাবেন না 741 00:41:18,000 --> 00:41:23,000 এবং যেখানে সে n, যা আমরা ঠিক তুলনা এর অনুরোধে জন্য চেক না কেবল খুঁজে পেতে হবে, 742 00:41:23,000 --> 00:41:25,000 কিন্তু আপনি খুঁজে পরের হবে - এই ক্ষেত্রে, 743 00:41:25,000 --> 00:41:28,000 Ramon এর বাম হাত তালিকায় পরবর্তী নোডের যাও নির্দেশ করছে. 744 00:41:28,000 --> 00:41:32,000 কিন্তু এটা সাংঘাতিক জগাখিচুড়ি যা আমি আগে বলা হয়, 745 00:41:32,000 --> 00:41:34,000 কিন্তু এটি সক্রিয় আউট সি দেয় আমাদের এই সহজ করে. 746 00:41:34,000 --> 00:41:40,000 পরিবর্তে লেখা (* anita), আমরা পরিবর্তে anita> n লিখতে পারেন, 747 00:41:40,000 --> 00:41:45,000 এবং এটা বৈশিষ্ট্যগুলি সঠিক একই জিনিস, কিন্তু এটা আরও বেশি ধারণাসম্পন্ন, 748 00:41:45,000 --> 00:41:48,000 এবং এটা একটা অনেক ছবি সঙ্গে আরও বেশি সঙ্গতিপূর্ণ যে আমরা করছি অঙ্কন 749 00:41:48,000 --> 00:41:50,000 সব সময় এই তীরচিহ্ন ব্যবহার করে. 750 00:41:50,000 --> 00:41:57,000 >> অবশেষে, আমরা কি এই প্রোগ্রাম শেষে কি প্রয়োজন? 751 00:41:57,000 --> 00:42:00,000 কোড অবশিষ্ট একটি লাইন আছে. 752 00:42:00,000 --> 00:42:02,000 কি দেখাবে? 753 00:42:02,000 --> 00:42:05,000 মিথ্যা, কারণ যদি আমরা সমগ্র মাধ্যমে পেতে যখন লুপ 754 00:42:05,000 --> 00:42:10,000 এবং অনিতা হয়, আসলে, নাল, যে মানে সে তালিকার শেষে সব উপায় গিয়েছিলাম 755 00:42:10,000 --> 00:42:12,000 যেখানে তিনি প্রতি নির্দেশ ছিল-এ আপনার নাম আবার কি? 756 00:42:12,000 --> 00:42:15,000 Ari. >> Ari এর বাম হাত, যা নাল. 757 00:42:15,000 --> 00:42:18,000 অনিতা এখন নাল হয়, এবং আমি বুঝতে শুধুমাত্র আপনার স্থায়ী এখানে নরক মধ্যে awkwardly 758 00:42:18,000 --> 00:42:21,000 কারণ আমি একটি নাটকাদি হচ্ছে করছি এখানে বন্ধ, 759 00:42:21,000 --> 00:42:23,000 কিন্তু আমরা মাত্র কয়েক মিনিটের মধ্যে আপনি আবার কাজে নিযুক্ত করা হবে. 760 00:42:23,000 --> 00:42:27,000 অনিতা গল্পের এক পর্যায়ে নাল হয়, তাই সময় লুপ শেষ, 761 00:42:27,000 --> 00:42:30,000 এবং আমরা ফিরে যাও মিথ্যা আছে কারণ যদি তিনি সব Ari এর নাল পয়েন্টার উপায় আছে 762 00:42:30,000 --> 00:42:34,000 তারপর কোন নম্বর যে সে তালিকায় চাওয়া ছিল. 763 00:42:34,000 --> 00:42:39,000 আমরা এই পর্যন্ত পরিষ্কার করতে পারে কিন্তু এই হয় তাহলে খুবই ভালো বাস্তবায়ন 764 00:42:39,000 --> 00:42:43,000 একটি ট্র্যাভেরসাল ফাংশন, একটি একটি লিঙ্ক তালিকা জন্য ফাংশন খুঁজে. 765 00:42:43,000 --> 00:42:48,000 এটা এখনও রৈখিক অনুসন্ধান, কিন্তু এটি একটি + পয়েন্টার হিসাবে হিসাবে সহজ নয় 766 00:42:48,000 --> 00:42:52,000 অথবা + একটি তোমার পরিবর্তনশীল এখন কারণ আমরা অনুমান করতে পারেন না 767 00:42:52,000 --> 00:42:54,000 যেখানে এই নোডের প্রতিটি মেমরি হয়. 768 00:42:54,000 --> 00:42:57,000 আমরা আক্ষরিক breadcrumbs এর লেজ অনুসরণ আছে বা, আরো ঠিক করে, 769 00:42:57,000 --> 00:43:00,000 পয়েন্টার, একটি নোড থেকে অন্য পেতে. 770 00:43:00,000 --> 00:43:02,000 >> এখন আমি কি করে অন্য একটি চেষ্টা করুন. অনিতা, আপনি এখানে ফিরে আসতে চান? 771 00:43:02,000 --> 00:43:06,000 কেন আমরা এগিয়ে না যেতে না এবং এক শ্রোতা থেকে অন্য ব্যক্তির বরাদ্দ করা? 772 00:43:06,000 --> 00:43:08,000 Malloc-কি আপনার নাম? >> রেবেকা. 773 00:43:08,000 --> 00:43:10,000 রেবেকা. Rebecca শ্রোতাদের কাছ থেকে করেনি malloced করা হয়েছে, 774 00:43:10,000 --> 00:43:13,000 এবং এখন তিনি 55 নম্বর সংরক্ষণ করা হয়. 775 00:43:13,000 --> 00:43:17,000 এবং এখন হাতের লক্ষ্য জন্য অনিতা সন্নিবেশ যাও 776 00:43:17,000 --> 00:43:22,000 লিঙ্ক তার যথাযথ স্থানে এখানে তালিকায় Rebecca. 777 00:43:22,000 --> 00:43:24,000 এখানে এক মুহূর্ত জন্য আসা হয়. 778 00:43:24,000 --> 00:43:28,000 আমি ভালো কিছু কাজ. 779 00:43:28,000 --> 00:43:32,000 আমি নোড * কাজ আছে. এবং আপনার নাম আবার কি? 780 00:43:32,000 --> 00:43:34,000 রেবেকা. >> রেবেকা, ঠিক আছে. 781 00:43:34,000 --> 00:43:41,000 Rebecca malloc (sizeof (নোড)) পায়. 782 00:43:41,000 --> 00:43:44,000 শুধু ভালো আমরা অতীতে ছাত্র এবং যাবদ্ধর ভালো জিনিস আছে বরাদ্দ, 783 00:43:44,000 --> 00:43:46,000 আমরা নোড মাপ প্রয়োজন, তাই এখন Rebecca 784 00:43:46,000 --> 00:43:49,000 কি নির্দেশ করা হয়? 785 00:43:49,000 --> 00:43:52,000 রেবেকা তার ভিতর দুটি ক্ষেত্র, এক যা 55 আছে. 786 00:43:52,000 --> 00:43:55,000 চলুন শুরু করা যাক না rebecca-> = 55. কি, 787 00:43:55,000 --> 00:44:00,000 কিন্তু তারপর rebecca> পরের অধিকার এখন-পছন্দ করা উচিত, তার হাত হয় কে জানে ধরনের? 788 00:44:00,000 --> 00:44:03,000 এটা কিছু আবর্জনা মান এ, তাই প্রতি নির্দেশ কেন ভাল পরিমাপের জন্য কি না 789 00:44:03,000 --> 00:44:07,000 আমরা অন্তত এই করবেন যাতে বাম হাত হল এখন তার পাশ. 790 00:44:07,000 --> 00:44:09,000 এখন অনিতা, এখান থেকে সময় লাগবে. 791 00:44:09,000 --> 00:44:11,000 আপনি আছে রেবেকা বরাদ্দ থাকার হয়েছে. 792 00:44:11,000 --> 00:44:20,000 এগিয়ে যান এবং যেখানে আমরা রেবেকা করা উচিত খুঁজে. 793 00:44:20,000 --> 00:44:25,000 ভাল, খুব ভাল. 794 00:44:25,000 --> 00:44:28,000 ঠিক আছে, ভাল, এবং এখন আমরা আপনাকে দিক একটি বিট করতে হবে, 795 00:44:28,000 --> 00:44:30,000 যাতে আপনি Ari পৌঁছেছেন. 796 00:44:30,000 --> 00:44:33,000 তার বাম হাত হল নাল, কিন্তু রেবেকা পরিষ্কারভাবে ডান জন্যে, 797 00:44:33,000 --> 00:44:36,000 তাই কিভাবে আমরা এই লিঙ্ক তালিকা পরিবর্তন করা না থাকে 798 00:44:36,000 --> 00:44:38,000 যাতে যথাযথ স্থানেই এ রেবেকা সন্নিবেশ? 799 00:44:38,000 --> 00:44:42,000 যদি আপনি আক্ষরিক হিসাবে প্রয়োজন কাছাকাছি বাম হাতে মানুষ এর যেতে পারিনি, 800 00:44:42,000 --> 00:44:48,000 আমরা সমস্যাটি সমাধানের জন্য যে ভাবে করব. 801 00:44:48,000 --> 00:44:52,000 ঠিক আছে, ভাল, এবং অন্তর্বর্তীকালে, রেবেকা এর বাম হাত তার পাশ হয় এখন. 802 00:44:52,000 --> 00:44:54,000 >> যেটা খুব সহজ. 803 00:44:54,000 --> 00:44:57,000 চলুন শুরু করা যাক চেষ্টা বণ্টন-we're প্রায় হয়ে গেছে 20,. 804 00:44:57,000 --> 00:44:59,000 ঠিক আছে, উপরে আসা. 805 00:44:59,000 --> 00:45:04,000 20 বরাদ্দ করা হয়েছে, তাই আমাকে এগিয়ে যান এবং আবার এখানে বলার 806 00:45:04,000 --> 00:45:07,000 আমরা ঠিক করেছি নোড * saad সম্পন্ন. 807 00:45:07,000 --> 00:45:11,000 আমরা malloc আছে (sizeof (নোড)). 808 00:45:11,000 --> 00:45:16,000 এরপর আমরা একই সঠিক বাক্য গঠন হিসাবে জন্য আমরা 20 আগে কি না, 809 00:45:16,000 --> 00:45:20,000 এবং আমি পরের = শূন্য না, এবং এখন এটি অনিতা উপর নির্ভর করব 810 00:45:20,000 --> 00:45:23,000 আপনাকে লিঙ্ক তালিকা মধ্যে সন্নিবেশ করুন, যদি আপনি যে সঠিক একই ভূমিকা পালন করতে পারে. 811 00:45:23,000 --> 00:45:30,000 সম্পাদন করুন. 812 00:45:30,000 --> 00:45:32,000 ঠিক আছে, ভাল. 813 00:45:32,000 --> 00:45:38,000 এখন সতর্কতার সাথে মনে হয় আপনি আগে শুরু বাম হাত কাছাকাছি চলন্ত. 814 00:45:38,000 --> 00:45:46,000 আপনি দ্বারা পর্যন্ত সবচেয়ে বিশ্রী ভূমিকা না আজ. 815 00:45:46,000 --> 00:45:59,000 যার হাত প্রথম স্থানান্তরিত করা উচিত? 816 00:45:59,000 --> 00:46:02,000 ঠিক আছে, অপেক্ষা করুন, আমি কোনো কিছু করছি এর শ্রবণ. 817 00:46:02,000 --> 00:46:07,000 যদি কিছু ভাবেন সবিনয়ে একটা বিশ্রী পরিস্থিতি এখানে সমাধানের জন্য সাহায্য চাই. 818 00:46:07,000 --> 00:46:11,000 যার বাম হাত আপডেট প্রথম সম্ভবত করা উচিত? হাঁ. 819 00:46:11,000 --> 00:46:13,000 [ছাত্র] সাদ এর. 820 00:46:13,000 --> 00:46:15,000 ঠিক আছে, সাদ এর, কেন, যদিও? 821 00:46:15,000 --> 00:46:17,000 [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] 822 00:46:17,000 --> 00:46:19,000 ভাল, কারণ যদি আমরা অগ্রসর-কি আপনার নাম? >> মার্শাল. 823 00:46:19,000 --> 00:46:22,000 মার্শাল, যদি আমরা তার হাত প্রথম নিচে নাল সরানো, 824 00:46:22,000 --> 00:46:25,000 এখন আক্ষরিক এই তালিকার মধ্যে আছে চার জনের এতিম 825 00:46:25,000 --> 00:46:29,000 কারণ তিনিই একমাত্র জিনিস Ramon এবং বাম সবাইকে নির্দেশ করে, 826 00:46:29,000 --> 00:46:31,000 যাতে পয়েন্টার প্রথম আপডেট খারাপ ছিল. 827 00:46:31,000 --> 00:46:33,000 চলুন যে পূর্বাবস্থা. 828 00:46:33,000 --> 00:46:37,000 গুড, এবং এখন এগিয়ে যান এবং যথাযথ বাম হাত Ramon নির্দেশ সরাতে. 829 00:46:37,000 --> 00:46:39,000 এই সামান্য অপ্রয়োজনীয় মনে. 830 00:46:39,000 --> 00:46:41,000 এখন দুই Ramon নির্দেশ মানুষ আছে, কিন্তু যে সূক্ষ্ম 831 00:46:41,000 --> 00:46:43,000 কারণ এখন কিভাবে অন্যথায় আমরা তালিকা আপডেট কি? 832 00:46:43,000 --> 00:46:48,000 কি অন্য দিকে সরানো হয়েছে? 833 00:46:48,000 --> 00:46:53,000 চমৎকার এখন, আমরা কোন মেমরি হারিয়েছে? 834 00:46:53,000 --> 00:46:57,000 না, তাই ভাল, আসুন যদি আমরা এই আরো একবার বিরতি না করতে. 835 00:46:57,000 --> 00:47:00,000 >> এক সময় শেষ Mallocing, সংখ্যা 5. 836 00:47:00,000 --> 00:47:04,000 সমস্ত পিঠ উপায় ডাউন উপর, আসা. 837 00:47:04,000 --> 00:47:08,000 এটা খুব উত্তেজনাপূর্ণ. 838 00:47:08,000 --> 00:47:15,000 [সাধুবাদ] 839 00:47:15,000 --> 00:47:17,000 আপনার নাম কি? >> রন. 840 00:47:17,000 --> 00:47:19,000 রন, ঠিক আছে, আপনি 5 নম্বর হিসাবে malloced হয়. 841 00:47:19,000 --> 00:47:23,000 আমরা ঠিক করেছি যে এই কোড সঞ্চালিত প্রায় অভিন্ন 842 00:47:23,000 --> 00:47:26,000 শুধু একটি ভিন্ন নাম. 843 00:47:26,000 --> 00:47:28,000 চমৎকার. 844 00:47:28,000 --> 00:47:38,000 এখন, অনিতা, সৌভাগ্য তালিকায় সংখ্যা 5 এখন ঢোকাতে. 845 00:47:38,000 --> 00:47:43,000 গুড, এবং? 846 00:47:43,000 --> 00:47:47,000 অসাধারণ, তাই এটি সত্যিই মোট তিনটি ক্ষেত্রে তৃতীয়. 847 00:47:47,000 --> 00:47:49,000 আমরা প্রথম শেষে কেউ ছিল, রেবেকা. 848 00:47:49,000 --> 00:47:51,000 আমরা তখন কেউ ছিল মধ্যম. 849 00:47:51,000 --> 00:47:53,000 এখন আমরা আরম্ভে, এবং এই উদাহরণে কেউ আছে, 850 00:47:53,000 --> 00:47:56,000 আমরা এখন প্রথমবার লুকাস আপডেট ছিল 851 00:47:56,000 --> 00:48:00,000 কারণ তালিকায় প্রথম উপাদান এখন একটি নতুন নোডের এ নির্দেশ আছে, 852 00:48:00,000 --> 00:48:03,000 ঘুরে যারা,, নোড 9 নম্বর নির্দেশ করে না. 853 00:48:03,000 --> 00:48:06,000 >> এটি ছিল অতিশয় কুতসিত বিক্ষোভের, আমি নিশ্চিত, 854 00:48:06,000 --> 00:48:08,000 তাই একটি সাধুবাদ বড় এইসব বলছি জন্য বৃত্তাকার যদি আপনি করতে পারে. 855 00:48:08,000 --> 00:48:11,000 চমত্কারভাবে কাজ. 856 00:48:11,000 --> 00:48:17,000 এই যা. আপনি একটু স্মৃতি হিসাবে কাগজে আপনার টুকরা রাখা হতে পারে. 857 00:48:17,000 --> 00:48:22,000 এটা পরিনত হয় যে এই কোড কাজ 858 00:48:22,000 --> 00:48:26,000 বেশ হিসাবে ঠিক কাছাকাছি হাতে চলন্ত হিসাবে সহজ নয় 859 00:48:26,000 --> 00:48:28,000 এবং বিভিন্ন জিনিস এ পয়েন্টার প্রতি নির্দেশ. 860 00:48:28,000 --> 00:48:31,000 কিন্তু বুঝি যে যখন আসে সময় ভালো কিছু বাস্তবায়ন 861 00:48:31,000 --> 00:48:34,000 একটি লিঙ্ক তালিকা বা এটি একটি বৈকল্পিক যদি আপনি সত্যিই ফোকাস 862 00:48:34,000 --> 00:48:38,000 এই মৌলিক মৌলিক, কামড়-আকার সমস্যা আমি চিন্তা করা আছে, 863 00:48:38,000 --> 00:48:43,000 এটা এই হাত বা এই হাত, বুঝতে পারি যে কি অন্যথায় একটি মোটামুটি জটিল প্রোগ্রাম 864 00:48:43,000 --> 00:48:47,000 আসলে,, কমে মোটামুটি সহজ ভালো বিল্ডিং ব্লক করা যাবে. 865 00:48:47,000 --> 00:48:51,000 >> যাক এর আরো একটি অত্যাধুনিক অভিমুখ এখনও জিনিষ নিতে. 866 00:48:51,000 --> 00:48:53,000 আমরা এখন লিঙ্ক তালিকা ধারণা আছে. 867 00:48:53,000 --> 00:48:57,000 আমরা ফিরে পরামর্শ আছে-দোকর একটি লিঙ্ক তালিকা আছে, ধন্যবাদ, 868 00:48:57,000 --> 00:49:01,000 যা প্রায় একই দেখায়, কিন্তু এখন আমরা struct ভিতর দুই পয়েন্টার আছে 869 00:49:01,000 --> 00:49:05,000 পরিবর্তে এক, এবং সম্ভবত আমরা যারা পয়েন্টার পূর্ববর্তী এবং পরবর্তী পারে 870 00:49:05,000 --> 00:49:08,000 বা বাম বা ডান, কিন্তু আমরা আসলে,, না তাদের দুটি প্রয়োজন. 871 00:49:08,000 --> 00:49:10,000 কোড একটু বেশি জড়িত হতে চাই. 872 00:49:10,000 --> 00:49:12,000 অনিতা ছিল আরো কাজ এখানে মঞ্চে থাকবে. 873 00:49:12,000 --> 00:49:15,000 কিন্তু আমরা অবশ্যই গঠন তজ্জাতীয় বাস্তবায়ন হতে পারে. 874 00:49:15,000 --> 00:49:19,000 সময় চলমান নিরিখে যদিও,, কি চলমান সময় হবে 875 00:49:19,000 --> 00:49:24,000 জন্য একটি লিঙ্ক তালিকা একটি সংখ্যা n এখন খুঁজে বের করার অনিতা? 876 00:49:24,000 --> 00:49:27,000 এখনও বড় হে n র, তাই এটা রৈখিক অনুসন্ধান চেয়ে ভাল. 877 00:49:27,000 --> 00:49:29,000 আমরা বাইনারি অনুসন্ধান, না যদিও বলতে পারে না, আবার. 878 00:49:29,000 --> 00:49:34,000 কেন যে কেস? আপনি কাছাকাছি ফেলবেন না পারেন. 879 00:49:34,000 --> 00:49:36,000 যদিও আমরা আমাদের সকল মঞ্চে মানুষের দেখুন, 880 00:49:36,000 --> 00:49:39,000 এবং অনিতা এবং এটি eyeballed থাকতে পারে বলেন, "এখানে তালিকার মধ্যম," 881 00:49:39,000 --> 00:49:42,000 তিনি যে যদি সে ছিল কম্পিউটার প্রোগ্রাম জানি না 882 00:49:42,000 --> 00:49:47,000 কারণ শুধু যে তিনি যাও দৃশ্যকল্প শুরু করার যাও হুড়কা উপর 883 00:49:47,000 --> 00:49:50,000 লুকাস ছিল, ছিল প্রথম পয়েন্টার. 884 00:49:50,000 --> 00:49:53,000 অগত্যা তিনি ঐ লিঙ্ক অনুসরণ করা হবে, 885 00:49:53,000 --> 00:49:56,000 তার উপায় গণনা পর্যন্ত তিনি প্রায় মধ্যম পাওয়া গেছে, 886 00:49:56,000 --> 00:49:58,000 এবং এমনকি তারপরে, সে যখন সে মধ্যম পৌঁছেছেন এর জানা যাচ্ছে না 887 00:49:58,000 --> 00:50:01,000 যদি না তিনি শেষে সব উপায় চিন্তা করা যায় কিভাবে অনেক আছে, 888 00:50:01,000 --> 00:50:05,000 তারপর খুব backtracks, এবং যে হার্ড, যদি না আপনি ছিল হবে 889 00:50:05,000 --> 00:50:07,000 কিছু ধরণের দোকর লিঙ্ক তালিকা. 890 00:50:07,000 --> 00:50:10,000 >> কিছু কিছু সমস্যার সমাধান আজ, কিন্তু অন্যদের পরিচায়ক. 891 00:50:10,000 --> 00:50:12,000 একটি ভিন্ন তথ্য গঠন সম্পূর্ণভাবে সম্পর্কে কি? 892 00:50:12,000 --> 00:50:15,000 এটি মাথের হাউস মধ্যে ট্রে একটি আলোকচিত্র, 893 00:50:15,000 --> 00:50:19,000 এবং এই ক্ষেত্রে, আমরা একটি তথ্য গঠন করেছি আমরা ইতিমধ্যে ধরনের বিষয়ে কথা হয়েছে আছে. 894 00:50:19,000 --> 00:50:22,000 একটি স্ট্যাক মেমরি সম্পর্কে আমরা প্রেক্ষিতে বললাম, 895 00:50:22,000 --> 00:50:26,000 এবং ইচ্ছাকৃতভাবে যে ধরণের নামে এর কারণ মেমরি পদ একটি স্ট্যাক 896 00:50:26,000 --> 00:50:31,000 হল কার্যকরভাবে একটি তথ্য কাঠামো, যা আরো এবং আরো স্টাফ এটি উপরে স্তরপূর্ণ আছে. 897 00:50:31,000 --> 00:50:35,000 কিন্তু একটি স্ট্যাক সম্পর্কে আকর্ষণীয় বিষয় হিসাবে, বাস্তবে হয় কেস, 898 00:50:35,000 --> 00:50:38,000 যে এটা একটা ডাটা স্ট্রাকচার বিশেষ ধরনের. 899 00:50:38,000 --> 00:50:42,000 এটা একটা ডাটা স্ট্রাকচার যদ্দ্বারা প্রথম উপাদান 900 00:50:42,000 --> 00:50:46,000 শেষ উপাদান আউট. 901 00:50:46,000 --> 00:50:50,000 আপনি যদি প্রথম ট্রে যাও স্ট্যাকের মধ্যে স্থাপন করা হবে, 902 00:50:50,000 --> 00:50:53,000 আপনি দুর্ভাগ্যবশত করা শেষ ট্রে নেওয়া স্ট্যাকের বন্ধ চলুন, 903 00:50:53,000 --> 00:50:55,000 এবং যে ভালো তা নয়, এর. 904 00:50:55,000 --> 00:50:58,000 বিপরীতভাবে, আপনি এটি সম্পর্কে অন্যান্য উপায় কাছাকাছি মনে করতে পারেন, 905 00:50:58,000 --> 00:51:02,000 শেষ হল প্রথম আউট. 906 00:51:02,000 --> 00:51:05,000 >> এখন, কোনো পরিস্থিতিতে যাও যেখানে একটি স্ট্যাক হচ্ছে মনে আসে না 907 00:51:05,000 --> 00:51:08,000 ডাটা স্ট্রাকচার যেখানে আপনি যে সম্পত্তি আছে 908 00:51:08,000 --> 00:51:13,000 , প্রথম বার শেষ, আসলে বাধ্যতামূলক? 909 00:51:13,000 --> 00:51:16,000 এটা কি ভালো? এটা কি খারাপ জিনিস? 910 00:51:16,000 --> 00:51:19,000 এটা অবশ্যই একটা বাজে জিনিস যদি ট্রে ছিল অভিন্ন সব না 911 00:51:19,000 --> 00:51:21,000 এবং তারা সব বিশেষ বিভিন্ন রং বা যে কোন বস্তু, 912 00:51:21,000 --> 00:51:24,000 এবং রঙ চান সমস্ত নীচে উপায়. 913 00:51:24,000 --> 00:51:26,000 অবশ্যই, আপনি যে মহান প্রচেষ্টার ছাড়া পাবেন না. 914 00:51:26,000 --> 00:51:28,000 আপনি উপর থেকে এবং শুরু আপনার উপায় নিচে কাজ আছে. 915 00:51:28,000 --> 00:51:31,000 একইভাবে, যদি আপনি কি ছিল এই পাখা ছেলেদের এক 916 00:51:31,000 --> 00:51:34,000 সমস্ত রাত্রি একটি আপ আইফোন এবং লাইন পেতে চেষ্টা যারা অপেক্ষা আপ 917 00:51:34,000 --> 00:51:36,000 এ ভালো একটি স্থান? 918 00:51:36,000 --> 00:51:40,000 এটি চমৎকার হবে না যদি আপেল দোকান 919 00:51:40,000 --> 00:51:42,000 ছিল একটি স্ট্যাক ডাটা স্ট্রাকচার? 920 00:51:42,000 --> 00:51:44,000 ইয়ে? বরং? 921 00:51:44,000 --> 00:51:47,000 শেষ সম্ভব মিনিট এ লক্ষ মানুষ দেখানোর জন্য শুধুমাত্র ভাল 922 00:51:47,000 --> 00:51:50,000 এবং তারপর অনুত্তীর্ণ কিউ বন্ধ করতে পারেন. 923 00:51:50,000 --> 00:51:52,000 এবং সত্য যে, আসলে তাই আমি আনত ছিল কিউ বলে যাও 924 00:51:52,000 --> 00:51:56,000 এটা কি আমরা এই ধরনের ডাটা স্ট্রাকচার কল করবে প্রকৃতপক্ষে সামঞ্জস্যপূর্ণ, 925 00:51:56,000 --> 00:51:59,000 এক বাস্তবতা যেখানে আদেশ ব্যাপার আছে, 926 00:51:59,000 --> 00:52:02,000 এবং আপনি প্রথম প্রথম এক এক হতে চান 927 00:52:02,000 --> 00:52:04,000 যদি শুধুমাত্র মানুষের জন্য সততা অনুরোধে. 928 00:52:04,000 --> 00:52:07,000 আমরা সাধারণত কল যে সারিতে তথ্য গঠন করব. 929 00:52:07,000 --> 00:52:11,000 >> এটি সক্রিয় আউট লিঙ্ক তালিকা ছাড়াও, আমরা এই একই মূল ধারণা ব্যবহার শুরু করতে পারেন 930 00:52:11,000 --> 00:52:15,000 এবং সমস্যার সমাধানের নতুন এবং ভিন্ন ধরনের নির্মাণ শুরু. 931 00:52:15,000 --> 00:52:19,000 একটি স্ট্যাক ক্ষেত্রে উদাহরণস্বরূপ, আমরা একটি স্ট্যাক প্রতিনিধিত্ব করতে পারে 932 00:52:19,000 --> 00:52:22,000 একটি ভালো তথ্য গঠন ব্যবহার করে, আমি উত্থাপন করা হবে. 933 00:52:22,000 --> 00:52:26,000 এই ক্ষেত্রে, আমি একটি struct ঘোষণা করেছি, এবং আমি এই কাঠামোর ভিতর বলেন করেছি 934 00:52:26,000 --> 00:52:30,000 একটি সংখ্যার একটি অ্যারে এবং তারপর একটি পরিবর্তনশীল নামক আকার, 935 00:52:30,000 --> 00:52:33,000 এবং আমি একটি স্ট্যাক কল এই জিনিস যাচ্ছি. 936 00:52:33,000 --> 00:52:35,000 এখন, কেন আসলে এই কাজ করে? 937 00:52:35,000 --> 00:52:43,000 একটি স্ট্যাক ক্ষেত্রে, আমি একটি অ্যারে হিসাবে পর্দায় এই কার্যকরভাবে আঁকতে পারে. 938 00:52:43,000 --> 00:52:47,000 এই যে আমার স্ট্যাকের. সেগুলো হল আমার নম্বর. 939 00:52:47,000 --> 00:52:50,000 এবং আমরা তাদের এই হিসাবে, আঁকা এই করব, এই, এই, এই. 940 00:52:50,000 --> 00:52:53,000 এবং তারপর আমি অন্য কিছু তথ্য এখানে সদস্য আছে, 941 00:52:53,000 --> 00:52:58,000 যা সাইজ বলা হয়, তাই এই আকার, এবং এই নম্বরগুলি, 942 00:52:58,000 --> 00:53:02,000 এবং সম্মিলিতভাবে, সমগ্র এখানে রহমান এক স্ট্যাকের গঠন করা হয়. 943 00:53:02,000 --> 00:53:07,000 ডিফল্টরূপে, এখন, সম্ভবতঃ আকার পেয়েছে করেনি যাও 0 সক্রিয়া করা হবে, 944 00:53:07,000 --> 00:53:11,000 এবং কি সংখ্যার অ্যারের ভিতর এর প্রাথমিকভাবে 945 00:53:11,000 --> 00:53:14,000 প্রথম যখন আমি একটি অ্যারের বরাদ্দ করা? 946 00:53:14,000 --> 00:53:16,000 জঞ্জাল. কে জানে? এবং এটা আসলে কোন ব্যাপার না. 947 00:53:16,000 --> 00:53:20,000 যদি এই হয় 1, 2, 3, 4, 5 না, ব্যাপার সম্পূর্ণভাবে এলোমেলোভাবে 948 00:53:20,000 --> 00:53:25,000 দুর্ভাগ্য আমার গঠন সঞ্চিত কারণ এতক্ষণ হিসাবে আমি জানি যে স্ট্যাকের আকার 949 00:53:25,000 --> 00:53:29,000 মান 0, তারপরে আমি জানতে programmatically, অ্যারের মধ্যে উপাদানের কোনো তাকান না. 950 00:53:29,000 --> 00:53:31,000 এটা কি আছে কোন ব্যাপার না. 951 00:53:31,000 --> 00:53:34,000 না তাদের সময়, ২ 0 হিসাবে একটি মাপের সংশ্লেষ হবে না তাকান. 952 00:53:34,000 --> 00:53:38,000 >> কিন্তু এখন আমি অনুমান এগিয়ে যান এবং স্ট্যাকের মধ্যে কিছু সন্নিবেশ করুন. 953 00:53:38,000 --> 00:53:42,000 আমি 5 নম্বর প্রবেশ করাতে চান, যাতে আমি 5 নম্বর এখানে রাখুন, 954 00:53:42,000 --> 00:53:45,000 এবং তারপর কি আমি নিচে না রাখা এখানে? 955 00:53:45,000 --> 00:53:48,000 এখন আসলে আমি রাখা আকার জন্য 1 ডাউন হবে, 956 00:53:48,000 --> 00:53:50,000 এবং এখন স্ট্যাকের মাপ হল 1. 957 00:53:50,000 --> 00:53:53,000 আমি যদি এগিয়ে যান এবং নম্বর প্রবেশ করাতে, আমি কি বলতে, 7 পরের? 958 00:53:53,000 --> 00:53:57,000 এই তারপর 2 যাও, আপডেট এবং তারপর আমরা 9 ​​করব পরার, 959 00:53:57,000 --> 00:54:02,000 এবং তারপর এই 3 আপডেট করা হয়. 960 00:54:02,000 --> 00:54:05,000 কিন্তু মজার এই স্ট্যাকের এখন বৈশিষ্ট হল 961 00:54:05,000 --> 00:54:09,000 আমি বুঝতে পারি যে উপাদান যদি আমি পপ সরাতে চান অনুমিত করছি 962 00:54:09,000 --> 00:54:12,000 স্ট্যাকের কিছু বন্ধ, তাই কথা বলতে? 963 00:54:12,000 --> 00:54:14,000 9 সর্বপ্রথম যে জিনিসটি যেতে হবে. 964 00:54:14,000 --> 00:54:18,000 কিভাবে ছবি পরিবর্তন যদি আমি স্ট্যাকের বন্ধ একটি উপাদান পপ করতে চান, 965 00:54:18,000 --> 00:54:20,000 অনেক মাথের মধ্যে একটি ট্রে চান? 966 00:54:20,000 --> 00:54:22,000 হাঁ. >> 2 [ছাত্র] আকার সেট করুন. 967 00:54:22,000 --> 00:54:27,000 ঠিক, সব আমি 2 যাও আকার সেট করা হয়, এবং কি আমি অ্যারে নিয়ে কি করবেন? 968 00:54:27,000 --> 00:54:29,000 আমি কিছু করতে হবে না. 969 00:54:29,000 --> 00:54:32,000 আমি, মলদ্বারে হতে যাও, সেখানে 0 অথবা একটি একটি -1 বা কিছু বোঝান পারে করা 970 00:54:32,000 --> 00:54:34,000 যে এই হয়, কিন্তু একটি legit মান না না এটা কোন ব্যাপার না কারণ 971 00:54:34,000 --> 00:54:37,000 আমি অ্যারে নিজেই কতদিন এটা বাইরে রেকর্ড করতে পারি 972 00:54:37,000 --> 00:54:41,000 যাতে আমি জানি শুধুমাত্র প্রথম অ্যারের মধ্যে এই দুটি উপাদান তাকান. 973 00:54:41,000 --> 00:54:47,000 এখন, যদি আমি এই যান এবং অ্যারের 8 নম্বর যোগ করুন, কিভাবে পরবর্তী ছবি পরিবর্তন করবেন? 974 00:54:47,000 --> 00:54:50,000 এই হয়ে 8, এবং এই পরিণত হয় 3. 975 00:54:50,000 --> 00:54:52,000 আমি কয়েক কোণ কাটা করছি এখানে. 976 00:54:52,000 --> 00:54:56,000 এখন আমরা 5, 7, 8, আছে এবং আমরা ফিরে যাও 3 একটি মাপ. 977 00:54:56,000 --> 00:54:58,000 এটা বেশ প্রয়োগ করা অপেক্ষাকৃত সহজ, 978 00:54:58,000 --> 00:55:06,000 কিন্তু যখন আমরা এই নকশা সিদ্ধান্ত দুঃখপ্রকাশ যাচ্ছি? 979 00:55:06,000 --> 00:55:09,000 যখন জিনিষ না অত্যন্ত, ভুল হয়ে যেতে শুরু? হাঁ. 980 00:55:09,000 --> 00:55:11,000 [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] 981 00:55:11,000 --> 00:55:13,000 যখন আপনি ফিরে যান এবং প্রথম উপাদান আপনি রাখা ইন পেতে চাই 982 00:55:13,000 --> 00:55:18,000 >> এটি সক্রিয় এখানে যদিও একটি স্ট্যাক হয় ফণা নীচে একটি অ্যারের, 983 00:55:18,000 --> 00:55:21,000 ডাটা স্ট্রাকচার আমরা বলছি শুরু করেছি এছাড়াও সাধারণভাবে হিসাবে পরিচিত 984 00:55:21,000 --> 00:55:25,000 বিমূর্ত ডাটা স্ট্রাকচার যেখানে তারা কিভাবে প্রয়োগ করছেন 985 00:55:25,000 --> 00:55:27,000 সম্পূর্ণরূপে বিন্দু ছাড়াও হয়. 986 00:55:27,000 --> 00:55:31,000 একটি স্ট্যাক মত তথ্য কাঠামো সমর্থন যোগ অনুমিত হয় 987 00:55:31,000 --> 00:55:35,000 ধাক্কা, যা স্ট্যাকের মধ্যে একটি ট্রে push কর্মের মত অপারেশন, 988 00:55:35,000 --> 00:55:39,000 এবং পপ, যা স্ট্যাকের দ্বারা একটি উপাদান থেকে সরিয়ে দেওয়া হয়, এবং যে এটি. 989 00:55:39,000 --> 00:55:43,000 আপনি যদি অন্য কেউ এর কোড যারা ইতিমধ্যে বাস্তবায়িত ডাউনলোড হয়েছে 990 00:55:43,000 --> 00:55:46,000 এই স্ট্যাকের নামক একটি জিনিস, যে ব্যক্তি না হত 991 00:55:46,000 --> 00:55:49,000 আপনার জন্য মাত্র দুটি ফাংশন, এবং ধাক্কা পপ, যার একমাত্র উদ্দেশ্য জীবন 992 00:55:49,000 --> 00:55:51,000 যাও যে ঠিক কি হবে. 993 00:55:51,000 --> 00:55:54,000 আপনি অথবা তাকে যে প্রোগ্রাম বাস্তবায়িত 994 00:55:54,000 --> 00:55:58,000 হয়েছে সম্পূর্ণরূপে একটি কিভাবে বাস্তবায়ন করার সিদ্ধান্ত নিতে হবে 995 00:55:58,000 --> 00:56:00,000 ঠেলাঠেলি ফণা নীচে এবং পপিং এর শব্দার্থবিদ্যা 996 00:56:00,000 --> 00:56:03,000 অথবা ঠেলাঠেলি এবং পপিং কার্যকারিতা. 997 00:56:03,000 --> 00:56:07,000 এবং আমি কিছুটা shortsighted সিদ্ধান্ত এখানে আছে 998 00:56:07,000 --> 00:56:10,000 এই সহজ ডাটা স্ট্রাকচার কেন আমার সঙ্গে স্ট্যাকের রূপায়ণকারী? 999 00:56:10,000 --> 00:56:12,000 যখন এই ডাটা স্ট্রাকচার বিভাজক আছে? 1000 00:56:12,000 --> 00:56:18,000 কি মুহুর্তে আমি উদাহরণস্বরূপ একটি ত্রুটি ফেরত যখন ব্যবহারকারী কল ধাক্কা, আছে? 1001 00:56:18,000 --> 00:56:20,000 [ছাত্র] যদি কোন স্থান নেই. 1002 00:56:20,000 --> 00:56:23,000 ঠিক, যদি সেখানে এর কোন স্থান, যদি আমি ক্ষমতা অতিক্রম করেছেন, 1003 00:56:23,000 --> 00:56:27,000 যা সমস্ত ক্যাপ কারণ এটি বলে যে এটা বিশ্ব ধ্রুবক কিছু. 1004 00:56:27,000 --> 00:56:30,000 না সেটা, আমি শুধু আছে না যাচ্ছে, বলে "দুঃখিত, আমি অন্য কোনো মান হতে পারে না ধাক্কা 1005 00:56:30,000 --> 00:56:32,000 স্ট্যাকের মধ্যে, "অনেক মাথের মধ্যে চান. 1006 00:56:32,000 --> 00:56:36,000 >> এক পর্যায়ে তারা যে সামান্য মন্ত্রিসভা উপরের অংশ আঘাত চলুন. 1007 00:56:36,000 --> 00:56:39,000 কোন স্ট্যাকের মধ্যে স্থান বা ক্ষমতা আছে, যা কিছু বিন্দু ত্রুটি আছে. 1008 00:56:39,000 --> 00:56:42,000 তারা উপাদান অন্য কোথাও দিতে হবে, ট্রে অন্য কোথাও, 1009 00:56:42,000 --> 00:56:44,000 অথবা কোথাও না এ সব. 1010 00:56:44,000 --> 00:56:47,000 সারিতে সঙ্গে এখন, আমরা একটি পৃথক সামান্য এটা বাস্তবায়ন করতে পারে. 1011 00:56:47,000 --> 00:56:50,000 একটি কিউ ফণা নীচে যে, এটি প্রয়োগ করা যেতে পারে একটি সামান্য ভিন্ন 1012 00:56:50,000 --> 00:56:54,000 হিসাবে একটি অ্যারের, কিন্তু এই ক্ষেত্রে কেন,, আমি উপস্থাপক am 1013 00:56:54,000 --> 00:56:59,000 আরও একটি প্রধান উপাদান তালিকা মাথা প্রতিনিধিত্বমূলক আছে, 1014 00:56:59,000 --> 00:57:06,000 তালিকা সামনে, লাইন এ প্রথম আপেল দোকান এ ব্যক্তির আকার ছাড়াও,? 1015 00:57:06,000 --> 00:57:14,000 কেন আমি এখানে একটি অতিরিক্ত তথ্য টুকরা প্রয়োজন? 1016 00:57:14,000 --> 00:57:16,000 কি সংখ্যা হল ফিরে চিন্তা 1017 00:57:16,000 --> 00:57:18,000 যদি আমি টানা করেছি হিসাবে এটি অনুসরণ করে. 1018 00:57:18,000 --> 00:57:21,000 এই ধরুন এখন হয় পরিবর্তে একটি স্ট্যাকের সারিতে, 1019 00:57:21,000 --> 00:57:24,000 হচ্ছে-মাত্র আপেল দোকান-কিউ মত পার্থক্য হল পরিষ্কার. 1020 00:57:24,000 --> 00:57:27,000 লাইন প্রথম তালিকার শুরুতে ব্যক্তি, এই ক্ষেত্রে নম্বর 5, 1021 00:57:27,000 --> 00:57:30,000 সে দোকানে মধ্যে প্রথম দিন হবে না. 1022 00:57:30,000 --> 00:57:32,000 চলুন না যে. 1023 00:57:32,000 --> 00:57:35,000 ধরুন এই যে এই মুহূর্তে আমার কিউ রাজ্যের সময়, এখন আপেল এবং দোকান 1024 00:57:35,000 --> 00:57:39,000 প্রর্দশিত হবে এবং প্রথম ব্যক্তি, সংখ্যা 5, দোকান মধ্যে নেতৃত্বাধীন হয়. 1025 00:57:39,000 --> 00:57:43,000 আমি কিভাবে এখন ছবি পরিবর্তন যে আমি প্রথম ব্যক্তি de-সারিবদ্ধ 1026 00:57:43,000 --> 00:57:47,000 লাইনে সামনে? 1027 00:57:47,000 --> 00:57:50,000 কি যে? >> [ছাত্র] কিউ পরিবর্তন করুন. 1028 00:57:50,000 --> 00:57:52,000 মাথা পরিবর্তন, 5 disappears. 1029 00:57:52,000 --> 00:57:56,000 প্রকৃতপক্ষে, এটা হিসাবে যদিও-কীভাবে সেরা এই কাজের জন্য? 1030 00:57:56,000 --> 00:58:00,000 প্রকৃতপক্ষে, এটা হিসাবে যদিও এই লোক যাবে না. 1031 00:58:00,000 --> 00:58:03,000 কি নম্বর 7 একটি প্রকৃত বাজারের কি? 1032 00:58:03,000 --> 00:58:05,000 তারা একটি বড় পদক্ষেপ এগিয়ে নিতে চাই. 1033 00:58:05,000 --> 00:58:08,000 >> তবে কি আমরা কৃতজ্ঞ এসে যখন এটি অ্যারে আসে 1034 00:58:08,000 --> 00:58:10,000 এবং প্রায় জিনিষ যাচ্ছেন? 1035 00:58:10,000 --> 00:58:12,000 এটা আপনার সময় নষ্ট ধরনের অধিকার,? 1036 00:58:12,000 --> 00:58:16,000 আপনি কেন এত মলদ্বারে করা আছে হিসাবে প্রথম ব্যক্তি আছে 1037 00:58:16,000 --> 00:58:21,000 এ লাইনের শারীরিকভাবে মেমরি খণ্ড শুরু করার শুরু? 1038 00:58:21,000 --> 00:58:23,000 যে সম্পূর্ণ অপ্রয়োজনীয়. কেন? 1039 00:58:23,000 --> 00:58:26,000 কি ঠিক পরিবর্তে আমি স্মরণ করতে পারেন? >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] 1040 00:58:26,000 --> 00:58:30,000 ঠিক, আমি এই অতিরিক্ত তথ্য সদস্য মাথা সঙ্গে স্মরণ করা যেতে পারে 1041 00:58:30,000 --> 00:58:34,000 এখন যে তালিকা মাথা নেই 0, ​​তা ছিল একটি মুহূর্ত আগে. 1042 00:58:34,000 --> 00:58:39,000 এখন এটি প্রকৃত সংখ্যা 1. এই ভাবে, আমি সামান্য অপ্টিমাইজেশান পেতে. 1043 00:58:39,000 --> 00:58:44,000 কারণ আমি ঠিক করেছি লাইনের শুরুতে আপেল দোকান এ লাইন থেকে কেউ de-সারিবদ্ধ 1044 00:58:44,000 --> 00:58:47,000 কিন্তু প্রত্যেকের, রিকল নামান যা একটি রৈখিক অপারেশন আছে না মানে. 1045 00:58:47,000 --> 00:58:50,000 আমি ধ্রুব পরিবর্তে শুধুমাত্র সময় ব্যয় করতে পারেন 1046 00:58:50,000 --> 00:58:53,000 এবং অনেক দ্রুত প্রতিক্রিয়া তারপর অর্জন. 1047 00:58:53,000 --> 00:58:56,000 কিন্তু আমি মূল্য পরিশোধ করছি কি যে অতিরিক্ত কর্মক্ষমতা লাভ 1048 00:58:56,000 --> 00:58:58,000 এবং প্রত্যেকের নামান হচ্ছে না? 1049 00:58:58,000 --> 00:59:01,000 হাঁ. >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] 1050 00:59:01,000 --> 00:59:04,000 আরো মানুষ যুক্ত করতে পারেন, ভাল, যে সমস্যা হয় লম্ব 1051 00:59:04,000 --> 00:59:07,000 যাও সত্য যে আমরা মানুষ নাড়াচাড়া করছি আশেপাশে না. 1052 00:59:07,000 --> 00:59:11,000 এটা এখনও একটি অ্যারের, তাই কি না তা আমরা সবাই বা নামান না- 1053 00:59:11,000 --> 00:59:13,000 ওহ, আমি দেখতে কি আপনি কি বোঝাতে চেয়েছেন, ঠিক আছে. 1054 00:59:13,000 --> 00:59:16,000 বাস্তবিক, আমি কি আপনাকে এটা প্রায় হিসাবে যদিও বলছে তা সাথে সম্মত 1055 00:59:16,000 --> 00:59:19,000 আমরা এখন করছি আর এই অ্যারের ব্যবহার শুরু যাচ্ছে না 1056 00:59:19,000 --> 00:59:22,000 কারণ আমি যদি 5 সরান তাহলে, আমি 7 সরান. 1057 00:59:22,000 --> 00:59:24,000 কিন্তু কেবল আমি অধিকার মানুষ করা. 1058 00:59:24,000 --> 00:59:28,000 >> এটা মনে ভালো আমি স্থান নাশক করছি, এবং অবশেষে আমার কিউ কিছুই মধ্যে disintegrates, 1059 00:59:28,000 --> 00:59:31,000 তাই আমরা ঠিক মানুষের wraparound পারে, 1060 00:59:31,000 --> 00:59:35,000 এবং আমরা সত্যিই এই অ্যারের বিজ্ঞপ্তি গঠন কিছু হিসাবে মনে করতে পারে, 1061 00:59:35,000 --> 00:59:38,000 কিন্তু আমরা সি কি অপারেটর যাও wraparound যে সাজানোর ব্যবহার করবেন? 1062 00:59:38,000 --> 00:59:40,000 [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> modulo অপারেটর. 1063 00:59:40,000 --> 00:59:43,000 এটা দিয়ে মনে হয় তা আপনি কীভাবে wraparound না একটু বিরক্তিকর হতে পারে, 1064 00:59:43,000 --> 00:59:46,000 কিন্তু আমরা তা না, এবং আমরা কি লাইনের সামনে ব্যবহৃত হতে পারে লোকজন নির্বাণ শুরু করতে পারে, 1065 00:59:46,000 --> 00:59:52,000 কিন্তু আমরা ঠিক এই মাথা পরিবর্তনশীল যিনি প্রকৃতপক্ষে লাইন প্রকৃত প্রধান সঙ্গে স্মরণ. 1066 00:59:52,000 --> 00:59:57,000 যদি, এর পরিবর্তে, আমাদের লক্ষ্য শেষ পর্যন্ত, যদিও, 1067 00:59:57,000 --> 01:00:00,000 নম্বর সন্ধান করার ছিল, হিসাবে আমরা অনিতা সঙ্গে মঞ্চে এখানে কি, 1068 01:00:00,000 --> 01:00:02,000 কিন্তু সত্যিই আমরা সব এই বোথ ওয়ার্ল্ডস সেরা করতে চান? 1069 01:00:02,000 --> 01:00:05,000 আমরা আরো কুতর্ক তুলনায় অ্যারের পারবেন চান 1070 01:00:05,000 --> 01:00:09,000 কারণ আমরা পরিবর্তনশীলরূপে ডাটা স্ট্রাকচার হত্তয়া ক্ষমতা চান. 1071 01:00:09,000 --> 01:00:12,000 কিন্তু আমরা যে আমরা নির্দিষ্ট যাও রিসোর্ট আছে না চান 1072 01:00:12,000 --> 01:00:15,000 প্রথম বক্তৃতা মধ্যে একটি অনুকূল আলগোরিদিম ছিল না, 1073 01:00:15,000 --> 01:00:17,000 রৈখিক অনুসন্ধানের যে. 1074 01:00:17,000 --> 01:00:21,000 এটা পরিনত হয় যে আপনি আসলে,, অর্জন করতে পারেন 1075 01:00:21,000 --> 01:00:24,000 বা ধ্রুবক সময় অন্তত বন্ধ, যদ্দ্বারা অনিতা মত কেউ, 1076 01:00:24,000 --> 01:00:27,000 যদি সে তার ডাটা স্ট্রাকচার কনফিগার একটি তালিকা সংযুক্ত করা না, 1077 01:00:27,000 --> 01:00:30,000 একটি স্ট্যাক করা না, এই সারির হবে না, আসলে,, পারা 1078 01:00:30,000 --> 01:00:33,000 ডাটা স্ট্রাকচার যে তার জিনিষ সন্ধান করতে পারবেন সঙ্গে চলে আসে, 1079 01:00:33,000 --> 01:00:37,000 কি এমনকি শব্দ, সংখ্যা না, আমরা নিত্য সময় ফোন করবো. 1080 01:00:37,000 --> 01:00:40,000 >> এবং সত্য, এগিয়ে খুঁজছেন, এই শ্রেণীতে psets এক প্রায় সবসময় 1081 01:00:40,000 --> 01:00:43,000 একটি spellchecker একটি বাস্তবায়ন, যদ্দ্বারা 1082 01:00:43,000 --> 01:00:46,000 আমরা আপনাকে আবার দিতে 150,000 কিছু ইংরেজি শব্দ এবং লক্ষ্য 1083 01:00:46,000 --> 01:00:51,000 মেমরির মধ্যে লোড করা এবং যারা দ্রুত যাও ফর্ম প্রশ্নের উত্তর দিতে পারবেন 1084 01:00:51,000 --> 01:00:54,000 এই শব্দ বানান ঠিক আছে? 1085 01:00:54,000 --> 01:00:58,000 এবং সত্যিই এটি স্তন্যপান যদি আপনি সব 150,000 শব্দের মাধ্যমে যে উত্তর পুনরুক্তি করা ছিল না. 1086 01:00:58,000 --> 01:01:02,000 আসলে কিন্তু,, আমরা যে আমরা খুব খুব, দ্রুত সময়ের মধ্যে তা করতে পারেন দেখতে পাবেন. 1087 01:01:02,000 --> 01:01:06,000 এবং তা বাস্তবায়নের জন্য কিছু নামক একটি হ্যাশ টেবিল জড়িত করা যাচ্ছে, 1088 01:01:06,000 --> 01:01:09,000 প্রথম নজরে এবং যদিও এই জিনিস নামক একটি হ্যাশ টেবিল যাচ্ছে 1089 01:01:09,000 --> 01:01:12,000 আমাদের অর্জন করা যাক এই সুপার দ্রুত প্রতিক্রিয়া বার, 1090 01:01:12,000 --> 01:01:18,000 এটি সক্রিয় যে আসলে একটা সমস্যা আছে. 1091 01:01:18,000 --> 01:01:23,000 যখন এটি এই জিনিস বলা-আবার বাস্তবায়নের সময় আসে, আমি এরকম আবার করছি. 1092 01:01:23,000 --> 01:01:25,000 আমি শুধু এখানে এক. 1093 01:01:25,000 --> 01:01:28,000 যখন তা আসে এই জিনিস রূপায়ণকারী সময় নামক একটি হ্যাশ টেবিল, 1094 01:01:28,000 --> 01:01:30,000 আমরা সিদ্ধান্ত করতে যাচ্ছেন. 1095 01:01:30,000 --> 01:01:32,000 কত বড় আসলে এই বিষয় হওয়া উচিত? 1096 01:01:32,000 --> 01:01:36,000 এবং যখন আমরা এই হ্যাশ টেবিল মধ্যে ঢোকাতে নম্বর শুরু, 1097 01:01:36,000 --> 01:01:38,000 কিভাবে আমরা এই ধরনের একটি উপায় তাদের সঞ্চয় যাচ্ছে 1098 01:01:38,000 --> 01:01:42,000 যে আমরা তাদের ফিরে পেতে আউট হিসাবে দ্রুত পারেন হিসাবে আমরা তাদের আছে? 1099 01:01:42,000 --> 01:01:45,000 কিন্তু আমরা আগে দীর্ঘ দেখতে পাবেন যে এই প্রশ্ন 1100 01:01:45,000 --> 01:01:48,000 যখন সবাই এর জন্মদিন বর্গ মধ্যে অত্যন্ত সঙ্গত হবে. 1101 01:01:48,000 --> 01:01:51,000 এটা পরিনত হয় যে এই রুমে, আমরা কয়েক শত মানুষের পেয়েছেন, 1102 01:01:51,000 --> 01:01:56,000 তাই মতভেদ আছে যা আমাদের দুটি একই জন্মদিন সম্ভবত অত্যন্ত উচ্চ. 1103 01:01:56,000 --> 01:01:58,000 যদি এই ছিল আমাদের রুমে আছে মাত্র 40? 1104 01:01:58,000 --> 01:02:02,000 দুটি একই জন্মদিন হচ্ছে মানুষের অমিল কি কি? 1105 01:02:02,000 --> 01:02:04,000 [ছাত্রদের] ওভার 50%. 1106 01:02:04,000 --> 01:02:06,000 হাঁ, উপর 50%. আসলে, এমনকি আমি একটি চার্ট আনা. 1107 01:02:06,000 --> 01:02:08,000 এটি সক্রিয় আউট এবং এই সত্যিই শুধু একটি স্নিক প্রিভিউ- 1108 01:02:08,000 --> 01:02:12,000 যদি আমাদের মাত্র 58 এই রুমে, 2 আমাদের সম্ভাবনা আছে 1109 01:02:12,000 --> 01:02:16,000 একই জন্মদিন হচ্ছে অতিশয় উচ্চ হয়, প্রায় 100%, 1110 01:02:16,000 --> 01:02:20,000 এবং যে বুধবার একটি আঘাত সমগ্র আমাদের জন্য গুচ্ছ ঘটাতে যাচ্ছে. 1111 01:02:20,000 --> 01:02:24,000 >> সঙ্গে বলেন যে, আমি কি এখানে স্থগিত রাখা. আমরা বুধবার আপনি দেখতে পাবেন. 1112 01:02:24,000 --> 01:02:28,000 [সাধুবাদ] 1113 01:02:28,000 --> 01:02:30,000 [CS50.TV]