[সঙ্গীত বাজাচ্ছি] [ভিডিও প্লেব্যাক] -তিনি মিথ্যা. -কি সম্পর্কে? -আমি জানি না. আমরা কি জানি না -তাই? 9:15 সত্যজিৎ এ -যে Santoya এটিএম এ ছিল. হ্যা. তাই প্রশ্ন, কি তিনি 9:16 এ করছেন? কিছু এ 9 মিলিমিটার -Shooting. হয়তো তিনি স্নাইপার দেখেছি. বা তার সঙ্গে কাজ করেন. অপেক্ষা করুন. এক ফিরে যান. -আপনি কি দেখছেন? পূর্ণ পর্দা আপ তার মুখ আনুন. -তার চশমা. একটি প্রতিফলন. -এটা Nuevitas বেসবল দল. যে তাদের লোগো. এবং সে সাথে কথা বলছে কেহ যে জ্যাকেট পরা. [END টি প্লেব্যাক] DAVID Malan: ঠিক আছে. এটি CS50 এবং এই একটু বেশী [শ্রবণাতীত] যা দিয়ে আপনি আছেন সমস্যা সঙ্গে dabbling চার সেট. আজ আমরা আরো একটু দেখুন শুরু গভীরভাবে পয়েন্টার নামক এই জিনিস এ, এটা যদিও যা একটি সুন্দর গোপনীয় বিষয়, এটা যাচ্ছে যে দেখা যাচ্ছে মানে হতে, যার মাধ্যমে আমরা বিল্ডিং ও একত্রিতকরনের শুরু করতে পারেন আরো অনেক কিছু অত্যাধুনিক প্রোগ্রাম. কিন্তু আমরা গত বুধবার তা প্রথম কিছু claymation প্রণালী দ্বারা. তাই এই, রিকল, হয় একটি পোলট্রি খামারে Binky এবং আমরা তাকে ব্যবহার একটি প্রোগ্রাম কটাক্ষপাত করা যে সত্যিই কিছু আকর্ষণীয় করতে না, কিন্তু এটি একটি কয়েক সমস্যা প্রকাশ করেনি. তাই কেন আমরা পদব্রজে ভ্রমণ না, আজ শুরু করতে দ্রুত ধাপগুলি কয়েক মাধ্যমে, মানব এর পদ চুয়ান চেষ্টা ঠিক কি এখানে যাচ্ছে এবং কেন এই খারাপ, এবং তারপর যান এবং আসলে কিছু নির্মাণ শুরু এই কৌশল নিয়ে? তাই এই প্রথম ছিল এই প্রোগ্রামে দুটি লাইন এবং সাধারণ লোক এর শর্তাবলী, কি এই দুই লাইন করছেন? যুক্তিসঙ্গতভাবে আরামদায়ক যিনি কি পর্দায় ঘোষণা দিয়ে? করছেন এই দুই লাইন কি? এটা সব না যে সপ্তাহে এক থেকে ভিন্ন, কিন্তু নতুন কিছু বিশেষ চিহ্ন নেই. হ্যা? ফিরে সেখানে. শ্রোতা: পয়েন্টার প্রকাশক? DAVID Malan: আবার বলুন? শ্রোতা: পয়েন্টার প্রকাশক? DAVID Malan: ঘোষণা পয়েন্টার এবং এর একটি সামান্য বিট আরো এটা পরিশোধন করা যাক. শ্রোতা: [শ্রবণাতীত] অঙ্ক এক্স এবং তারপর Y. DAVID Malan: এবং তারপর ঠিকানা. তাই বিশেষভাবে আমরা কি করছেন আমরা দুটি ভেরিয়েবল ঘোষণা করা হয় করা হয়. এই ভেরিয়েবল, যদিও, যাচ্ছি টাইপ int- তারকা, হতে যা আরো নির্দিষ্টভাবে মানে তারা সঞ্চয় করতে যাচ্ছি কোন int এর ঠিকানা, যথাক্রমে, এবং X ও Y. এখন কোন মান আছে? এই যে কোন প্রকৃত ঠিকানা আছে সময় এই সময়ে দুটি ভেরিয়েবল? না. এটা শুধু আবর্জনা মান তথাকথিত এর. আপনি আসলে একটি ধার্য না করা হলে উপস্থিত RAM- র মধ্যে ছিল যাই হোক না কেন পরিবর্তনশীল, পূর্বে শূন্য দিয়ে ভরাট করা যাচ্ছে এবং বেশী যারা ভেরিয়েবল উভয়. কিন্তু আমরা এখনো জানি না তারা কি হয় এবং যে কেন একটি পোলট্রি চাবিকাঠি হতে যাচ্ছে গত সপ্তাহে তার মাথা নষ্ট. সুতরাং এই claymation ছিল এই অবতার যদ্দ্বারা আপনি শুধু দুটি ভেরিয়েবল আছে, মৃন্ময় সামান্য বিজ্ঞপ্তি টুকরা, যে ভেরিয়েবল সংরক্ষণ, কিন্তু হিসাবে পারেন আচ্ছন্ন তীর সুপারিশ, তারা আসলে ইশারা করছি না যে কোন জায়গা কোনটাই পরিচিত. তখন আমরা এই লাইন ছিল, এবং এই মেমরি জন্য ছিল নতুন গত সপ্তাহে, যদি malloc শুধু একটি অভিনব উপায়, যা বরাদ্দ অপারেটিং সিস্টেম বলছে, Linux- র বা ম্যাক অপারেটিং সিস্টেম বা উইন্ডোজ, আরে, আমার কিছু স্মৃতি দিতে, এবং আপনি সব জানাতে অপারেটিং সিস্টেম মেমরি জন্য এটা জিজ্ঞাসা যখন কি. এটা কি গ্রাহ্য করা যাচ্ছে না আপনি, এটা দিয়ে কাজ করতে যাচ্ছেন কিন্তু আপনি অপারেটিং বলতে হবে না কি malloc প্রণালী দ্বারা সিস্টেম. হ্যা? শ্রোতা: কত? DAVID Malan: কত? কত বাইট, এবং তাই, এই, আবার, একটি কল্পিত উদাহরণ, শুধু, বলার অপেক্ষা রাখে না আমার কোন int মাপ দিতে. কোন int এর এখন, আকার চার বাইট বা 32 বিট. সুতরাং এই মাত্র একটা উপায় বলার অপেক্ষা রাখে না, আরে, অপারেটিং সিস্টেম, আমার মেমরির চার বাইট দিতে আমি আমার নিষ্পত্তি ব্যবহার করতে পারে, এবং বিশেষভাবে, কি করে সম্মানের সঙ্গে যদি malloc ফেরত চার বাইট যে তাল করতে? শ্রোতা: ঠিকানা? DAVID Malan: অঙ্ক. চার বাইট যে খণ্ড ঠিকানা. ঠিক. আর তাই যে শেষ পর্যন্ত সংরক্ষণ করা হচ্ছে কি আমরা সত্যিই না কেন এক্স এবং যে গ্রাহ্য কি যে সংখ্যা এটা OX1 বা ox2 কিনা অঙ্ক, হয় অথবা কিছু রহস্যপূর্ণ হেক্সাডেসিমেল ঠিকানা. আমরা শুধু pictorially যত্ন যে পরিবর্তনশীল X বর্তমানে যে মেমরি যে তাল প্রতি নির্দেশ. সুতরাং তীর একটি পয়েন্টার প্রতিনিধিত্ব করে, বা আরো নির্দিষ্টভাবে, একটি মেমরি ঠিকানা. কিন্তু আবার, আমরা সাধারণত যত্ন না যারা আসল ঠিকানা কি. এখন, এই লাইন বলছেন কি সাধারণ লোক এর পরিপ্রেক্ষিতে? রাশি এক্স 42 সেমিকোলন পায়. এটার মানে কি? তুমি যেতে চাও? আপনার ঘাড় ভূত না. শ্রোতা: x এর ঠিকানা 42 এ হয়. DAVID Malan: x এর ঠিকানা 42 এ হয়. বেশ নেই. তাই বন্ধ, কিন্তু পুরোপুরি আছে, কারণ এই এক্স prefixing যে তারকা. তাই আমরা একটি সামান্য বিট বদলাতে প্রয়োজন. হ্যা? শ্রোতা: মূল্য যে পয়েন্টার এক্স 42 প্রতি নির্দেশ করা হয়. ডেভিড MALAN: ঠিক আছে. পয়েন্টার এক্স যে মূল্য 42 হতে, এর কথা বলা যাক হইবে ইশারা, বা, তারা অন্য উপায় করা X যাই হোক না কেন ঠিকানায় যান, বলছেন এটা 1 অক্সফোর্ড কিনা, এক্স হয় রাস্তার বা 33 অক্সফোর্ড স্ট্রিট বা OX1 বা ox33, যাই হোক না কেন , সাংখ্যিক ঠিকানা যে তারকা এক্স এক্স dereferencing হয়. সুতরাং যে ঠিকানায় যান এবং তারপর সেখানে 42 নম্বর করা. সুতরাং যে হবে একটি যে বলার অপেক্ষা রাখে না সমতুল্য ভাবে. সুতরাং যে সব সূক্ষ্ম এবং তারপর আমরা ছবি উপস্থাপনের নিম্নরূপ আমরা যুক্ত করেছি যেখানে চার যে তাল যাও 42 , ডান-দিকে বাইট কিন্তু জিনিষ টেরা গিয়েছিলাম যেখানে এই লাইন ছিল এবং Binky এর মাথা popped এই সময়ে বন্ধ, খারাপ জিনিষ যখন ঘটতে কারণ আপনি আবর্জনা মান ডি-রেফারেন্স অবৈধ ডি-রেফারেন্স আপনি বা পয়েন্টার, এবং আমি অবৈধ বলে কারণ এই সময়ে গল্প, y এর ভিতরে কি? ভিত্তি y এর মান কি গত কয়েক সিঁড়িতে? হ্যা? ওটা কী? শ্রোতা: একটি ঠিকানা. DAVID Malan: একটি ঠিকানা. এটি একটি ঠিকানা হওয়া উচিত কিন্তু আমি এটা সক্রিয়া আছে? তাই আমি এখনও না থাকে. সুতরাং সেখানে হতে কি পরিচিত? এটা শুধু কিছু আবর্জনা মান. এটা শূন্য থেকে কোনো ঠিকানা হতে পারে 2 বিলিয়ন আপনি উপস্থিত RAM- র দুটি যোগাড় আছে, অথবা শূন্য 4 বিলিয়ন করতে করেছি তাহলে উপস্থিত RAM- র চার গিগাবাইট পেয়েছেন. এটা কিছু আবর্জনা মান কিন্তু সমস্যা হল অপারেটিং সিস্টেম যে, আপনার দেওয়া হয় নি, তাহলে মেমরি যে তাল বিশেষভাবে আপনি যেতে চেষ্টা করছেন যে, এটি সাধারণত কি হতে যাচ্ছে আমরা একটি সেগমেন্টেশন ফল্ট হিসাবে দেখা করেছি. তাই আসলে, আপনি কোনো আছে যারা অফিস সময়ে সমস্যার এ লড়াই বা সমস্যার মধ্যে যে আরো সাধারণত চিন্তা করার চেষ্টা সঙ্গে একটি সেগমেন্টেশন ফল্ট, যে সাধারণত মানে আপনি একটি সেগমেন্ট স্পর্শ করছি আপনি করা উচিত হবে না যে স্মৃতি. আপনি মেমরি স্পর্শ করছি যে অপারেটিং সিস্টেম না আছে এটা কিনা, আপনি স্পর্শ করার অনুমতি দেওয়া আপনার অ্যারের মধ্যে যাচ্ছে অতিদূরে দ্বারা বা কিনা, এখন শুরু আপনি স্পর্শ করছি, কারণ এটা শুধু কিছু আবর্জনা মান যে মেমরি. সুতরাং এখানে তারকা এক্স করছেন অনির্ধারিত আচরণ সাজান. আপনি এটা মতভেদ, কারণ কি না করা উচিত , প্রোগ্রাম শুধু বিপর্যস্ত যাচ্ছে হয়, কি বলছে, কারণ, এই ঠিকানায় যান এবং আপনি কোন ধারণা যেখানে আছে যে অঙ্ক আসলে. তাই অপারেটিং সিস্টেম সম্ভবত আপনার প্রোগ্রাম বিপর্যস্ত যাচ্ছে ফলে এবং প্রকৃতপক্ষে হিসাবে, যে কি একটি পোলট্রি ঘটেছে সেখানে. তাই শেষ পর্যন্ত, একটি পোলট্রি সংশোধন এই সঙ্গে এই সমস্যা. যে প্রোগ্রাম তাই নিজেই দ্বিধান্বিত ছিল. কিন্তু আপনি ধরণের দৃঢ়গতিতে যদি এবং পরিবর্তে এই লাইন চালানো, Y শুধু এক্স সমান মানে যাই হোক না কেন অঙ্ক একটি এক্স হয়, এছাড়াও Y লাগাতে হবে. আর তাই pictorially, আমরা করেছি দুই তীর সহ এই প্রতিনিধিত্ব X থেকে এবং Y প্রতি নির্দেশ থেকে একই জায়গা. সুতরাং শব্দার্থিক X সমান Y যারা উভয় কারণ একই সংরক্ষণকারী অঙ্ক, অতএব, 42 টার দিকে নির্দেশ এবং এখন, যখন আপনি তারকা বলে Y, Y মধ্যে ঠিকানায় যান এই একটি আকর্ষণীয় পার্শ্ব প্রতিক্রিয়া আছে. সুতরাং Y এ ঠিকানা X ঠিকানা হিসাবে একই জিনিস. যদি তাই আপনি ঠিকানায় যান বলে এবং Y 13 মান পরিবর্তন, যারা অন্য প্রভাবিত হয়? এক্স, বিন্দু ডি, তাই কথা বলতে হয় পাশাপাশি ক্ষতিগ্রস্ত হবে. এবং প্রকৃতপক্ষে, কিভাবে নিক এই ছবি সৃষ্টি claymation ঠিক যে ছিল. আমরা পয়েন্টার অনুসরণ যদিও Y, আমরা একই জায়গায় শেষ পর্যন্ত এবং তাই আমরা প্রিন্ট করতে হলে X বা Y এর pointee আউট, তারপর আমরা 13 এর মান দেখতে হবে. এখন, আমি pointee হতে বলছি ভিডিও সঙ্গে সামঞ্জস্যপূর্ণ. প্রোগ্রামাররা, আমার জ্ঞান, না আসলে শব্দ pointee বলে, জোরাল হয় যা যে এ কিন্তু দৃঢ়তা জন্য ভিডিও সঙ্গে, বুঝতে পারছি যে ছিল যে সব যে পরিস্থিতি বোঝানো. Claymation উপর তাই কোন প্রশ্ন বা পয়েন্টার বা malloc শুধু এখনো? কোন? ঠিক আছে. তাই আরও ছাড়া কর্মব্যস্ততা, এর কটাক্ষপাত করা যাক আসলে এই যেখানে এ কিছু সময়ের জন্য ব্যবহার করা হয়েছে. সুতরাং আমরা এই CS50 লাইব্রেরি ছিল করেছি যে সব এই ফাংশন পেয়েছিলাম. আমরা GetInt, GetString, অনেক ব্যবহার করেছি সম্ভবত আগে GetLongLong আমার pset মধ্যে এক বা তাই, কিন্তু আসলে কি যাওয়া হয়েছে? ওয়েল, এর দ্রুত কটাক্ষপাত করা যাক একটি প্রোগ্রাম এ ফণা নীচে যে আমরা আপনি CS50 দিতে কেন অনুপ্রাণিত লাইব্রেরি, এবং প্রকৃতপক্ষে গত সপ্তাহে হিসাবে, আমরা যারা গ্রহণ শুরু প্রশিক্ষণ চাকার বন্ধ. সুতরাং এখন এই সাজানো হয় একটি পোস্টমর্টেম কি আছে যাওয়া হয়েছে CS50 লাইব্রেরি ভিতরে, আমরা এখন চলন্ত শুরু হবে, যদিও এটা থেকে দূরে সবচেয়ে প্রোগ্রামসমূহের. তাই এই 0, scanf নামক একটি প্রোগ্রাম. এটা অতি ছোট. এটা শুধু এই লাইন আছে, কিন্তু এটা একটি ফাংশন বলা scanf প্রবর্তন আমরা আসলে দেখতে যাচ্ছেন ভেতরের CS50 লাইব্রেরি একটি মুহূর্ত, কিছুটা ভিন্ন ফর্ম যদ্যপি. লাইন 16 তাই এই প্রোগ্রাম একটি পরিবর্তনশীল x ঘোষণা করা হয়. তাই আমাকে কোন int জন্য চার বাইট দিতে. এটি ব্যবহারকারীকে বলার হয়েছে সংখ্যা দয়া করে, এবং তারপর এই একটি আকর্ষণীয় লাইন যে আসলে গত সপ্তাহে একসাথে বেঁধে এবং এটা. Scanf, এবং তারপর এটি একটি লাগে লক্ষ্য ফরম্যাট স্ট্রিং, শুধু ভালো printf, % আমি কোন int মানে, এবং তারপর এটি একটি সময় লাগে একটু দেখায় যা দ্বিতীয় যুক্তি ভীতু. এটা এম্পারসেন্ড এক্স এর, এবং পুনরাহ্বান, আমরা শুধুমাত্র এই একবার দেখেছি গত সপ্তাহে. এম্পারসেন্ড X প্রতিনিধিত্ব করেন? এম্পারসেন্ড সি কী কাজ করে? হ্যা? শ্রোতা: এর ঠিকানা. DAVID Malan: এর ঠিকানা. তাই এটা বিপরীত তারকা অপারেটর, তারকা অপারেটর বলছেন, যেহেতু, যান এই অঙ্ক, এম্পারসেন্ড অপারেটর জিনিসটা, বলেছেন এই পরিবর্তনশীল এর ঠিকানা, এবং তাই এই কারণ, কী হয় জীবনে, scanf এর উদ্দেশ্যে ব্যবহারকারীর স্ক্যান করা কীবোর্ড থেকে ইনপুট, যাই হোক না কেন তার উপর নির্ভর করে সে ধরনের, এবং তারপর যে ব্যবহারকারীর ইনপুট পড়তে একটি পরিবর্তনশীল মধ্যে, কিন্তু আমরা গত দুই সপ্তাহের মধ্যে দেখেছি যে swap 'র ফাংশন যে আমরা বাস্তবায়ন অনায়াসে চেষ্টা শুধু ভাঙ্গা ছিল. Swap ফাংশন সঙ্গে পুনরাহ্বান যে, আমরা শুধু ints হিসেবে A এবং B ঘোষণা তাহলে, আমরা সফলভাবে অদলবদল হয়নি অদল-বদল ভেতরে দুটি ভেরিয়েবল শুধু দুধ এবং OJ সঙ্গে চাই, কিন্তু swap ', ফিরে যত তাড়াতাড়ি সম্মানের সঙ্গে ফলাফল কি ছিল X এবং Y করতে, মূল মান? কিছুই. হ্যা. কিছুই কারণ, যে সময় ঘটেছে বিনিময়সমূহ, শুধুমাত্র তার স্থানীয় কপি পরিবর্তন সব বলতে হয়, যা এই সময়, যখনই আমরা করেছি আর্গুমেন্ট কাটাচ্ছি ফাংশান, আমরা করছি শুধু ঐ আর্গুমেন্ট কপি ক্ষণস্থায়ী. আপনি যে সঙ্গে কাজ করতে পারেন তাদের সঙ্গে আপনি চান যাই হোক না কেন, কিন্তু তারা কোন আছে চলুন মূল মূল্যবোধের উপর প্রভাবিত. তাই এই আপনি যদি সমস্যাযুক্ত scanf মতো একটি ফাংশন আছে চান জীবনে, যার উদ্দেশ্য স্ক্যান করা কীবোর্ড থেকে ব্যবহারকারীর ইনপুট এবং তারপর তাই, ঐ খালি স্থান পূরণ কথা বলতে হয়, যে এক্স মত একটি পরিবর্তনশীল দিতে একটি মান, আমি হলে কারণ শুধু scanf এক্স পাস, আপনি সর্বশেষ যুক্তি বিবেচনা যদি সপ্তাহে, scanf এটা চায় তাই করতে পারেন X একটি কপি সঙ্গে, কিন্তু তা না পারা আমরা যদি না আপনি স্থায়ীভাবে X পরিবর্তন , তাই কথা বলতে, একটি ভাণ্ডারী মানচিত্র scanf এক্স স্পট চিহ্নিত যেখানে, যদ্দ্বারা আমরা যাতে x এর ঠিকানা পাস scanf সেখানে এবং আসলে পরিবর্তন হয়ে যেতে পারে x এর মান. তাই প্রকৃতপক্ষে, সব এই প্রোগ্রাম আছে যে আমি আমার উৎস, scanf 0, করতে হলে 5m ডিরেক্টরি, scanf 0 করতে, বিন্দু, scanf কাট, সংখ্যা 50 অনুগ্রহ, 50 জন্য ধন্যবাদ. সুতরাং এটা, যে সব আকর্ষণীয় নয় কিন্তু প্রকৃতপক্ষে তা ঘটছে যত তাড়াতাড়ি আমি কল হিসাবে যে হয় এখানে x এর মান scanf স্থায়ীভাবে পরিবর্তিত হচ্ছে. এখন, এই সুন্দর বলে মনে হয় এবং ভাল, এবং আসলে, এটা আমরা সত্যিই প্রয়োজন হয় না মত মনে হয় সব আর এ CS50 লাইব্রেরি. উদাহরণস্বরূপ, এর চালানো যাক এখানে এই আরো একবার. আমাকে একটি দ্বিতীয় জন্য এটি পুনরায় চালু করা যাক. এর একটি সংখ্যা চেষ্টা করুন দয়া করে এবং পরিবর্তে আগের মতই 50 বলছে, এর ঠিক কোন বলা যাক. ঠিক আছে, যে একটু অদ্ভুত. ঠিক আছে. এখানে আর মাত্র কিছু গাজাখুরি. সুতরাং এটা মনে হয় না ভ্রান্ত পরিস্থিতিতে সব ব্যবস্থা. তাই আমরা শুরু ন্যূনতমরূপে প্রয়োজন কিছু ত্রুটি-পরীক্ষণ যোগ ব্যবহারকারী আছে নিশ্চিত করতে 50 ভালো একটি প্রকৃত সংখ্যা টাইপ, দৃশ্যত টাইপ শব্দ কারণ সমস্যাযুক্ত হিসেবে সনাক্ত করা হয় না, কিন্তু সম্ভবত এটি করা উচিত. এর এখন যে এই সংস্করণ তাকান চলুন শুরু করা যাক আমার প্রচেষ্টা GetString, reimplement করার. Scanf এই সব আছে তাহলে কার্যকারিতা সালে নির্মিত কেন আমরা এই সঙ্গে dabbling হয়েছে GetString ভালো প্রশিক্ষণ চাকার? আচ্ছা, এখানে সম্ভবত আমার নিজের GetString এর সহজ সংস্করণ যদ্দ্বারা এক সপ্তাহ আগে, আমি হয়ত বলতে পারেন, সম্পর্কে একটি স্ট্রিং দিতে হবে এবং তা বাফার কল. আজ, আমি শুধু শুরু করা যাচ্ছে না গৃহস্থালি তারকা, যা, রিকল বলছে এটা শুধু সমার্থক নয়. এটা ভীতিজনক দেখায় কিন্তু এটা সঠিক একই জিনিস. তাই আমাকে একটি পরিবর্তনশীল নামক বাফার দিতে যে একটি স্ট্রিং সংরক্ষণ করে যাচ্ছে, , ব্যবহারকারীর স্ট্রিং বলুন এবং তারপর, ঠিক আগের মতই, এর এই পাঠ ধার করার চেষ্টা করা যাক, scanf % এর এই সময় এবং তারপর বাফারে পাস. এখন, একটি দ্রুত বৈধতা পরীক্ষা. কেন আমি বলছি না এম্পারসেন্ড এই সময় বাফার? পূর্ববর্তী উদাহরণ থেকে অনুমান করা. শ্রোতা: চর তারকা একটি পয়েন্টার. DAVID Malan: ঠিক, এই সময়, গৃহস্থালি কারণ তারকা, ইতিমধ্যে একটি পয়েন্টার, একটি ঠিকানা থাকে সেখানে হচ্ছে যে তারা সংজ্ঞামতে. এবং scanf একটি ঠিকানা আশা যদি, এটা শুধু বাফারে পাস যথেষ্ট. আমি এম্পারসেন্ড বাফার বলার প্রয়োজন হবে না. অদ্ভুত, আপনি করতে পারে ভালো কিছু করতে. এটা ভিন্ন অর্থ আছে হবে. এই কমান্ডের সাহায্যে আপনি একটি পয়েন্টার দিতে হবে যা আসলে একটি পয়েন্টার, এর সাথে সি, কিন্তু এর জন্য একটি বৈধ জিনিস এখন, এর এটা সহজ রাখা যাক এবং সামঞ্জস্যপূর্ণ গল্প রাখতে. আমি শুধু এ পাস যাচ্ছি বাফার এবং যে সঠিক নয়. সমস্যা যদিও এই হল. আমাকে এগিয়ে যান এবং এই রান এটা পরে কম্পাইল করার প্রণালী প্রোগ্রাম. Scanf 1 করুন. ধুর, আমার কম্পাইলার এর আমার ত্রুটি ধরার. আমার এক জুসের বিজ্ঞাপন. ঝনঝন. এর, scanf-1.c বলা যাক. ঠিক আছে. আমরা শুরু করছি. আমার এইটা দরকার. এবং CS50 আইডি বিভিন্ন আছে কনফিগারেশন সেটিংস যে নিজেকে বিরুদ্ধে আপনাকে রক্ষা. আমি ঐ নিষ্ক্রিয় করা প্রয়োজন নিজে এই সময় ঝনঝন চলমান. তাই স্ট্রিং দয়া করে. আমি এগিয়ে যান এবং টাইপ করা যাচ্ছে না আমার প্রিয় হ্যালো বিশ্বের. নাল, ঠিক আছে. যে আমি টাইপ করা কি না. সুতরাং এটা ইঙ্গিতবহ এর কিছু ভুল হচ্ছে. আমাকে এগিয়ে যান এবং টাইপ করুন সত্যিই একটি দীর্ঘ স্ট্রিং. নাল জন্য ধন্যবাদ এবং আমি জানি না যদি আমি এটি বিপর্যস্ত করতে সক্ষম হতে যাচ্ছি. এর একটু কপি চেষ্টা করা যাক পেস্ট এবং এই সাহায্য করে দেখতে. শুধু এই একটি অনেক পেস্ট. এটা স্পষ্টভাবে একটি বড় স্বাভাবিকের চেয়ে স্ট্রিং. এর মাত্র সত্যিই এটা লিখতে শুরু করা যাক. না. ধুর! ছাই. কমান্ড পাওয়া যায়নি. সুতরাং যে সম্পর্কহীন নয়. আমি আটকানো কারণে যে কিছু খারাপ অক্ষর, কিন্তু এই পরিনত কাজ করা যাচ্ছে না. কারণ এর এই আরো একবার চেষ্টা করা যাক আমরা আসলে এটা বিপর্যস্ত হলে তা আরো মজা. এর এই টাইপ করুন এবং এখন, আমি আছি সত্যিই একটি দীর্ঘ স্ট্রিং কপি করতে যাচ্ছে এবং এখন কিনা দেখতে দিন আমরা এই জিনিস বিপর্যস্ত করতে পারেন. আমি স্পেস বাদ এবং বিজ্ঞপ্তি নতুন লাইন এবং সেমিকোলন এবং সব ভীতু অক্ষর. লিখুন. আর এখন নেটওয়ার্ক শুধু ধীর হচ্ছে. আমি স্পষ্ট, খুব দীর্ঘ কমান্ড-ভী নিচে অনুষ্ঠিত. ধুর! ছাই! কমান্ড পাওয়া যায়নি. ঠিক আছে. ওয়েল, বিন্দু তবু নিম্নলিখিত. তাই আসলে কি ঘটছে এই ঘোষণার সাথে প্রথম লাইন 16 গৃহস্থালি তারা বাফার? তাই আমি পেয়ে কি am আমি একটি পয়েন্টার ডিক্লেয়ার যখন? আমি পেয়ে গেছি সব চার বাইট মান বাফার বলা হয়, কিন্তু এটি ভেতরে কি এখন? এটা শুধু কিছু আবর্জনা মান. যে কোনো সময় আপনি একটি ভেরিয়েবল ডিক্লেয়ার সি, এটা শুধু কিছু আবর্জনা মান, এবং আমরা শুরু করছি এই বাস্তবতা উপর ট্রিপ. এখন, আমি, scanf বলতে হলে, এই ঠিকানায় যান এবং যাই হোক না কেন ব্যবহারকারী ধরনের করা. ব্যবহারকারী ধরনের যদি হ্যালো বিশ্বের, ভাল, আমি কোথায় রাখব না? বাফার একটি গার্বেজ মান. সুতরাং যে একটি তীর মত কোন ধরনের যে কে জানে যেখানে ইশারা করছে. হয়তো এটা নির্দেশ করে এখানে ডান আমার স্মৃতিতে. আর তাই যখন ব্যবহারকারী হ্যালো বিশ্বের ধরনের, প্রোগ্রাম লাগাতে চেষ্টা স্ট্রিং হ্যালো দুনিয়া ব্যাকস্ল্যাশ 0 মেমরি যে তাল মধ্যে. কিন্তু উচ্চ সম্ভাবনা, কিন্তু পরিষ্কারভাবে 100% সম্ভাবনা, কম্পিউটার তারপর দড়াম যাচ্ছে প্রোগ্রাম এই নয় কারণ মেমরি আমি স্পর্শ করার অনুমতি দেওয়া হবে. তাই সংক্ষেপে, এই প্রোগ্রাম ঠিক যে কারণে দ্বিধান্বিত. আমি মৌলিকভাবে কি করছি না? পদক্ষেপগুলো আমি ঠিক মত বাদ আছে আমরা Binky এর প্রথম উদাহরণ দিয়ে বাদ? হ্যা? শ্রোতা: মেমরি বরাদ্দ? DAVID Malan: মেমরি বরাদ্দ. আমি আসলে বরাদ্দ নি যে পংক্তিটি কোন স্মৃতি. সুতরাং আমরা উপায় কয়েক মধ্যে এই স্থির করা যাবে. এক, আমরা এটা সহজ রাখা যাবে এবং আসলে, এখন আপনি আছেন একটি blurring দেখতে শুরু করতে যাচ্ছে কি মধ্যে লাইনের একটি অ্যারের একটি স্ট্রিং কি, কি একটা হয় গৃহস্থালি তারকা চরসমূহ কি একটি অ্যারের, হয় হয়. এখানে একটি দ্বিতীয় উদাহরণ স্ট্রিং এবং নোটিশ জড়িত সব আমি লাইনে কাজ করেছি 16 পরিবর্তে বলছে, হয় যে বাফার একটি গৃহস্থালির কাজ করা যাচ্ছে তারকা, মেমরি একটি খণ্ড একটি পয়েন্টার, আমি খুব সক্রিয়ভাবে দিতে যাচ্ছি 16 অক্ষরের জন্য নিজেকে একটি বাফার, এবং আসলে, আপনি পরিচিত হন তাহলে শব্দটি বাফার সঙ্গে, সম্ভবত ভিডিও দুনিয়া থেকে, একটি ভিডিও বাফার, বাফার যেখানে, বাফার. ওয়েল, সংযোগ এখানে কি? ইউটিউব এর ওয়েল, ইনসাইড এবং ভিডিও প্লেয়ার এর ভিতরে সাধারণত একটি অ্যারে যে 16 বছরের বড়. এটা মাপ এক একটি অ্যারে হতে পারে মেগাবাইটে, হয়তো 10 মেগাবাইটে, এবং যে অ্যারের মধ্যে আপনার ব্রাউজার আছে , বাইট আভা ডাউনলোড মেগাবাইটে আভা ভিডিও, এবং ভিডিও প্লেয়ার, YouTube- এর বা কেবা এর শুরু যে অ্যারে থেকে বাইট পড়া, এবং যে কোনো সময় আপনি দেখতে শব্দ বাফার, বাফার, যে প্লেয়ার আছে মানে যে অ্যারে শেষে অর্জিত. নেটওয়ার্কের এটা না যে এত ধীর আরো বাইট অ্যারের refilled এবং যাতে আপনি বিট ফুরিয়েছে ব্যবহারকারী যাও প্রদর্শন করতে. তাই বাফার যথাযথ শব্দটি যে এইখানে এটা শুধু একটি অ্যারের, মেমরি খণ্ড. আর এটা ঠিক করবে কারণ এটি সক্রিয় আপনি অ্যারে আচরণ করতে পারে, যদিও তারা এমনকি বাফার যদিও, ঠিকানা হয় শুধু একটি প্রতীক, এটি একটি হল অক্ষরের ক্রমানুসারে, বাফার, যে আমার জন্য দরকারী, প্রোগ্রামার, আপনার চারপাশের তার নাম প্রেরণ করতে পারেন এটা ছিল যেন একটি পয়েন্টার, হিসাবে এটা যদিও একটি খণ্ড ঠিকানা ছিল 16 অক্ষর জন্য মেমরি. বলে, তাই আমি সহ্য করতে পারেন ঠিক, scanf যে শব্দ এবং এখন, তাই আমি এই প্রোগ্রাম করতে হলে, scanf 2 করতে, বিন্দু স্ল্যাশ, scanf 2, এবং টাইপ হ্যালো দুনিয়া, , যে সময়ের মধ্যে লিখুন হুম, কি ঘটেছে? স্ট্রিং দয়া করে. আমি কি ভুল করছি? হ্যালো দুনিয়া, বাফার. ওহে বিশ্ব. আহ, আমি এরকম ঘটছে তা জানা. ঠিক আছে. সুতরাং এটি আপ পড়া প্রথম স্থান পর্যন্ত. তাই আসুন শুধু একটি মুহূর্ত জন্য ঠকাই না দেওয়া এবং আমি শুধু কিছু টাইপ করতে চেয়েছিলেন বলে সত্যিই দীর্ঘ এই দীর্ঘ বাক্য মত যে এক, দুই, তিন, চার, পাঁচ, ছয়, সাত, আট, নয়, 10, 11, 12, 13, 14, 15, 16. ঠিক আছে. এটি সত্যিই একটি দীর্ঘ বাক্য. সুতরাং এই বাক্য আর 16 অক্ষর এবং তাই আমি এন্টার কি ঘটতে যাচ্ছে? ওয়েল, এই ক্ষেত্রে গল্প, আমি ঘোষণা বাফার আসলে একটি অ্যারের হচ্ছে যেতে 16 চরসমূহ প্রস্তুত সঙ্গে. তাই এক, দুই, তিন, চার, পাঁচ, ছয়, সাত, আট, নয়, 10, 11, 12, 13, 14, 15, 16. তাই 16 অক্ষর, এবং এখন, যখন আমি এই একটি দীর্ঘ ভালো কিছু পড়তে বাক্য, কি ঘটতে যাচ্ছে সে আমি এই মধ্যে পড়তে যাচ্ছি যে একটি দীর্ঘ হয় এস-ই-এন-টি-ই-এন-সি-ই, বাক্য. সুতরাং এই ইচ্ছাকৃতভাবে হয় একটি খারাপ জিনিস যে আমি তার পরেও লেখা রাখা আমার অ্যারের সীমানা, আমার বাফার সীমানা অতিক্রম. আমি ভাগ্যবান এবং প্রোগ্রাম পেতে পারে যত্ন চলমান রাখা এবং না হবে, কিন্তু সাধারণত, এই কথা বলার প্রকৃতপক্ষে আমার ক্র্যাশ প্রোগ্রাম হবে, এবং এটি একটি বাগ সংশোধন করা হয় আমার আমি ধাপে মুহূর্তে কোড সীমানা অতিক্রম যে অ্যারের, আমি কারণ এটা যদি জানতে না অগত্যা বিপর্যস্ত যাচ্ছে বা আমি শুধু ভাগ্যবান পেতে যাচ্ছি. সুতরাং এই সমস্যাযুক্ত কারণ এই ক্ষেত্রে, এটা কাজ বলে মনে হচ্ছে না এবং, যদিও এখানে ভাগ্য পরীক্ষা বাতিল আইডিই বেশ একটু সহ্য করতে মনে র আমরা শুরু করছি. অবশেষে. তাই আমি এই দেখতে পারেন যে শুধুমাত্র এক নই. তাই আমি ঠিক মজা টাইপিং অনেক ছিল সত্যিই একটি দীর্ঘ প্রকৃত ফ্রেইজ আউট এটা অবশ্যই অতিক্রম করেছে 16 বাইট, আমি কারণ এই পাগল দীর্ঘ বহু-লাইন টাইপ শব্দগুচ্ছ, এবং তারপর কি ঘটেছে লক্ষ্য. প্রোগ্রাম এটি মুদ্রণ চেষ্টা এবং তারপর একটি সেগমেন্টেশন ফল্ট না এবং সেগমেন্টেশন ফল্ট যখন হয় ভালো কিছু ঘটবে এবং অপারেটিং সিস্টেম বলছেন কোন, যে মেমরি স্পর্শ করতে পারবে না. আমরা হত্যা করতে যাচ্ছেন পুরাপুরি প্রোগ্রাম. তাই এই সমস্যা বলে মনে হয়. আমি প্রোগ্রাম যদ্দ্বারা উন্নত করেছি অন্তত, কিছু স্মৃতি আছে কিন্তু এই পুরা মনে হবে পেয়ে ফাংশন GetString কিছু সসীম দৈর্ঘ্য 16 স্ট্রিং. আপনি আর সমর্থন করতে চান তাহলে 16 অক্ষরের চেয়ে বাক্য, আপনি কি করেন? ওয়েল, আপনি বাড়াতে পারেন 32 এই বাফারের আকার বা যে ধরনের ছোট মনে হচ্ছে. কেন আমরা শুধু করতে না এটা 1,000 কিন্তু ফিরে ধাক্কা. Intuitively, এর প্রতিক্রিয়া কী শুধু করে এই সমস্যা এড়ানো 1,000 অক্ষর ভালো লেগেছে, বড় আমার বাফার? এই ভাবে GetString বাস্তবায়নের মাধ্যমে. কি এখানে ভাল বা খারাপ? হ্যা? শ্রোতা: আপনি অনেক বেঁধেও যদি স্থান এবং আপনি এটা ব্যবহার করবেন না, তারপর আপনি যে স্থান বরাদ্দ করা যাবে না. DAVID Malan: একেবারে. যদি তা চান না যতটা হিসাবে যদি বাংলাদেশের পোশাকশ্রমিকদের এর আসলে যারা বাইট 900 প্রয়োজন এবং এখনো আপনার জন্য বলছি যাহাই হউক না কেন মোট 1,000, আপনি শুধু আরও মেমরি গ্রাসকারী করছি আপনি প্রয়োজন তুলনায় ব্যবহারকারীর কম্পিউটার, এবং সব কিছু পরে আপনি ইতিমধ্যে সম্মুখীন হয়েছি জীবনে আপনি যখন যে প্রোগ্রাম প্রচুর চলমান এবং তারা মেমরি প্রচুর আপ খাওয়া করছি আসলে এই কর্মক্ষমতা প্রভাবিত করতে পারে এবং ব্যবহারকারীর অভিজ্ঞতা কম্পিউটারে. সুতরাং যে ধরনের একটি অলস সমাধান, নিশ্চিত হওয়ার জন্য, এবং বিপরীতক্রমে, এটা না শুধুমাত্র অযথা এর, কি সমস্যা এখনও আমি আমার বাফার করা, এমনকি যদি অবশেষ 1,000? হ্যা? শ্রোতা: স্ট্রিং দৈর্ঘ্য 1,001 হয়. DAVID Malan: ঠিক. আপনার স্ট্রিং দৈর্ঘ্য 1,001 হয়, তাহলে, আপনি সঠিক একই সমস্যা আছে, এবং আমার যুক্তি দ্বারা, আমি দেখব শুধু তারপর এটি 2000 করতে, কিন্তু আপনি জানেন না এটা কিভাবে হতে হবে বড় আগাম, এবং এখনো, আমি আমার প্রোগ্রাম কম্পাইল করতে হবে না মানুষ ব্যবহার করতে দেওয়ার আগে ও ডাউনলোড এটা. সুতরাং এই ঠিক ধরনের স্টাফ CS50 লাইব্রেরি চেষ্টা করে যে সাথে আমাদের সাহায্য এবং আমরা শুধুমাত্র নজরে করব অন্তর্নিহিত বাস্তবায়ন কয়েকটি এখানে, কিন্তু এই CS50 ডট সি হল এবং CS50 আইডিই পড়ছে যে ফাইল আপনি ব্যবহার করে থাকেন যে সব এই সপ্তাহের. এটা প্রাক কম্পাইল এবং আপনি করেছি স্বয়ংক্রিয়ভাবে এটি ব্যবহার করা হয়েছে থাকার প্রকৃতি দ্বারা ঝনঝন সঙ্গে ঠ CS50 পতাকা ড্যাশ, কিন্তু আমি সব দিয়ে নিচে স্ক্রল এই ফাংশন, এখানে GetString, এর, এবং আপনি একটি দিতে কি স্বাদ, ঘটছে এর সময়ে দ্রুত কটাক্ষপাত করা যাক আপেক্ষিক জটিলতা. এটা না একটি সুপার দীর্ঘ ফাংশন, কিন্তু আমরা না সব কঠিন সম্পর্কে চিন্তা আছে কিভাবে স্ট্রিং পেয়ে সম্পর্কে যেতে. তাই এখানে আমার বাফার এবং আমি দৃশ্যত নাল এটি আরম্ভ. এই, অবশ্যই, হয় গৃহস্থালি তারকা হিসাবে একই জিনিস, কিন্তু আমি এ সিদ্ধান্ত নিয়েছে CS50 লাইব্রেরি বাস্তবায়ন আমরা চলুন তাহলে যে সম্পূর্ণ গতিশীল হতে আমি একটি কিভাবে বড় অগ্রিম জানি না স্ট্রিং ব্যবহারকারীদের পেতে চান যাচ্ছি. তাই আমি শুরু করতে যাচ্ছি শুধু একটি খালি স্ট্রিং সঙ্গে এবং আমি যতটা বিল্ড আপ করতে যাচ্ছি মেমরি আমি ব্যবহারকারীর স্ট্রিং মাপসই করা হবে হিসাবে এবং আমি না থাকে যথেষ্ট, আমি জিজ্ঞাসা করতে যাচ্ছি আরো মেমরির জন্য অপারেটিং সিস্টেম. আমি তাদের স্ট্রিং সরাতে যাচ্ছি মেমরি একটি বড় খণ্ড মধ্যে এবং আমি মুক্তি বা মুক্ত করতে যাচ্ছি মেমরি অপ্রতুল বড় খণ্ড এবং আমরা শুধু চলুন iteratively এই কাজ. সুতরাং এক ঝলকে, এখানে শুধু একটি পরিবর্তনশীল যা দিয়ে আমি ট্র্যাক রাখা যাচ্ছে না আমার বাফার ক্ষমতা নিয়ে. আমি কত বাইট ফিট করতে পারে? এখানে একটি পরিবর্তনশীল n সঙ্গে এর আমি রাখা যাচ্ছে না, যা আসলে কতগুলি বাইট সম্পর্কে অবগত ব্যবহারকারী টাইপ করা হয়েছে বা যে বাফার. আপনি আগে এই দেখা না করে থাকেন তাহলে, আপনি উল্লেখ করতে পারেন যে কোন int মত একটি পরিবর্তনশীল নাম সুপারিশ হিসাবে যা, স্বাক্ষরবিহীন হয় মানে এটা অ নেতিবাচক, এবং কেন আমি কখনও উল্লেখ বিরক্ত করতে চাই কোন int ঠিক কোন int নয় যে, কিন্তু এটি একটি স্বাক্ষরবিহীন int- এর? এটি একটি অ-নেতিবাচক কোন int এর. [শ্রবণাতীত] এর অর্থ কি? শ্রোতা: এটা একটি পরিমাণ বর্ণনা হচ্ছে মেমরি [শ্রবণাতীত] হতে পারে. ডেভিড MALAN: হ্যাঁ. আমি স্বাক্ষরবিহীন যদি বলি তাই, এই আসলে আপনি অতিরিক্ত মেমরি এক বিট প্রদান আপনি যদি এটা অর্থহীন ধরনের মনে হচ্ছে, কিন্তু , যে অতিরিক্ত মেমরি এক বিট আছে আপনি অনেক হিসাবে দুইবার আছে মানে আপনি উপস্থাপন করতে পারেন মান, এটি একটি 0 বা 1 হতে পারে, কারণ. সুতরাং ডিফল্টরূপে, কোন int প্রায় হতে পারে নেতিবাচক 2 বিলিয়ন সমস্ত উপায় ইতিবাচক 2 বিলিয়ন পর্যন্ত. যারা বড় পরিসর, কিন্তু এটি এখনও ধরনের অযথা এর আপনি শুধুমাত্র যত্নশীল হলে মাপ, যা শুধু intuitively অঋণাত্মক হওয়া উচিত বা ইতিবাচক বা 0, ভাল তারপর, কেন আপনি 2 বিলিয়ন নাশক ঋণাত্মক সংখ্যা জন্য সম্ভাব্য মান আপনি কখনও তাদের ব্যবহার করতে যাচ্ছেন, তাহলে? তাই করতে পারেন স্বাক্ষরবিহীন, এখন আমার কোন int বলছে দ্বারা বিলিয়ন 4 0 এবং প্রায় হতে. সুতরাং এখানে কারণে শুধু কোন int সি এর আমরা এখন আর শুধু হিসাবে মধ্যে পাবেন না এটি পরিবর্তে একটি int কেন একটি গৃহস্থালি, কিন্তু এইখানে কি ঘটছে সারকথা আপনাকে, এবং কিছু উদাহরণস্বরূপ, ব্যবহার করা যেতে পারে, এমনকি কীভাবে PSet চার fgetc ফাংশন বা তারপর, আমরা এটা দেখতে পাবেন আবার সমস্যা পাঁচটি সেট ঠিক fgetc কারণ নাম হিসাবে চমৎকার ধরনের, সাজানোর arcanely, সুপারিশ এটি একটি ফাংশন যে একটি অক্ষর পায় এবং তাই কি মৌলিকভাবে ভিন্ন আমরা GetString মধ্যে কি করছেন সম্পর্কে আমরা ব্যবহার করছি না হয় একই ভাবে, scanf. আমরা শুধু ধাপে ধাপে বরাবর লতানে যাই হোক না কেন ব্যবহারকারী টাইপ করা হয়েছে, আমরা সবসময় এক বরাদ্দ করা যেতে পারে, কারণ গৃহস্থালির কাজ, এবং তাই আমরা সবসময় নিরাপদে পারেন একটি সময়ে এক গৃহস্থালি তাকান, এবং যাদু এখানে ঘটতে শুরু. আমি নিচে স্ক্রল করতে যাচ্ছি এই ফাংশন মাঝখানে শুধু সংক্ষেপে এই ফাংশন পরিচয় করিয়ে দিতে. অনেক একটি নেই মত যদি malloc ফাংশন আছে একটি realloc ফাংশন যেখানে realloc আপনি মেমরি একটি খণ্ড reallocate দেয় এবং এটা বড় বা ছোট করা. তাই দীর্ঘ সংক্ষিপ্ত বিবরণ এবং সঙ্গে আজকের জন্য আমার হাতের একটি তরঙ্গ, যে কি GetString, জানি করছে তা সাজানোর হয় এর আছে magically ক্রমবর্ধমান বা ব্যবহারকারী হিসাবে বাফার মাপে তার স্ট্রিং এ ধরনের. যদি তাই ব্যবহারকারী ধরনের একটি সংক্ষিপ্ত স্ট্রিং, এই কোড শুধুমাত্র যথেষ্ট বরাদ্দ মেমরি স্ট্রিং মাপসই. ব্যবহারকারী টাইপিং রাখে তাহলে আমি আবার এবং আবার তা করেনি এবং আবার, ভাল, যদি বাফার এর প্রাথমিকভাবে এই বড় এবং প্রোগ্রাম, বুঝতে পারবেন একটি মিনিট অপেক্ষা করুন, আমি স্থান থেকে বাদ, তা দ্বিগুণ যাচ্ছে বাফারের আকার এবং তারপর বাফারের আকার দ্বিগুণ এবং দ্বিগুনের যে কোড, আমরা এখানে যদি এটা তাকান, এটা শুধু এই চতুর এক অধি. আপনি এই বাক্য গঠন দেখা যায় না পারে আগে কিন্তু আপনি তারকা সমান যদি বলি, এই একই জিনিস হিসাবে হয় ক্ষমতা বার 2 বলছে. তাই এটা শুধু দ্বিত্ব রাখে বাফার ক্ষমতা এবং তারপর realloc বলার দিতে নিজেই যে আরো অনেক স্মৃতি. এখন, হিসাবে একটি সরাইয়া, সেখানে এখানে অন্যান্য কার্যাবলী হয় আমরা কোনো বিস্তারিত দেখব না করবে GetInt মধ্যে দেখানোর জন্য আর অন্য, আমরা GetInt GetString ব্যবহার. আমরা এটা না যে পরীক্ষা নাল, যা, রিকল, বিশেষ মূল্য যে কিছু ভুল হয়েছে মানে. আমরা মেমরি ফুরিয়েছে. ভাল যে জন্য পরীক্ষা. আর আমরা একটি প্রহরী মান আসতে. কিন্তু আমি যত মন্তব্য মুলতবি করব কেন এবং তারপর আমরা scanf এর এই চাচাতো ভাই ব্যবহার যদি sscanf বলা হয় এবং এটি সক্রিয় আউট যে sscanf, বা স্ট্রিং, scanf, আপনি লাইন কটাক্ষপাত দেয় যে ব্যবহারকারী টাইপ এবং আপনি বাতিল করেছে মূলত এটা বিশ্লেষণ এবং আমি কি এখানে কি করছেন আমি sscanf বলার করছি হয়, ব্যবহারকারী আছে যাই হোক না কেন বিশ্লেষণ টাইপ করা এবং নিশ্চিত% আমি, সেখানে এটি একটি পূর্ণসংখ্যা, এবং আমরা না করবে না এছাড়াও আছে ঠিক কেন আজ ঢোকা সংক্ষেপে একটি% এখানে C, কিন্তু যে পারবেন ব্যবহারকারী টাইপ করা হয়েছে, তাহলে আমাদের সনাক্ত করতে সংখ্যা পর বাজে কিছু. তাই কারণে যে GetInt এবং GetString, পুনরায় চেষ্টা, পুনরায় চেষ্টা করার জন্য আপনাকে বলতে, পুনরায় চেষ্টা কারণ সব হয় আমরা লিখিত করেছি কোড, এটা কোন ধরনের ব্যবহারকারীর ইনপুট দিকে তাকিয়ে আছে এমনটা নিশ্চিত করা যে এটি সম্পূর্ণরূপে সাংখ্যিক এর অথবা এটি একটি প্রকৃত ভাসমান এর বিন্দু মান বা মত, কি মূল্য উপর নির্ভর করে আপনি ব্যবহার করছেন কাজ. রক্ষে. ঠিক আছে. যে একটি একগাল ছিল কিন্তু পয়েন্ট এখানে যে আমরা ছিল কারণ যারা প্রশিক্ষণ চাকার কারণ সর্বনিম্ন পর্যায়ে রয়েছে শুধু তাই অনেক কিছু আছে আমরা চেয়েছিলাম যে ভুল হয়ে যেতে পারে যাও preemptively হ্যান্ডেল করতে অবশ্যই সেগুলো ক্লাসের নিকটতম সপ্তাহ, কিন্তু এখন কীভাবে PSet চার এবং PSet পাঁচটি সাথে এবং তার পরেও আপনি এটি কাছে আরো দেখতে হবে আপনি কিন্তু আপনি আরো সক্ষম হন এর সমস্যার ঐ ধরণের সমাধান নিজেকে. GetString, বা কোন প্রশ্নের উপর GetInt? হ্যা? শ্রোতা: কেন আপনি দ্বিগুণ হবে বাফার ক্ষমতা বরং শুধু বৃদ্ধি বেশী এটা সঠিক পরিমাণ? DAVID Malan: ভাল প্রশ্ন. কেন আমরা ক্ষমতা দ্বিগুণ হবে বাফার উল্টোদিকে শুধু তা বৃদ্ধি করতে কিছু ধ্রুবক রয়েছে যার মান দ্বারা? এটি একটি নকশা সিদ্ধান্ত ছিল. আমরা শুধু এটা থাকে কারণ যে সিদ্ধান্ত নিয়েছে সময়-জ্ঞানী ব্যয়বহুল একটু জিজ্ঞাসা একটি হতে অপারেটিং সিস্টেম মেমরি জন্য, আমরা না মধ্যে পেয়ে শেষ করতে চান বড় স্ট্রিং জন্য একটি অবস্থা আমরা জিজ্ঞাসা করা হয় যে আবার এবং আবার অপারেটিং সিস্টেম এবং আবার এবং আবার মেমরি জন্য দ্রুত পারম্পর্য. তাই আমরা ঠিক কিছুটা, সিদ্ধান্ত ইচ্ছামত কিন্তু আমরা যুক্তিসঙ্গতভাবে আশা করি, যে, আপনি, আসুন কি জানেন এগিয়ে নিজেদেরকে পেতে চেষ্টা এবং ঠিক তাই এটি দ্বিত্ব রাখতে আমরা সময়ের পরিমাণ হ্রাস আমরা malloc কল আছে বা realloc কিন্তু মোট রায় বুদ্ধিমান অভাবে কল কি ব্যবহারকারীদের টাইপ করতে চাইতে পারেন. উভয় পদ্ধতিতে বিতর্কিত হতে পারে. তর্কসাপেক্ষ ভাল. সুতরাং আসুন একটি দম্পতি কটাক্ষপাত করা যাক মেমরি অন্য পার্শ্ব প্রতিক্রিয়া, ভুল হয়ে যেতে পারে যে কিছু এবং টুলস যে আপনি যা করতে পারেন ভুল এই ধরণের আঁকড়ি ব্যবহার. এটা যদিও, আপনি সব দেখা যাচ্ছে check50, আপনি যতটা বলা হয় নি বগী লেখা হয়েছে সপ্তাহে এক থেকে কোড, এমনকি সব check50 পরীক্ষা হয় তাহলে পাস, এবং এমনকি যদি আপনি এবং আপনার TF যে সুপার আত্মবিশ্বাসী হয় উদ্দেশ্যে আপনার কোড কাজ করে. তোমার কোড বগী হয়েছে বা আপনি যে সব ভ্রান্ত, CS50 লাইব্রেরি ব্যবহার করে, মেমরি লিক হয়েছে. আপনি অপারেটিং সিস্টেম জিজ্ঞাসা করে থাকেন প্রোগ্রাম অধিকাংশ মেমরি জন্য আপনি লিখিত করেছি, কিন্তু আপনি কি করেছেন আসলে এটা ফেরত দেওয়া না. আপনি নামক GetString করেছি এবং GetInt এবং GetFloat,, কিন্তু GetString সঙ্গে, আপনি করেছি unGetString বা দিন বলা হয় না স্ট্রিং পিছনে বা মত, কিন্তু আমরা দেখা করেছি GetString, মেমরি বরাদ্দ আছে যদি malloc প্রণালী বা এই দ্বারা শুধু যা ফাংশন realloc, আত্মা খুব অনুরূপ, এবং এখনো, আমরা চলেছি জন্য অপারেটিং সিস্টেম জিজ্ঞাসা মেমরি এবং মেমরি আবার এবং আবার কিন্তু এটা ফেরৎ না. এখন, একটি সরাইয়া হিসাবে, এটা দেখা যাচ্ছে যে একটি প্রোগ্রাম, মেমরি সব ছেড়ে দেয় স্বয়ংক্রিয়ভাবে মুক্ত করা হয়. সুতরাং এটি একটি বিশাল চুক্তি হয়েছে না. এটি বিরতি যাচ্ছে না আইডিই বা ধীর জিনিষ নিচে, কিন্তু যখন প্রোগ্রাম না সাধারণত মেমরি লিক এবং তারা একটি দীর্ঘ সময় জন্য চালাচ্ছেন. কখনো বোকা একটু দেখা করে থাকেন তাহলে ম্যাক অপারেটিং সিস্টেম বা বালিঘড়ি মধ্যে বিচ বল উইন্ডোজ এটা ধরনের যেখানে গতি কমে বা চিন্তা বা চিন্তা অথবা সত্যিই শুরু একটি মুছে দেব যাও মন্থর, এটা খুব সম্ভবত হতে পারে একটি মেমরি লিক ফলাফল. লিখেছেন প্রোগ্রামাররা যারা আপনি ব্যবহার করছেন সফটওয়্যার অপারেটিং সিস্টেম মেমরির জন্য জিজ্ঞাসা প্রতি কয়েক মিনিট, প্রতিটি ঘন্টা. কিন্তু আপনি চালাচ্ছেন, এটা এমনকি যদি সফটওয়্যার, আপনার কম্পিউটার এ কমিয়ে আনা ঘন্টার পর ঘন্টা বা দিনের জন্য, আপনি আরো এবং আরো জন্য জিজ্ঞাসা করা হতে পারে মেমরি এবং না আসলে এটি ব্যবহার এবং তাই আপনার কোড করা, বা হতে পারে প্রোগ্রাম, মেমরি লিক হতে পারে এবং আপনি মেমরি লিক শুরু হলে, অন্যান্য প্রোগ্রামের জন্য কম মেমরি আছে, এবং প্রভাব হয় সবকিছু মন্দীভূত. এখন, এই পর্যন্ত এক মাধ্যম সবচেয়ে নৃশংস প্রোগ্রাম আপনি সুযোগ থাকবে CS50 মধ্যে চালানোর জন্য যতটা তার আউটপুট চেয়ে আরও বেশি গূঢ় হিসাবে ঝনঝন এর বা এর করা বা কমান্ড কোন আমরা আগে রান করেছি লাইন প্রোগ্রাম কিন্তু সৌভাগ্যক্রমে, তার আউটপুট এমবেড কিছু সুপার সহায়ক টিপস যে দরকারী হয় কীভাবে PSet চার হতে হবে অথবা অবশ্যই পাঁচটি pset. সুতরাং Valgrind একটি টুল যে পর্যবেক্ষণ ব্যবহার করা যেতে পারে আপনার প্রোগ্রামে মেমরি তথ্য ফাঁসের জন্য. এটি চালানোর জন্য অপেক্ষাকৃত সহজ. এমনকি আপনি, Valgrind এবং তারপর রান এটি একটি সামান্য বাগাড়ম্বরপূর্ণ যদিও, ড্যাশ ড্যাশ লিক চেক পুরো সমান, এবং তারপর বিন্দু কাট এবং আপনার প্রোগ্রামের নাম. সুতরাং Valgrind তারপর আপনার প্রোগ্রাম চালানো হবে এবং আপনার প্রোগ্রাম খুব শেষে এটি শোধবোধ হয়ে আগে চলমান এবং , আপনি অন্য প্রম্পট দেয় তা বিশ্লেষণ করতে যাচ্ছে আপনার প্রোগ্রাম এটি চলমান হয়েছে যখন এবং আপনি ফুটা হয়নি বলুন এখনো ভালো কোনো মেমরি এবং, আপনি মেমরি স্পর্শ হয়নি যে আপনি অন্তর্গত করা হয়নি? এটা সবকিছু ধরা যাবে না, কিন্তু এটা অধিকাংশ জিনিস ধরার এ প্রশংসনীয় ভাল. তাই এখানে আমার থাকার চালান একটি উদাহরণ এই প্রোগ্রামটি রান Valgrind হচ্ছে, নামক একটি প্রোগ্রাম মেমরি, এবং আমি যাচ্ছি যে লাইন তুলে ধরতে শেষ পর্যন্ত আমাদের আগ্রহের. তাই এমনকি আরো distractions আছে আমি স্লাইড থেকে মুছে ফেলেন যে. কিন্তু এর ঠিক কি দেখতে দিন প্রোগ্রাম আমাদের বলার করতে সক্ষম. এটা আমাদের কিছু বলার করতে সক্ষম আকার 4 অবৈধ লিখতে চাই. অন্য কথায়, আপনার মেমরি স্পর্শ, মেমরি বিশেষভাবে 4 বাইট আপনি থাকা উচিত নয় যে, Valgrind আপনি বলতে পারেন. আকার 4 অবৈধ লেখার. আপনি চার বাইট স্পর্শ আপনি থাকা উচিত নয় যে. কোথায় আপনি যে কাজ হয়নি? এই সৌন্দর্য. স্মৃতি বিন্দু গ লাইন 21 যেখানে আপনি হয় মাতাল আপ এবং এটি সহায়ক যে কেন. অনেক GDB মত, এটা সাহায্য করতে পারেন প্রকৃত ত্রুটি এ আপনি নির্দেশ. এখন, এই এক একটি সামান্য আরো বাগাড়ম্বরপূর্ণ, বিভ্রান্তিকর না তাহলে. 1 ব্লকে 40 বাইট স্পষ্টভাবে হয় ক্ষয় রেকর্ড 1 1 এর মধ্যে হারিয়ে গেছে. ওটার মানে কি? ওয়েল, এটা আপনার জন্য জিজ্ঞাসা মানে 40 বাইট এবং আপনি তা ফেরত দেয় না. আপনি malloc বলা অথবা আপনি বলা GetString এবং অপারেটিং সিস্টেম আপনি 40 বাইট, কিন্তু আপনি কখনও দিয়েছেন মুক্ত বা যে মেমরি মুক্তি, ও নিরপেক্ষ হতে হবে, আমরা দেখাতে না করেছি আপনি কিভাবে মেমরি ফেরত দিতে. একটি সুপার আছে দেখা যাচ্ছে সহজ ফাংশন ফ্রি বলা. এক যুক্তি, জিনিস লাগে আপনি বিনামূল্যে অথবা ফেরত দিতে চান কিন্তু 40 বাইট, দৃশ্যত, এই প্রোগ্রাম লাইনে হারিয়ে হয়েছে মেমরি 20 সি বিন্দু. তাই আসুন এই প্রোগ্রাম দেখতে দিন. এটা অতি অকাজের. এটা শুধুমাত্র প্রমান এই বিশেষ ত্রুটি. তাই এর কটাক্ষপাত করা যাক. এখানে প্রধান ও প্রধান, নোটিশ, কল হয় একটি ফাংশন f এবং তারপর আয় বলা. সুতরাং যে সব আকর্ষণীয় নয়. F কী কাজ করে? আমি একটি প্রোটোটাইপ সঙ্গে মাথা ঘামান না লক্ষ্য করুন. আমি কোড রাখতে চেয়েছিলেন যতটা সম্ভব সংক্ষিপ্ত. তাই আমি প্রধান উপরে F করা এবং যে, অবশ্যই, সূক্ষ্ম এই মত ছোট প্রোগ্রামের জন্য. তাই চ কিছু আসতে এবং না না না কিছু গ্রহণ করা, কিন্তু এটা এই কাজ করে. এটা অনেক ভালো, ঘোষণা একটি পোলট্রি খামারে Binky উদাহরণে, যে এক্স নামক একটি পয়েন্টার যাচ্ছে কোন int এর ঠিকানা সংরক্ষণ. সুতরাং যে বাম দিকে আছে. ইংরেজিতে, কি করছেন ডান দিকে? যে কেউ? এই আমাদের জন্য কী করছে? হ্যা? শ্রোতা: [শ্রবণাতীত] বার int মাপ যা 10 গুণ যে [শ্রবণাতীত] DAVID Malan: গুড এবং আমার সংক্ষেপ করা যাক. সুতরাং 10 পূর্ণসংখ্যার জন্য পর্যাপ্ত স্থান বরাদ্দ বা 10, int মাপ, কি এটা 4 হয় চার বাইট, তাই 10 বার 40, আমি করেছি যে ডান দিকে তাই হাইলাইট আমাকে 40 বাইট দিতে হয় এবং প্রথম বাইট ঠিকানা সঞ্চয় X মধ্যে. এবং এখন সর্বশেষে, এবং এখানে কোথায় এই প্রোগ্রামটি বগী, কি হয় লাইন 21 সঙ্গে ভুল যে যুক্তিবিজ্ঞান উপর ভিত্তি করে? কি লাইন 21 সঙ্গে ভুল? হ্যা? শ্রোতা: আপনি না পারেন [শ্রবণাতীত] X মধ্যে সূচক. ডেভিড MALAN: হ্যাঁ. আমি যে মত এক্স মধ্যে সূচক উচিত না. সুতরাং সিনট্যাক্স, এটা ঠিক আছে. কি সুন্দর আপনার মত অনেক, হয় একটি অ্যারের নাম বিবেচনা করতে পারেন যদিও এটা একইভাবে, একটি পয়েন্টার এটা হিসাবে যদিও আপনি একটি পয়েন্টার বিবেচনা করতে পারেন একটি অ্যারের, এবং তাই আমি সিনট্যাক্স পারেন X বন্ধনী কিছু বলতে, এক্স বন্ধনী আমি, কিন্তু 10 সমস্যাযুক্ত. কেন? শ্রোতা: এটা ভিতরে না কারণ. ডেভিড MALAN: এটা না মেমরি যে তাল ভিতরে. বৃহত্তম মান কত আমি উচিত যারা বর্গাকার বন্ধনী মধ্যে স্থাপন করা? 9 থেকে 9, 0. শূন্য ইন্ডেক্স এর কারণ. তাই 9 মাধ্যমে 0 জরিমানা করা হবে. বন্ধনী 10 ভালো নয় এবং কিন্তু, প্রত্যেক সময় যদিও প্রত্যাহার আমি CS50 আইডিই করতে চেষ্টা বলে মনে হচ্ছে বাজে মান টাইপ করে ক্র্যাশ, এটা সবসময় সহযোগিতা করে না এবং প্রকৃতপক্ষে, আপনি প্রায়ই ভাগ্যবান পেতে মাত্র কারণ অপারেটিং সিস্টেম না লক্ষ্য যে আপনি কি তাই সামান্য মেমরি কিছু খণ্ড পাস, আপনি টেকনিক্যালি মধ্যে থাকুন, কারণ আপনার সেগমেন্ট, কিন্তু আরো যে একটি অপারেটিং সিস্টেম ক্লাসে, এই মত ও তাই কিছু খুব সহজেই ধরা পড়েনি যেতে পারে. তোমার প্রোগ্রাম কখনও বিপর্যস্ত যাচ্ছে ধারাবাহিকভাবে কিন্তু হয়তো একবার অল্প সময়ের মধ্যে. আর তাই এর Valgrind চেষ্টা করা যাক এই প্রথম, এবং এখানে যেখানে আমরা মগ্ন পাবেন প্রতিমুহূর্তে আউটপুট দ্বারা. তাই মেমরি Valgrind লিক চেক করতে পূর্ণ ডট স্ল্যাশ মেমরি সমান. আমি প্রতিজ্ঞা করছি কেন এবং এখানে এই অভিভূত হবে. এখানে Valgrind, এখানে কি কি একজন প্রোগ্রামার, কিছু বছর ago- এটি একটি ভাল ধারণা হবে সিদ্ধান্ত নিয়েছে ভালো আউটপুট দেখুন জন্য. তাই আসুন এই জানার অনুমতি দেবেন. বাম হাতের উপর তাই সব পথ কোন ভাল কারণ সাইড প্রোগ্রাম প্রক্রিয়া আইডি আমরা শুধু, ইউনিক আইডেন্টিফায়ার চালানো প্রোগ্রামের জন্য আমরা শুধু দৌড়ে. আমরা থেকে যে মোছা স্লাইড, কিন্তু আছে এখানে কিছু দরকারী তথ্য. এর খুব উপরে স্ক্রল আপ করা যাক. আমরা শুরু যেখানে এখানে. সুতরাং এটা যে সব অনেক আউটপুট না. এখানে যে অবৈধ লেখার এর লাইন 21 আকার 4. ওয়েল, লাইন 21 কি ছিল? লাইন 21 ঠিক ছিল এই এবং এটা জ্ঞান করে তোলে আমি বৈধভাবে আছি যে আমি নই, কারণ 4 বাইট লেখা এই পূর্ণসংখ্যা লাগাতে চেষ্টা করছে, যা, কিছু হতে পারে এটা শুধু হতে হবে শূন্য, কিন্তু আমি চেষ্টা করছি একটি অবস্থানে এটা করা যে আমার সাথে জড়িত নয়. এক তাছাড়া, এখানে নিচে, 40 বাইট ব্লক স্পষ্টভাবে রেকর্ড 1 মধ্যে হারিয়ে যায়. যে আমি malloc কল যখন এর কারণ এখানে, আমি আসলে মেমরি মুক্ত না. তাই কিভাবে আমরা এই স্থির করা যাবে? আমাকে এগিয়ে যান এবং একটি একটু নিরাপদ হতে সেখানে 9 এবং এখানে বিনামূল্যে এক্স আমাকে দিন. আজকের জন্য নতুন ফাংশন. আমি এখন মেমরি ডট স্ল্যাশ করা পুন: প্রকাশ করে, আছে, এটা আবার প্রথম Valgrind চালানো যাক আমার জানালা সর্বাধিক করে এন্টার চাপুন. এখন, এটা ভালো. তারা ভাল খবর সমাহিত এই আউটপুট সব. সমস্ত গাদা ব্লক মুক্ত ছিল. আমরা কি গাদা ফিরে আসবো হয়, কিন্তু কোন তথ্য ফাঁসের সম্ভব. সুতরাং এই মাত্র আরেকটি হল আপনার টুল কিট জন্য টুল যা দিয়ে আপনি শুরু করতে পারেন এখন যে মত ত্রুটি খুঁজে. কিন্তু দেখুন কি আরো ভুল এখানে যেতে পারেন. এখন এর রূপান্তর করা যাক আসলে কোন সমস্যা সমাধানে. একটি সরাইয়া হিসাবে, এই একটি উপশম হবে তাহলে বিভ্রান্তি বা টান অল্প, এই এখন মজার হয়. হ্যা. যে বেশ ভাল. পয়েন্টার কারণ ঠিকানা ও ঠিকানা কনভেনশন দ্বারা সাধারণত হয় হেক্সাডেসিমেল দিয়ে লেখা. হা, হা, এই এখন মজার হয়. যাহাই হউক না কেন, তাই এখন আসুন আসলে একটি সমস্যা সমাধানের জন্য. এই সুপার হয়েছে সুপার পর্যন্ত নিম্নস্তরের, আমরা আসলে দরকারী করতে পারেন এই নিম্নস্তরের বিস্তারিত সঙ্গে কিছু. তাই আমরা কয়েক সপ্তাহ চালু আগে একটি অ্যারের ধারণা. একটি অ্যারের সুন্দর ছিল, কারণ এটা তোলে আমাদের কোড পরিষ্কার করা কঠিন আমরা একটি লিখতে চেয়েছিলেন কারণ একাধিক ছাত্রদের সঙ্গে প্রোগ্রাম বা একাধিক নাম এবং ঘর ও ছাত্রাবাসে এবং কলেজ ও যে সব, আমরা সবকিছু আরো সংরক্ষণ করতে পারে পরিচ্ছন্নভাবে একটি অ্যারের ভিতরে. কিন্তু এক downside উত্থাপন একটি অ্যারের পর্যন্ত. আপনি এটা নিজে ভোগ করে না থাকেন, এমনকি যদি একটি প্রোগ্রাম, শুধু অমনটা, একটি খারাপ জিনিস কি একটি অ্যারের সম্পর্কে, সম্ভবত? আমি কিছু murmurs শুনতে. শ্রোতা: এটা কঠিন আকার পরিবর্তন. ডেভিড MALAN: এটা কঠিন আকার পরিবর্তন. আপনি আকার পরিবর্তন করতে পারবেন না একটি অ্যারের, আসলে কোনটাই সি ইন, আপনি অন্য অ্যারের বরাদ্দ করা যেতে পারে, পুরানো এক থেকে সবকিছু সরানো এখন নতুন, এবং মধ্যে কিছু অতিরিক্ত স্থান আছে, কিন্তু এটি একটি ভালো না জাভা বা পাইথন মত ভাষা বা অন্য কোন সংখ্যা যা দিয়ে আপনি প্রত্যেক কিছু পরিচিত হতে পারে যেখানে আপনি শুধু কিছু যোগ রাখতে পারেন একটি অ্যারের শেষে বিরক্তিকরভাবে. আপনি একটি অ্যারে আছে যখন তার আকার যে আকার 6, এবং ধারণা আগে মত এত একটি নির্দিষ্ট আকারের একটি বাফার হচ্ছে, আপনি গেট আউট অনুমান আছে কি সাইজ আপনি এটা হতে চান না? আপনি খুব বড় অনুমান, আপনি জায়গা নষ্ট করছি. আপনি খুব ছোট অনুমান, আপনি অন্তত, যে তথ্য সংরক্ষণ করতে পারে না আরো অনেক কাজ ছাড়া. পয়েন্টার তাই আজ, ধন্যবাদ, আমরা যা করতে পারেন একসাথে আমাদের নিজস্ব সেলাই শুরু ডাটা স্ট্রাকচার, এবং এ আসলে, এখানে এমন কিছু বিষয় যে একটু বেশি মনে হচ্ছে প্রথম নজরে রহস্যপূর্ণ, কিন্তু এই আমরা একটি লিঙ্ক ডাকবো কি তালিকা, এবং সংক্ষিপ্ত বিবরণ তার নাম ধরনের এটা. এটি সংখ্যার একটি তালিকা, বা এই ক্ষেত্রে, সংখ্যার একটি তালিকা, কিন্তু এটি কিছু একটি তালিকা হতে পারে, কিন্তু পারে এটি একসাথে তীর দ্বারা লিঙ্ক এবং মাত্র একটি অনুমান নিতে কি কৌশল নিয়ে আমরা পাবে যাচ্ছি একসঙ্গে সেলাই করা, সাজান একটি থ্রেড সঙ্গে ভুট্টার খই মত, একটি এখানে তালিকা আয়তক্ষেত্র লিঙ্ক? তার সংখ্যা? অন্তর্নিহিত ভাষা বৈশিষ্ট্য কী? শ্রোতা: একটি পয়েন্টার. ডেভিড Malan: একটি পয়েন্টার. সুতরাং তিরগুলো প্রতিটি এখানে প্রতিনিধিত্ব একটি পয়েন্টার অথবা একটি ঠিকানা. তাই অন্য কথায়, যদি আমি চাই সংখ্যার একটি তালিকা সংরক্ষণ করতে, যদি আমি চাই আমি শুধু এটি সংরক্ষণ করতে পারবেন না বড় হয়ে যায় এবং সঙ্কুচিত করার ক্ষমতা একটি অ্যারের মধ্যে আমার ডাটা স্ট্রাকচার. তাই আমি একটু থাকতে হবে আরো কুতর্ক, কিন্তু এই যে লক্ষ্য ছবি ধরনের সুপারিশ আপনি শুধু একটু থ্রেড পেয়েছেন যে সবকিছু একসঙ্গে সংযোগ, সম্ভবত স্থান করতে যে কঠিন নয় যারা rectangles মধ্যে মধ্যে দুই অথবা যারা নোড দুই, হিসাবে আমরা শুরু করব একটি নতুন নোড রাখা, তাদের আহ্বান, এবং তারপর কিছু নতুন থ্রেড সঙ্গে, শুধু একসঙ্গে তিন নোড খানা, প্রথম এক, গত এক, এবং এক আপনি শুধু মাঝখানে ঢোকানো হয়. এবং প্রকৃতপক্ষে একটি লিঙ্ক তালিকা, একটি অ্যারের ভিন্ন, গতিশীল হয়. এটা অবধি প্রসারণ করা সম্ভব এবং এটি করতে পারেন সঙ্কুচিত এবং আপনি না জানেন বা অগ্রিম কিভাবে যত্ন আছে অনেক তথ্য আপনি সংরক্ষণ করা চলুন, কিন্তু এটি আমরা একটু হতে হবে সক্রিয় আউট এই বাস্তবায়ন কিভাবে সম্পর্কে সতর্ক থাকুন. সুতরাং প্রথম এর আমরা বাস্তবায়ন কিভাবে বিবেচনা করা যাক এই সামান্য আয়তক্ষেত্র এক. এটা কোন int বাস্তবায়ন করা সহজ. আপনি শুধু তারপর int n এবং বলে আপনি কোন int জন্য 4 বাইট পেতে, কিন্তু আমি কোন int পেতে পারি কিভাবে, এন কল এবং তারপর একটি পয়েন্টার, এর পরের কল করা যাক. আমাদের অনুমতি ছাড়া এই পেরেছিলাম কিছু কিছু আমরা চাই কিন্তু আমি একটি কাস্টম তথ্য কাঠামো প্রয়োজন. হ্যা? শ্রোতা: ampersand [শ্রবণাতীত]. DAVID Malan: তাই এম্পারসেন্ড আমরা করতে ব্যবহার করা হবে সম্ভাব্য একটি নোডের ঠিকানা পেতে. কিন্তু আমরা অন্য প্রয়োজন সি এর বৈশিষ্ট্য পাওয়া যায় যাতে আমার তৈরি করার ক্ষমতা দিতে এই কাস্টম আয়তাকার, এই কাস্টম পরিবর্তনশীল আপনি মেমরি, হবে. শ্রোতা: একটি struct. DAVID Malan: একটি struct. গত সপ্তাহ থেকে প্রত্যাহার, আমরা চালু struct, এই অপেক্ষাকৃত সহজ শব্দ যে আমাদের এই মত কিছু করতে দেয়. সি একটি তথ্য দিয়ে আসে না কাঠামো ছাত্র বলা. এটা কোন int এবং ভাসা ও গৃহস্থালি এবং সঙ্গে আসে যেমন, কিন্তু এটা ছাত্র সঙ্গে আসে না, কিন্তু আমরা একটি ছাত্র ডাটা টাইপ তৈরি করতে পারেন, এই সিনট্যাক্স সঙ্গে একটি ছাত্র কাঠামো, এখানে. এবং আপনি আবার এবং আবার এই দেখতে পাবেন. তাই চিন্তার কিছু নেই মূলশব্দ memorizing, কিন্তু গুরুত্বপূর্ণ যে শব্দ হয় আমরা বলেন যে শুধু সত্য struct এবং তারপর আমরা এটা ছাত্র বলা হয় এবং ভিতরে ছাত্র একটি নাম এবং একটি ঘর ছিল একটি dorm বা মত বা. আর তাই আজ এখন, আমি কি এই উত্থাপন করা যাক. আমি একটি কয়েকটি শব্দ যোগ করা হয়, কিন্তু যদি আমি চাই করেছি যে এই আয়তাকার বাস্তবায়ন কোন int এবং একটি উভয় পেয়েছিলাম পয়েন্টার, আপনি, আমি কি করছি জানি নোড বলা একটি struct ঘোষণা করা যাচ্ছে. আমি বলতে যাচ্ছি, এটি ভেতরে আছি একটি নোড, এই আয়তক্ষেত্র, কোন int আছে এবং আমরা ডাকবো এন ও এটা পরবর্তী পয়েন্টার আছে. এবং এই একটি সামান্য বাগাড়ম্বরপূর্ণ হয় কিন্তু আপনি এটা আমার মনে হয়, ছবিতে ছিল তীর একটি মুহূর্ত আগে কি ডাটা টাইপ এর হয়? কোথায় সেই তীর প্রতিটি নির্দেশ করা হয় তথ্য কি ধরনের কাঠামো করতে? এটা শুধু কোনটাই কোন int ইশারা. এটি এর প্রতি নির্দেশ পুরো আয়তক্ষেত্রাকার জিনিস এবং যে আয়তক্ষেত্রাকার জিনিস, আমরা একটি নোড বলা হয়, বলেন. আর তাই আমরা ধরনের আছে পৌনঃপুনিকভাবে এই যেমন নির্ধারণ একটি নোড যে, আমরা বলবে এন নামক কোন int থাকতে হবে এবং একটি পয়েন্টার পরের এবং বলা যা করতে ডাটা স্ট্রাকচার ধরণ যে পয়েন্টার পয়েন্ট দৃশ্যত হয় struct নোড হতে যাচ্ছে. সুতরাং এই annoyingly বাগাড়ম্বরপূর্ণ হয় এবং মাত্র, গোঁড়া হবে কারণ কেন আমরা করতে পারেন না শুধু এই বলে, যা অকপটে অনেক বেশি পাঠযোগ্য দেখায় রিকল পড়তে সি যে কারণ হল কিছু উপর থেকে নিচ, ডানে বামে. আমরা সেমিকোলন পেতে হওয়া পর্যন্ত এটা না শব্দ নোড আসলে বিদ্যমান. আমরা এই সাজানোর আছে সেটি যদি তাই তথ্য ভিতরে চক্রাকার রেফারেন্স কাঠামো, আমরা এই কাজ করতে হবে, যেখানে আমরা শীর্ষে struct নোড বলতে যা আমাদের এই বর্ণনা আর উপায় দেয় জিনিস, আমরা struct নোড বলে তারপর ভিতরে, এবং তারপর খুব শেষ লাইন এ আমরা বলতে, ঠিক আছে, সি, উপায় দ্বারা, শুধু এই গোটা অভিশাপ কল জিনিস একটি নোড এবং বন্ধ পুরাপুরি শব্দ struct ব্যবহার. সুতরাং এই মাত্র সাজানোর একটি অন্বিত হয় শেষ পর্যন্ত আমাদের তৈরি করতে দেয় যে কৌতুক ঠিক এই মত কিছু. আমরা এখন অনুমান যদি আমরা করতে পারেন, তাই সি এই জিনিস বাস্তবায়ন, কিভাবে আসলে আমরা কি এই ঘোরা শুরু? ওয়েল, আসলে, আমরা যা করতে হবে সব হয় ডান এবং মাত্র বাম থেকে বারবার ধরনের নোড সন্নিবেশ বা নোড মুছে অথবা আমরা চাই যেখানে জিনিষ জন্য অনুসন্ধান, কিন্তু এই কাজ করতে, আমি কি এগিয়ে যান এবং করতে দিন জিনিষ একটু বেশি বাস্তব এই কারণ এখন পর্যন্ত সুপার নিম্নস্তরের হয়েছে. কেউ আক্ষরিক প্রথম হতে চান? ঠিক আছে. চলো. তোমার নাম কি? ডেভিড: ডেভিড. DAVID Malan: ডেভিড. দেখা হওয়ায় খুশী হলাম. আমিও. ঠিক আছে. আর আমরা একটি সংখ্যা 9 প্রয়োজন. হিসাবে ভাল না প্রথম হিসাবে, সম্ভবত. ঠিক আছে, সংখ্যা 9. একটি সংখ্যা 17, দয়া করে. আমাকে একটু অধিকতর ফিরে যাওয়া যাক. সংখ্যা 22, অনুগ্রহ করে, এবং কিভাবে অধিকতর সম্পর্কে আমি কোনো হাত দেখতে পারেন যদি সব আলো বা কোনো সাথে. কেউ ঠিক আছে স্বেচ্ছাপূর্বক হচ্ছে. আপনি চিন্তা করতে চান না? আপনার হস্ত জোরপূর্বক আপ যাচ্ছে. 17 ঠিক আছে. 22. 26 নিচে আসছে. অন্য কেউ চাই forcefully-- উপর আসা. একটি প্রকৃত স্বেচ্ছাসেবক. তাই খুব দ্রুত, তাহলে আপনাকে বলছি ব্যবস্থা করতে পারে নিজেদের ঠিক মত পর্দায় নোড. তোমাকে ধন্যবাদ. আর আপনি 26 হবেন. ঠিক আছে এবং দ্রুত প্রচলন. তাই আমি ডেভিড আছি এবং আপনার কাছে আছে? ডেভিড: ডেভিড. DAVID Malan: আর তুমি? জেক: জেক. Sue: আদালতে অভিযুক্ত করা. ALEX: অ্যালেক্স. রাফায়েল: রাফায়েল. টেলর টেলর. DAVID Malan: টেলর. চমৎকার. সুতরাং এই আমাদের স্বেচ্ছাসেবকদের হয় জন্য আজ এবং এগিয়ে যান এবং, যে ভাবে একটু নামান এবং শুধু এগিয়ে যান এবং রাখা আপনি বা আপনার যেমন আপনার জোত নম্বর প্রথম লক্ষণ এবং আপনার বাম হাত ব্যবহার করে, এগিয়ে যান এবং শুধু বাস্তবায়ন তিরগুলো, শুধু আপনার বাম হাত আক্ষরিক অর্থ হল, যাতে আপনি নির্দেশ করা উচিত যাই হোক না কেন এ ইশারা , এবং নিজেকে যাতে কিছু রুম দিতে আমরা দৃশ্যত আসলে আপনার অস্ত্র দেখতে পারেন প্রতি নির্দেশ, এবং আপনি শুধু নির্দেশ করতে পারেন সাজান ছুতোয় এ জরিমানা. তাই আমরা এখানে, এক একটি লিঙ্ক তালিকা আছে দুই, তিন, চার, পাঁচ নোড প্রাথমিকভাবে, এবং আমরা এই বিশেষ আছে বিজ্ঞপ্তি কে শুরুতে পয়েন্টার কী আমরা ট্র্যাক রাখা আছে, কারণ পুরো দৈর্ঘ্যের তালিকার একরকম. তারা বাকি করছি যদিও এই ছেলেরা ডানে, ফিরে মেমরি ব্যাক, তারা আসলে কোন জায়গায় হতে পারে কম্পিউটার এর মেমরি. তাই এইসব বলছি হতে পারে মঞ্চে কোথাও স্থায়ী এবং যে পর্যন্ত না তারা করছি, সূক্ষ্ম আসলে একে অপরের দিকে নির্দেশ কিন্তু জিনিষ রাখতে পরিষ্কার এবং সহজ, আমরা করব শুধু তাদের আঁকা মত ডান থেকে বাম এই, কিন্তু ব্যাপক ফাঁক আছে হতে পারে ঐ নোডের মধ্যে এ. এখন, আমি আসলে কিছু সন্নিবেশ করতে চান তাহলে নতুন মূল্য, আসুন এগিয়ে যান এবং এই কাজ করা যাক. আমরা এখন একটি সুযোগ আছে অন্য নোড নিন. এর 55 mallocing সাথে চলতে শুরু করা যাক বলুন. কেউ যদি malloc হচ্ছে কিছু মনে করবে? ঠিক আছে, চলো. তোমার নাম কি? রেনবো: রেনবো. DAVID Malan: রেনবো? ঠিক আছে. Malloc রেনবো. চলো. তাই এখন আমরা নিজেদেরকে জিজ্ঞাসা আছে algorithmically, আমরা 55 লাগাতে পারেন যেখানে. তাই আমাদের সব জানি, একথাও ঠিক যে, যেখানে তিনি সম্ভবত আমরা চেষ্টা করছি জন্যে এই সাজানো রাখা এবং আপনাকে বলছি এক গ্রহণ করতে পারে যদি একধাপ পিছনে তাই আমরা খসা না পর্যায়, যে মহান হতে হবে. তাই আসলে, রেনবো, আমার সাথে এখানে ওভার শুরু, কারণ আমরা এখন যা করতে পারেন হিসাবে কম্পিউটার শুধুমাত্র একটি সময়ে এক পরিবর্তনশীল দেখতে. এই প্রথম নোডের হয় তাহলে তাই. তিনি একটি নোড না লক্ষ্য করুন তিনি শুধু একটি পয়েন্টার তিনি হতে টানা যে কেন একটি পয়েন্টার শুধুমাত্র আকার, না যারা পুরো আয়তক্ষেত্র এক. সুতরাং আমরা প্রতিটি পরীক্ষা করতে যাচ্ছেন পুনরাবৃত্তির 9 চেয়ে 55 কম? না. 17 তুলনায় 55 কম? না. 22 এর চেয়ে কম? 26 এর চেয়ে কম? 34 এর চেয়ে কম? আর তাই এখন স্পষ্টত রেনবো শেষে জন্যে. সুতরাং স্পষ্ট হতে পারে, এবং তা করতে আপনার নাম, টেলর ছিলেন? টেলর টেলর. DAVID Malan: টেলর এর মধ্যে সেরকম বাম হাত এবং এখানে রামধনু এর হাত, যার হাতে কি এ নির্দেশ প্রয়োজন এই তালিকার মধ্যে 55 সন্নিবেশ করাতে? আমাদেরকে কি করতে হবে? হ্যা? শ্রোতা: টেলর এর হাত বাম নির্দেশ প্রয়োজন. DAVID Malan: ঠিক. সুতরাং একটি নোডের মধ্যে ঢোকাতে তালিকার শেষে মধ্যে বেশ সহজ, কারণ টেলর শুধু মাঠে পরিবর্তে, নির্দেশ আছে অথবা আমরা, নাল ডাকবো নাল অনুপস্থিতিতে সাজানোর একটি পয়েন্টার বা বিশেষ শূন্য পয়েন্টার, আপনি আছেন আপনার বাম সাথে নির্দেশ করে যাচ্ছে হাত রেনবো এবং তারপর রেনবো এ, যেখানে আপনার বাম উচিত হাত সম্ভবত নির্দেশ? নিচে. তার হাত সাজান যদি এটা ভালো নয় এখানে অথবা সাজান কোন বন্ধ ইশারা কোন দিকে. যে বিবেচিত হবে একটি আবর্জনা মান, কিন্তু সে স্থানটিকে কিছু পরিচিত মান, আমরা করব শূন্য বা নাল কল, এটা ঠিক আছে আমরা এই একটি শব্দ আছে, কারণ এবং আমরা এটা তালিকায় এখন সম্পূর্ণ জানি. তাই কি অন্য এর অপেক্ষাকৃত সহজ ক্ষেত্রে? আমরা 5 malloc পারে? চলো. তোমার নাম কি? Tiffany: কাম. DAVID Malan: আমি দুঃখিত? Tiffany: কাম. DAVID Malan: কাম. ঠিক আছে. Tiffany malloced হয়েছে মূল্য 5. চলো. এই এক, অত্যন্ত তুলনামূলকভাবে সহজ কিন্তু এর এখন অপারেশন আদেশ বিবেচনা করা যাক. এটা বেশ সহজ ছিল শেষে টেলর. সংখ্যা 5, অবশ্যই কম 9 হয় এবং তাই আমরা কাম আছে, ডেভিড আছে এবং আপনার নাম কি ছিল? জেক: জেক. DAVID Malan: জেক. Tiffany, জেক, এবং ডেভিড. যাঁর হাতে প্রথম আপডেট করা উচিত? আপনি কি এখানে কাজ করতে চান না? দুয়েক সম্ভাব্য উপায় আছে, কিন্তু একটি অথবা আরও বেশি ভুল পথে পা বাড়ানো রয়েছে. শ্রোতা: একেবারে বামের দিয়ে শুরু করুন. DAVID Malan: একেবারে বামের দিয়ে শুরু করুন. অতঃপর এখানে একেবারে বামের কী? শ্রোতা: প্রথম. ডেভিড MALAN: ঠিক আছে. সুতরাং প্রথম দিয়ে শুরু এবং আপনি যেখানে কাজ ডেভিড এর হাত হতে আপডেট করতে চান? শ্রোতা: 5 দিকে. ডেভিড MALAN: ঠিক আছে. এ পাঁচটি তাই দায়ূদ পয়েন্ট অথবা Tiffany এখানে, এবং এখন? শ্রোতা: Tiffany 9 স্থানটিকে? DAVID Malan: পারফেক্ট, Binky এর ছাড়া মাথা ঠিক ধরনের অধিকার, খসে পড়ল? সাথে কি ভুল কারণ আক্ষরিক এই ছবি? শ্রোতা: কিছুই প্রতি নির্দেশ করা হয়. DAVID Malan: কিছুই হয় এখন জেক প্রতি নির্দেশ. আমরা আক্ষরিক 9 এতিম করেছি এবং 17, এবং আমরা আক্ষরিক করেছি , এই মেমরি সব ফাঁস করে কারণ প্রথম দায়ূদের হাতে আপডেট, যে এটি সঠিকভাবে হিসাবে যতটা সূক্ষ্ম এখন Tiffany এ ইশারা, কিন্তু কেউ ছিল জেক এ নির্দেশ দূরদর্শিতা, তারপর আমরা হারিয়ে ফেলেছি যে তালিকায় সম্পূর্ণতা. সুতরাং আসুন পূর্বাবস্থা করা যাক. সুতরাং যে একটা ভাল জিনিস ছিল ট্রিপ কিন্তু এর এখন সঠিক দিন. আমরা কি প্রথম পরিবর্তে কি করা উচিত? হ্যা? শ্রোতা: Tiffany 9 এ নির্দেশ করা উচিত? DAVID Malan: আমি পারবো না আপনি যে বন্ধ পেতে. 9 এ কে নির্দেশ করা উচিত? শ্রোতা: কাম. DAVID Malan: ঠিক আছে. তাই Tiffany 9 প্রথমে নির্দেশ করা উচিত. তাই কাম নিতে হবে একটি অভিন্ন মান দায়ূদকে, যা মনে হয় একটি মুহূর্ত জন্য অপ্রয়োজনীয়, কিন্তু যে দ্বিতীয়, কারণ এখন সূক্ষ্ম ধাপে আমরা দাউদের হাত আপডেট করতে পারেন Tiffany এ, এবং তারপর যদি নির্দেশ আমরা শুধু এই ধরনের জিনিস পরিষ্কার আপ এই বসন্ত মত ধরনের হিসাবে যদিও, এখন যে একটি সঠিক সন্নিবেশ আছে. এত চমৎকার. তাই এখন আমরা প্রায় হয়ে এসেছে. এর এক চূড়ান্ত সন্নিবেশ করা যাক মূল্য 20 মত মান. আমরা এক চূড়ান্ত স্বেচ্ছাসেবক malloc পারে তাহলে? চলো. তাই এই এক একটি সামান্য আরো চতুর. কিন্তু সত্যিই, আমরা কোড আছেন লেখা, মৌখিকভাবে যদ্যপি শুধু একটি গুচ্ছ থাকার মত হয় এখন অবস্থা, ডান যদি? আমরা একটি শর্ত ছিল এটি জন্যে যদি চেক শেষ, হয়তো শুরুতে. আমরা লুপ কিছু প্রয়োজন মাঝখানে স্পট খুঁজে. সুতরাং আসুন আপনার নাম কি দিয়ে যে কি? ERIC: এরিক. DAVID Malan: এরিক? এরিক. দেখা হওয়ায় খুশী হলাম. তাই আমরা 20 আছে. পাঁচটি কম? না. নয়টি কম? না. 17 এর চেয়ে কম? না. ঠিক আছে. তিনি এখানে জন্যে এবং আপনার নাম আবার হয়? Sue: আদালতে অভিযুক্ত করা. DAVID Malan: আদালতে অভিযুক্ত করা. ALEX: অ্যালেক্স. DAVID Malan: আবেদন, আলেক্স, এবং? ERIC: এরিক. DAVID Malan: এরিক. তিনি, যাঁর হাতে প্রথম আপডেট পেতে চান? শ্রোতা: এরিক. ঠিক আছে. সুতরাং এরিকের যেখানে এ নির্দেশ করা উচিত? 22 এ. ভাল. আর এখন কি করব? আদালতে অভিযুক্ত তারপর এরিক এ নির্দেশ করতে পারেন এবং এখন, যদি আপনি না ঠিক যা সূক্ষ্ম কিছু রুম, করতে দৃশ্যত, এখন আমরা সন্নিবেশ করেছেন. তাই আসুন এখন একটি প্রশ্ন বিবেচনা করা যাক কিন্তু আমাদের স্বেচ্ছাসেবকদের জন্য আপনাকে অনেক ধন্যবাদ. অনেক ভালো করেছ. যদি আপনি চান আপনি, যারা রাখতে পারেন. আর আমরা একটি সুদৃশ্য উপহারের অংশ যদি আছে আপনি প্রতিটি একটি চাপ বল নিতে চাই. আমাকে শুধু এই ডাউন পাস করা যাক. তাই এই নিয়ে Takeaway কি? এই আশ্চর্যজনক মনে করা হয় আমরা এখন আছে সাপেক্ষে একটি একটি বিকল্প চালু তাই সীমাবদ্ধ নয় যে অ্যারে কিছু নির্দিষ্ট আকার একটি অ্যারের. তারা পরিবর্তনশীল অবধি প্রসারণ করা সম্ভব. কিন্তু আমরা অনেক ভালো সপ্তাহের মধ্যে দেখা করেছি অতীতে, আমরা বিনামূল্যে জন্য কিছু পাবেন না ভালো নিশ্চয় এখানে একটি ট্রেড বন্ধ আছে. একটি লিঙ্ক একটি গোলমালে সঙ্গে তাই তালিকায়, এই গতিশীলতা হয়? এই ক্ষমতা, অকপটে এবং হত্তয়া যাও আমরা মুছে ফেলতে কাজ করতে পারে হিসাবে প্রয়োজন এবং আমরা সঙ্কুচিত পারে. আমরা কি মূল্য পরিশোধ করা হয়? সব দুইবার প্রথম অনেক স্থান হিসাবে. আপনি ছবি তাকান, আর আমি পূর্ণসংখ্যার একটি তালিকা সংরক্ষণ. আমি একটি তালিকা সংরক্ষণ করছি পূর্ণসংখ্যার প্লাস পয়েন্টার. তাই আমি স্থানের পরিমাণ দ্বিত্ব করছি. এখন, হয়তো যে যেমন নয় একটি বড় চুক্তি 4 বাইট, 8 বাইট, কিন্তু এটা অবশ্যই যোগ করতে পারে বৃহৎ তথ্য সেটের জন্য আপ. অন্য একটি downside কি? হ্যা? শ্রোতা: আমরা আছে তাদের এক দ্বারা এক, তর্ক. ডেভিড MALAN: হ্যাঁ. আমরা তাদের এক দ্বারা এক, তর্ক আছে. আপনি এই সুপার আপ দিয়েছেন কি, জানি বর্গাকার বন্ধনী সুবিধাজনক বৈশিষ্ট্য স্বরলিপি, আরো সঠিকভাবে রেণ্ডম এক্সেস হিসাবে পরিচিত, আমরা শুধু তিড়িং লাফ পারেন যেখানে একজন ব্যক্তি উপাদানে কিন্তু এখন আমি এখনও ছিল এখানে আমার স্বেচ্ছাসেবীদের আমি খুঁজে পেতে চেয়েছিলেন সংখ্যা 22, আমি ঠিক করতে পারেন না বন্ধনী কিছু কিছু ঝাঁপ. আমি অনেক, তালিকা ধরে পর্যবেক্ষণ আছে সুসংগত আমাদের অনুসন্ধানের উদাহরণ মত, সংখ্যা 22 এটি. তাই আমরা সেখানে একটি দাম দেওয়া হয়েছে বলে মনে হচ্ছে. কিন্তু আমরা তবু পারেন অন্যান্য সমস্যার সমাধান. আসলে, আমার পরিচয় করিয়ে দেওয়া ভিজ্যুয়াল মাত্র কয়েক. আপনি নিচে আপনি করে থাকেন তাহলে তাই মাথের এর ডাইনিং হলের সম্প্রতি, আপনি যে প্রত্যাহার করব তাদের এই মত ট্রে এর stacks, আমরা আপনার কাছ থেকে এই ধার বর্গ আগে Annenberg এ. সুতরাং ট্রে এই স্ট্যাকের, যদিও, প্রতিনিধি আসলে একটি কম্পিউটার বিজ্ঞান তথ্য কাঠামো. একটি ডাটা স্ট্রাকচার নেই কম্পিউটার বিজ্ঞান মধ্যে একটি স্ট্যাক হিসাবে পরিচিত যা খুব সুন্দরভাবে ঠিক এই চাক্ষুষ নিজেকে ধার দেয়. এই ট্রে প্রতিটি একটি নয় যদি তাই ট্রে কিন্তু একটি সংখ্যা মত এবং আমি চেয়েছি নম্বর সংরক্ষণ করতে, আমি এখানে এক দমন করা যেতে পারে, এবং আমি এখানে অন্য দমন করা যেতে পারে এবং সংখ্যার stacking অবিরত এক অন্য, এবং কি উপরে এই সম্পর্কে সম্ভাব্য সহায়ক কি সংশ্লেষ যে হয় এই তথ্য কাঠামো? আমি উঠিয়ে ফেলা যাবে, যা সংখ্যা প্রথম সবচেয়ে সুবিধামত? সেখানে অতি সম্প্রতি এক করা. তাই এই আমরা কল করবে কি কম্পিউটার বিজ্ঞান একটি LIFO ডাটা স্ট্রাকচার. , প্রথম আউট গত. আর আমরা দীর্ঘ কেন আগে দেখতে পাবেন যে, এখন দরকারী কিন্তু হতে পারে শুধু সম্পত্তি বিবেচনা. আপনি যদি মনে করেন এবং এটা কোন ধরনের বোকামি ডাইনিং হল এটা কিভাবে সম্পর্কে. প্রতিটি সময় তারা পরিষ্কার ট্রে এবং উপরে নবীনতম বেশী করা, আপনি পূর্বে পরিষ্কার হতে পারে কিন্তু শেষ পর্যন্ত খুব ময়লা এবং ধূলিমলিন খুব নীচে ট্রে আপনি যদি না আসলে যে নীচে পেতে স্ট্যাক, আপনাকে কারণ শুধু নতুন বসিয়ে রাখা এবং এটি উপরে পরিষ্কার বেশী. একই জিনিস ঘটতে পারে একটি সুপারমার্কেট মধ্যে খুব. আপনি একটি প্রদর্শনের ক্ষেত্রে থাকে দুধ এবং প্রত্যেক সময় জীবনবৃত্তান্ত এর অথবা অধিক দুধ কেবা পায়, আপনি শুধু milks ঠেলা আপনি ইতিমধ্যে ফিরে আছে এবং আপনি, সামনে নতুন করা আপনি কিছু প্রশংসনীয় কদর্য আছে চলুন ডাটা স্ট্রাকচার শেষে দুধ, এটা নীচে সবসময় কারণ বা equivalently এটা পিছে সর্বদাই. কিন্তু আমার মনে হয় অন্য উপায় আছে তথ্য ও উদাহরণস্বরূপ, এই আবরণের আপ. আপনি যাদের মধ্যে একজন হন তাহলে যারা লেগেছে অ্যাপল স্টোর বাইরে রেখায় আপ যখন একটি নতুন পণ্য আসে আউট, আপনি সম্ভবত করছি একটি স্ট্যাক তথ্য ব্যবহার করে না কাঠামো আপনাকে কারণ বাকিদের কে স্বভাববহিভুত হবে আবরণের আপ কিছু নতুন খেলনা ক্রয়. বরং, আপনি সম্ভবত ব্যবহার করছি ডাটা স্ট্রাকচার কি ধরনের সিস্টেমের বা কি ধরনের প্রকৃত বিশ্বে? আশা রাখি, এটা একটা লাইন, বা আরো সঠিকভাবে বা আরো ব্রিটিশ-মত, একটি কিউ. আর এটি একটি কিউ একটি সক্রিয় আউট কম্পিউটার বিজ্ঞান মধ্যে ডাটা স্ট্রাকচার, কিন্তু একটি সারিতে একটি খুব আছে বিভিন্ন সম্পত্তি. এটা LIFO না. , প্রথম আউট গত. ঈশ্বরের নিষেধ. এটা পরিবর্তে FIFO এর. প্রথমে ঢুকবে প্রথমে বেরুবে. এবং যে একটা ভাল জিনিস সততা 'অনুরোধে জন্য অবশ্যই যখন আপনি আবরণের করছি সকালে ঘুম থেকে সুপার তাড়াতাড়ি. আপনি প্রথম সেখানে পেতে যদি প্রথম আউট হিসাবে ভাল পেতে চান. আর তাই এই তথ্য সব কাঠামো, queues এবং stacks এবং অন্যদের মধ্যে bunches, আপনি দেখা যাচ্ছে এই হিসাবে শুধু একটি অ্যারের মনে করতে পারেন. এই হয়তো, একটি অ্যারে একটি নির্দিষ্ট মাপ 4, কিন্তু এটা চাই আমরা শুধু পাইল পারে তাহলে ধরনের সুন্দর হতে ট্রে প্রায় অসীম লম্বা আমরা যদি যে অনেক ট্রে বা নম্বর আছে. তাই হয়তো আমরা করতে চান এখানে একটি লিঙ্ক তালিকা ব্যবহার, কিন্তু ট্রেড বন্ধ হতে যাচ্ছে সম্ভাব্য আমরা আরো মেমরি প্রয়োজন যে, একটু বেশি সময় লাগে, কিন্তু আমরা স্ট্যাকের উচ্চতা সীমাবদ্ধ না, অনেক মাথের এর প্রদর্শনের ক্ষেত্রে মত স্ট্যাকের আকার সীমাবদ্ধ হতে পারে, এবং তাই এই নকশা সিদ্ধান্ত বা হয় শেষ পর্যন্ত আমাদের জন্য উপলব্ধ বিকল্প. এই তথ্য দিয়ে তাই কাঠামো, আমরা শুরু করেছি সম্ভাব্য নতুন উপরের কোট দেখা কি উপর পূর্বে সুপার ফাস্ট ছিল এবং আমরা ছেড়ে দেব যেখানে বন্ধ আজ এবং যেখানে আমরা পেতে আশা করি পাবেন বুধবার, আমরা করব একটি তথ্য তাকান শুরু আমাদের অনুসন্ধান করতে দেয় যে কাঠামো পাসওয়ার্ড ভুলে গেছেন? শেষ সময়ে তথ্য মাধ্যমে আবার. আর আমরা শুন্য সপ্তাহ মধ্যে প্রত্যাহার, যে দেখেছি বাইনারি অনুসন্ধান বা ডিভাইড সঙ্গে এবং এক এবং বশীভূত. এটা এখনো ফিরে এবং ভাল আসছে এই বুধবার পবিত্র ঈপ্সিত বস্তু সঙ্গে আসা পর্যন্ত হতে হবে সত্যিই যে চালায় ডাটা স্ট্রাকচার বা তাত্ত্বিক মধ্যে ধ্রুব সময়, যদ্দ্বারা এটি কতগুলি কোন ব্যাপার না লক্ষ লক্ষ বা জিনিষ বিলিয়ান আমরা তথ্য কাঠামো আছে, এটা করবে না আমাদের ধ্রুবক সময় লাগবে, হয়তো এক ধাপ বা দুই ধাপ বা 10 ধাপ, কিন্তু ধাপের ধ্রুব সংখ্যা যে তথ্য কাঠামো মাধ্যমে আপনাকে. যে প্রকৃতপক্ষে পবিত্র ঈপ্সিত বস্তু হতে হবে কিন্তু বুধবার যে আরও. তারপর আগে দেখুন. [সঙ্গীত বাজাচ্ছি]